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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值