发觉单片机必用的``延时程序``详细```

本文详细探讨了如何使用汇编语言在MCS-51单片机上编写延时程序,通过三层循环实现10ms的延时,并分析了每条指令的执行时间和耗时。此外,还介绍了软件延时的方法,包括使用NOP指令的短暂延时函数,以及考虑中断服务程序中额外周期的影响。文章强调了定时器/计数器在精确延时中的重要性,并提供了不同延时需求的解决方案。
摘要由CSDN通过智能技术生成

void delay0.2s(void)

 unsigned char i,j,k; 
 for(i=20;i>0;i--) 
 for(j=20;j>0;j--) 
 for(k=248;k>0;k--)
}
;


((K*2)+3)*2+3)*I+5

 

我们用汇编语言写单片机延时10ms的程序(用的是12MHz晶振的  MCS-51),可以编写下面的程序来实现:

MOV R5,#5      ①

 D1:   MOV R6,#4      ②

 D2:     MOV R7,#248    ③

          DJNZ R7,$       ④

          DJNZ R6,D2      ⑤

      DJNZ R5,D1      ⑥

      RET            ⑦

这个延时程序共有七条指令,现在就每一条指令执行的次数和所耗时间进行分析:

第一条,                   MOV R5,#5 在整个程序中只执行一次,且为单周期指令,所以耗时1μs,

第二条,                   MOV R6,#4 看⑥的指令可知,只要R5-1不为0,就会返回执行这条指令,共执行了R5次,共耗时5μs,

第三条,                   MOV R7,#248 同第二条类似,只要R6-1不为0,就会返回执行这条指令,同时受到外部循环R5的控制,共耗时R5*R6*1=20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值