实现8个LED流水灯汇编语言程

上传人:gbs****77 文档编号:10527411 上传时间:2020-04-12 格式:DOC 页数:5 大小:43KB
返回 下载 相关 举报
实现8个LED流水灯汇编语言程_第1页
第1页 / 共5页
实现8个LED流水灯汇编语言程_第2页
第2页 / 共5页
实现8个LED流水灯汇编语言程_第3页
第3页 / 共5页
点击查看更多>>
资源描述
START:MOV ACC,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110) MOV P1,ACC ;将ACC的数据送P1口 MOV R0,#7 ;将数据再移动7次就完成一个8位流水过程 LOOP: RLA ;将ACC中的数据左移一位MOV P1,A ;把ACC移动过的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZR0,LOOP ;没有移动够7次继续移动 AJMPSTART ;移动完7次后跳到开始重来,以达到循环流动效果;- 延时子程序 -DELAY:MOV R0,#255 ;延时一段时间D1: MOV R1,#255DJNZR1,$DJNZR0,D1RET ;子程序返回END ;程序结束START:CLR P1.0 ;P1.0输出低电平,使LED1点亮ACALL DELAY;调用延时子程序SETBP1.0 ;P1.0输出高电平,使LED1熄灭CLR P1.1 ;P1.1输出低电平,使LED2点亮ACALL DELAY;调用延时子程序SETBP1.1 ;P1.1输出高电平,使LED2熄灭CLR P1.2 ;P1.2输出低电平,使LED3点亮ACALL DELAY;调用延时子程序SETBP1.2 ;P1.2输出高电平,使LED3熄灭CLR P1.3 ;P1.3输出低电平,使LED4点亮ACALL DELAY;调用延时子程序SETBP1.3 ;P1.3输出高电平,使LED4熄灭CLR P1.4 ;P1.4输出低电平,使LED5点亮ACALL DELAY;调用延时子程序SETBP1.4 ;P1.4输出高电平,使LED5熄灭CLR P1.5 ;P1.5输出低电平,使LED6点亮ACALL DELAY;调用延时子程序SETBP1.5 ;P1.5输出高电平,使LED6熄灭CLR P1.6 ;P1.6输出低电平,使LED7点亮ACALL DELAY;调用延时子程序SETBP1.6 ;P1.6输出高电平,使LED7熄灭CLR P1.7 ;P1.7输出低电平,使LED8点亮ACALL DELAY;调用延时子程序SETBP1.7 ;P1.7输出高电平,使LED8熄灭ACALL DELAY;调用延时子程序AJMPSTART;8个LED流了一遍后返回到标号START处再循环;- 延时子程序 -DELAY:MOV R0,#255;延时一段时间D1: MOV R1,#255DJNZR1,$DJNZR0,D1RET ;子程序返回END;程序结束ORG 0000H ;上电复位,程序从0000H开始执行START:MOV SP,#60H ;堆栈初始化为60HMOV DPTR,#LIU_TAB ;流水花样表首地址送DPTRLOOP: CLR AMOVCA,A+DPTRCJNEA,#0FFH,SHOW;检查流水结束标志AJMPSTART ;所有花样流完,则从头开始重复流SHOW: MOV P1,A;将数据送到P1口ACALL DELAYINC DPTRAJMPLOOP;- 延时子程序 -DELAY:MOV R0,#255;延时一段时间D1: MOV R1,#255DJNZR1,$DJNZR0,D1RET ;子程序返回;- 下面是流水花样数据表 -LIU_TAB: DB 01111111B ;二进制表示的流水花样数据DB 10111111BDB 11011111BDB 11101111BDB 11110111BDB 11111011BDB 11111101BDB 11111110BDB 11111110BDB 11111101BDB 11111011BDB 11110111BDB 11101111BDB 11011111BDB 10111111BDB 01111111BDB 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;十六进制表示DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FHDB 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EHDB 7FH,3FH,1FH,0FH,07H,03H,01H,00HDB 0FFH ;流水花样结束标志0FFHEND;程序结束延时子程序,12M晶振延时约250毫秒DELAY:MOV R4,#2L3: MOV R2 ,#250L1: MOV R3 ,#250L2: DJNZ R3 ,L2 DJNZ R2 ,L1DJNZ R4 ,L3 RETorg 00h;程序上电从00h开始ajmpmain;跳转到主程序org0030h;主程序起始地址main:mov a,#0feh;给A赋值成11111110loop:movp1,a;将A送到P1口,发光二极管低电平点亮lcall delay;调用延时子程序rl a;累加器A循环左移一位ajmploop;重新送P1显示delay:mov r3,#20;最外层循环二十次d1:mov r4,#80;次外层循环八十次d2:mov r5,#250;最内层循环250次djnz r5,$;总共延时2us*250*80*20=0.8Sdjnz r4,d2djnz r3,d1retend如何精确计算延时子程序的执行时间?汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写一些对时序要求严格的外围器件驱动时由为重要!;延时子程序,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个机器周期,反复执行250次(15022)*250126250微秒)DJNZ R4 ,L3执行2个机器周期,反复执行2次 (1+1+502+126250+2)*2253512微秒)RETdelay 加上第一条总共延时1+253512=253513微秒
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!