资源描述:
《单片机带应急的交通灯控制实验程序(汇编)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机带应急的交通灯控制实验(汇编)org00hajmpmainorg0003hajmpint_red_weequp1.1yel_weequp1.2gre_weequp1.3red_snequp1.5yel_snequp1.6gre_snequp1.7org0030hmain:movsp,#65hcallinit_intclrred_weclrred_sncalldelay3loop:clrgre_wesetbred_wecalldelay5setbgre_weclryel_wemovr4,#10sight:calld
2、elay_200mscplyel_wedjnzr4,sightsetbyel_wecalldelay_200msclrgre_snsetbred_snclrred_wecalldelay5setbgre_snclryel_snmovr4,#10sight1:calldelay_200mscplyel_sndjnzr4,sight1setbyel_snclrred_snclrred_wecalldelay_200mssjmploop;;;;;;;;;;;;;;;;;;;;;;;;;;;中断服务程序;;;;;;;;;;;;
3、;;;;;;;;;;;;;;;;;;;;;int_:pushpswpush04hsetbgre_snsetbyel_snsetbgre_wesetbyel_weclrred_snclrred_wecalldelay5callinit_intpop04hpoppswreti;;;;;;;;;;;;;;;;;;;;;;;;;;外部中断初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;init_int:setbex0setbit0setbear
4、et;;;;;;;;;;;;;;;;;;;;;;;5秒延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay5:movr4,#5delay5_:calldelay_1sdjnzr4,delay5_ret;;;;;;;;;;;;;;;;;;;;;;;3秒延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay3:movr4,#3delay3_:calldelay_
5、1sdjnzr4,delay3_ret;;;;;;;;;;;;;;;;;;;;;;0.2秒延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_200ms:movr5,#20s:calldelay_10msdjnzr5,sret;;;;;;;;;;;;;;;;非中断精确1MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_1ms:push07hMOVR7,#24
6、9signed:;循环部分4机器周期nopnopdjnzR7,signedpop07hret;返回指令2机器周期;2+249*4+2=1000us可以精确定时1MS,假设外部晶振是12M;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;非中断精确10MS定时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;delay_10ms:push06hmovr6,#9;2个机器周期用2usdelay_10ms_sined:;9次循环共用9(1ms+4us)=9036u
7、sacalldelay_1msdjnzr6,delay_10ms_sinedMOVr6,#240;2个机器中期用2ussigned_10ms:;循环部分4机器周期共240次nopnopdjnzr6,signed_10mspop06hret;返回指令要2us;2us+9036us+240*4us+2us=10ms即可精确定时10ms;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;非中断精确定时1s;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8、;;;;;;;;;;delay_1s:push05hmovr5,#99;两个机器周期2usdelay_1s_signed:;循环指令周期为4us,加上延时10ms;(10ms+4us)*99=990.396msacalldelay_10msdjnzr5,delay_1s_signedmovr5,#9;两个机器周期2ussigned