【Practical】51单片机软件延时1S

  • 采用晶振为12MHz的单片机,其一个机器周期为1us
  • DJNZ指令为双周期指令;
  • MOV Rn,#data为单周期指令。
DELAY:	MOV R5,#10
DELAY1:	MOV R6,#200
DELAY2: MOV R7,#248
		DJNZ R7,$
		DJNZ R6,DELAY2
		DJNZ R5,DELAY1
  • 整个程序延时时间计算如下:1+10×(1+200×(1+248×2+2)+2)=998031个机器周期,一个机器周期1us,共0.998s,约等于1s.
  • 最内层循环执行寄存器R7自减计数248次,每次2周期,体现为T3=248×2=496;
  • 次内层循环执行200次,除了执行最内层循环以外,还有初始化最内层循环寄存器R7以及对本循环寄存器R6自减计数等操作,体现为T2=200×(1+T3+2)=99800;
  • 最外层循环执行10次,分析过程和次内层相同,时间体现为T1=10×(1+T2+2)=998030;
  • 最终时间为1+T1=998031us ≈ 1s.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值