几十秒对于单片机来说是很长很长的时间了,单片机几十秒的时间什么事都不能做,只在跑这延时程序,那是什么概念,用中断的话,单片机正常运行其他程序,只是时间到了才过来处理延时以后的程序,效率不知道高了多少
一句话,单片机跑延时程序的这段时间,可以看做是处于死机状态,看你还敢不敢让单片机死机几十秒
实现的话,就是中断里计数,比如100ms中断一次,那么10次就是1秒,100次就是10秒,如果需要10秒,时间到了就置个标志,到主程序来判断这个标志,即可
这个跟你说吧,你想延时几十秒和你想延时几十毫秒是一个样子,只要你继续嵌套就可以。比如,你编写了100MS的,然后继续嵌套就会有1s的10s的。
但是 单片机是单线处理,一段时间只进行一种行为,比如说延时就不会做其他的,明白?
所以为了效率提高,中断计时相当于我们又找了个地方作延时程序,当延时完了后执行中断处理。而当他在一个地方延时的时候,我们可以去让他做其他事情而不用管他,明白?
delay proc
mov a,0ffh
mov delay_counter_1,a
mov delay_counter_2,a
wait:
sdz delay_counter_1
jmp wait
sdz delay_counter_2
jmp wait
ret
delay endp
1楼正解