版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 现 8 个 L ED 流 水 灯 汇编语言程 精品文档 START: MOV ACC,#0FEH ;ACC 中先装入 LED1 亮的数据(二进制的 11111110 ) MOV P1,ACC ; 将 ACC 的数据送 P1 口 MOV R0,#7 ;将数据再移动 7 次就完成一个 8位流水过程 LOOP: RL A ;将 ACC 中的数据左移一位 MOV P1,A ;把ACC 移动过的数据送 p1口显示 ACALL DELAY ;调用延时子程序 DJNZ R0,LOOP ;没有移动够 7 次继续移动 AJMP START ;移动完 7 次后跳到开始重来,以达到循环流动效果 延时子程序 DE
2、LAY: MOV R0,#255 ; 延时一段时间 D1: MOV R1,#255 DJNZ R1,$ DJNZ R0,D1 RET ;子程序返回 END ; 程序结束 收集于网络,如有侵权请联系管理员删除 精品文档 START 处再循环 START: CLR P1.0 ACALL DELAY SETB P1.0 CLR P1.1 ACALL DELAY SETB P1.1 CLR P1.2 ACALL DELAY SETB P1.2 CLR P1.3 ACALL DELAY SETB P1.3 CLR P1.4 ACALL DELAY SETB P1.4 CLR P1.5 ACALL DEL
3、AY SETB P1.5 CLR P1.6 ACALL DELAY SETB P1.6 CLR P1.7 ACALL DELAY SETB P1.7 ACALL DELAY AJMP START ; 延时子程序 DELAY: MOV R0,#255 D1: MOV R1,#255 DJNZ R1,$ DJNZ RET END R0,D1 ;P1.0 输出低电平 , 使 LED1 点亮 ;调用延时子程序 ;P1.0 输出高电平 , 使 LED1 熄灭 ;P1.1 输出低电平 ,使 LED2 点亮 ;调用延时子程序 ;P1.1 输出高电平 , 使 LED2 熄灭 ;P1.2 输出低电平 ,使 LE
4、D3 点亮 ;调用延时子程序 ;P1.2 输出高电平 , 使 LED3 熄灭 ;P1.3 输出低电平 ,使 LED4 点亮 ;调用延时子程序 ;P1.3 输出高电平 , 使 LED4 熄灭 ;P1.4 输出低电平 ,使 LED5 点亮 ;调用延时子程序 ;P1.4 输出高电平 , 使 LED5 熄灭 ;P1.5 输出低电平 ,使 LED6 点亮 ;调用延时子程序 ;P1.5 输出高电平 , 使 LED6 熄灭 ;P1.6 输出低电平 ,使 LED7 点亮 ;调用延时子程序 ;P1.6 输出高电平 , 使 LED7 熄灭 ;P1.7 输出低电平 ,使 LED8 点亮 ;调用延时子程序 ;P1.7
5、 输出高电平 , 使 LED8 熄灭 ;调用延时子程序 ;8 个 LED 流了一遍后返回到标号 ;延时一段时间 ;子程序返回 ;程序结束 收集于网络,如有侵权请联系管理员删除 精品文档 ORG 0000H START: MOV SP,#60H ;上电复位,程序从 MOV DPTR,#LIU_TAB LOOP: CLR A MOVC A,A+DPTR CJNE A,#0FFH,SHOW AJMP START SHOW: MOV P1,A ACALL DELAY INC DPTR AJMP LOOP 0000H 开始执行 ;堆栈初始化为 60H ; 流水花样表首地址送 DPTR ;检查流水结束标志
6、 ;所有花样流完 ,则从头开始重复流 ;将数据送到 P1 口 DELAY: MOV R0,#255 D1: MOV R1,#255 DJNZ R1,$ DJNZ R0,D1 RET 延时子程序 ;延时一段时间 ;子程序返回 ; 下面是流水花样数据表 ;二进制表示的流水花样数据 LIU_TAB: DB 01111111B DB 10111111B DB 11011111B DB 11101111B DB 11110111B DB 11111011B DB 11111101B DB 11111110B DB 11111110B DB 11111101B DB 11111011B DB 111101
7、11B DB 11101111B DB 11011111B DB 10111111B DB 01111111B DB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ; 十六进制表示 DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH DB 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EH DB 7FH,3FH,1FH,0FH,07H,03H,01H,00H DB 0FFH; 流水花样结束标志 0FFH END ;程序结束 收集于网络,如有侵权请联系管理员删除 精品文档 延时子程序, 12M 晶振延时约 2
8、50 毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET org 00h ;程序上电从 00h 开始 ajmp main ;跳转到主程序 org 0030h ;主程序起始地址 main: mov a,#0feh ;给 A 赋值成 11111110 loop: mov p1,a ;将 A 送到 P1 口 ,发光二极管低电平点亮 lcall delay ; 调用延时子程序 rl a ; 累加器 A 循环左移一位 ajmp loop ; 重新送 P1 显示
9、delay: mov r3,#20 ;最外层循环二十次 d1: mov r4,#80 ;次外层循环八十次 d2: mov r5,#250 ;最内层循环 250 次 djnz r5,$ ;总共延时 2us*250*80*20=0.8S djnz r4,d2 收集于网络,如有侵权请联系管理员删除 精品文档 djnz r3,d1 ret end 如何精确计算延时子程序的执行时间? 汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写 一些对时序要求严格的外围器件驱动时由为重要! ;延时子程序, 12M 晶振延时约 253 毫秒 DELAY: MOV R4,#2 执行 1个机器周期,耗时 1 微秒 L3: MOV R2 ,#250 执行 1个机器周期,耗时 1 微秒 L1: MOV R3 ,#251 执行 1个机器周期,耗时 1 微秒 L2: DJNZ R3 ,L2 执行 2个机器周期,反复执行 251次( 2x251) 502微秒) DJNZ R2 ,L1执行 2个机器周
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度影视联合制作合同标的合作制作流程与责任分配3篇
- 2024版房产遗产继承合同2篇
- 2024年度物业管理委托合同(修订版)3篇
- 通风系统安装劳务合同
- 解除购房合同协议书
- 污水管网运营维护合同
- 2024年度数字化图书馆建设与租赁合同3篇
- 二零二四年度工程咨询服务合同标的为新建办公楼3篇
- 2024年度合作合同合作目标和具体合作内容3篇
- 广州管圆线虫病的临床护理
- 更换排污管道施工方案
- 海绵城市工程质量验收自评报告
- 世界问候日-你的问候温暖世界主题PPT
- 电梯维保方案三篇
- 燃烧与灭火说课课件
- 无痛电子支气管镜的临床应用课件
- 培训基地共建协议书
- 民族工作研讨发言材料
- 急诊科心内科救心圈运用PDCA循环缩短STEMI患者急诊停留时间品管圈成果汇报
- 运用有效的推理形式-三段论
- Java程序设计入门(第2版)PPT全套完整版教学课件
评论
0/150
提交评论