当前位置:编程学习 > 汇编语言 >>

请教高手一下,汇编这个延时程序是怎么延时的,那个延时时间是怎么算出来的。单片机是80C51

晶振频率是12MHZ delay:mov r7,#250 ;1us mov r6,#250 ;1us djnz r6,$ ;250*2 djna r7,$ ;(1+250*2+2)*250+1 ret
补充:上面那个djna改成dinz,我抄老师的程序是这样的,没听懂。。。。。
答案:有几个地方有错误,给你改正了,见下面的程序。
delay:mov r7,#250  ;1us
delay1: mov r6,#250  ;1us
djnz  r6,$  ;250*2(这条指令两个机器周期,共执行250次,所以花250*2=500us)
djnz r7,delay1  ;(1+250*2+2)*250+1(外层的这个循环,包括内层的250*2,再加前后两条指令的3个机器周期,共503近似500,500*250=125000us=125ms)
ret
所以整个循环程序延时了125ms
其他:你在KIEL你里面仿真啊!你看看执行的流程就懂啦! 参考一下:
http://hi.zhaoxi.net/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/37d8c6fb9b91e1849f51462f.html

上一个:求高手!!!汇编语言问题
下一个:汇编语言软件

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,