您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 单片机跑马灯汇编程序与仿真
51单片机P1口跑马灯的汇编语言编程和protues仿真;跑马灯程序1;用软件技术器实现1秒间隔LED循环点亮;三层循环计数实现1秒延时,250*250*8=0.5秒;由于软件延时需要计算代码执行的时间,所以近似1秒ORG0000HLJMPMAINORG0030HMAIN:MOVP1,#0FFHMOVA,#0FEHLOOP:MOVP1,ALCALLTIMEERRLASJMPLOOPTIMEER:MOVR5,#08HLOOP1:MOVR6,#0FAHLOOP2:MOVR7,#0FAHLOOP3:DJNZR7,LOOP3DJNZR6,LOOP2DJNZR5,LOOP1RETEND;跑马灯程序2;定时/计数器1控制1秒间隔LED循环点亮ORG0000HLJMPMAINORG001BHLJMPT1_INTORG0100HMAIN:MOVR0,#20;软计数器MOVTMOD,#10H;定时器1方式1MOVP1,#0FFH;熄灭所有LEDMOVA,#0FEH;点亮第一个LEDMOVTH1,#3CHMOVTL1,#0B0H;赋初值SETBET1SETBEA;开中断SETBTR1;启动定时器SJMP$;等待中断T1_INT:MOVTH1,#3CHMOVTL1,#0B0H;赋初值DECR0;软计数CJNER0,#00H,LPRLA;灯移位MOVP1,A;灯改变MOVR0,#20;软计数器初值LP:RETI;跑马灯程序3;定时/计数器1控制1秒间隔LED循环点亮;外部中断1控制按键按下跑马灯启动或者停止ORG0000HLJMPMAINORG0013HLJMPINT1_INT;外部中断服务程序,按键触发ORG001BHLJMPT1_INT;定时器中断,1秒中断一次ORG0100HMAIN:MOVR0,#20;软计数器计数次数MOVTMOD,#10H;定时器1方式1MOVP1,#0FFH;熄灭所有LEDMOVA,#0FEH;点亮第一个LEDMOVTH1,#3CHMOVTL1,#0B0H;定时器赋初值SETBIT1;外中断1采用下降沿触发SETBEX1;允许外部中断1SETBET1;允许定时器中断SETBEA;开中断SETBTR1;启动定时器1SJMP$;等待中断T1_INT:MOVTH1,#3CHMOVTL1,#0B0H;定时器赋初值DECR0;软计数CJNER0,#00H,LP;判断计数次数是否达到,是则跳转RLA;灯移位MOVP1,A;灯改变MOVR0,#20;软计数器初值LP:RETIINT1_INT:MOVA,#0FFH;按键按下,LED熄灭MOVP1,A;灯改变CPLTR1;定时器改变开关状态MOVA,#0FEH;点亮第一个LEDRETI;中断返回Protues仿真电路图欢迎访问艾依河里的鱼的博客
本文标题:单片机跑马灯汇编程序与仿真
链接地址:https://www.777doc.com/doc-3212479 .html