简单的跑马灯程序+中断处理

l 利用 P3.2 的外部中断触发功能,通过按键产生外部中断 0

l 主程序是一个普通跑马灯程序

l 主程序执行时,按 P3.2 键,产生外部中断 0 ,进入中断处理程序

l 要求记忆按键次数,并在指示灯上进行显示,当第 N 次按键时,显示灯的第 1-N 个灯被点亮,并闪烁 N 次。

l 当显示灯闪烁时,屏蔽所有其它中断,中断返回后,跑马灯程序返回上次中断的位置继续运行

l 当所有 8 个指示灯全部点亮后,计数清零,一切从头再来

org 0000h ajmp main org 0003h ajmp inser org 0030h main: mov r0 ,#0h ; mov r1 ,#0ffh ; mov r2 ,#0h mov r4 ,#0xfe setb ex0 clr it0 setb ea mov p1,#0ffh loop1: mov p1,r4 lcall delay mov a,r4 rl a mov r4 ,a ajmp loop1 inser: cjne r0,#08h,next mov r0 ,#0h mov p0 ,#0h mov r1,#0ffh next: push 05 push 06 push 07 inc r0 mov a,r0 mov r2 ,a mov a ,r1 rl a dec a loop2: mov p1,#0ffh; lcall delay mov p1,a lcall delay djnz r2,loop2 mov p1,#0ffh; mov r1 ,a pop 07 pop 06 pop 05 reti delay: mov r5,#20 d1: mov r6,#40 d2: mov r7,#248 djnz r7,$ djnz r6,d2 djnz r5,d1 ret end  

 

 

 

你可能感兴趣的:(汇编与单片机)