永发信息网

单片机延时程序精确的时间计算? DELAY:MOV R7,#250 D1:MOV R6 ,#250 D2:DJNZ R6,D1 DJNZ R7,D2 频率12M,

答案:3  悬赏:20  手机版
解决时间 2021-11-19 02:57
  • 提问者网友:谁的错
  • 2021-11-18 03:13
单片机延时程序精确的时间计算? DELAY:MOV R7,#250 D1:MOV R6 ,#250 D2:DJNZ R6,D1 DJNZ R7,D2 频率12M,
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-11-18 03:44
你的这个是死循环,延时时间无限长
正确的写法应该是:
DELAY:
MOV R7,#250
D1:
MOV R6 ,#250
D2:
DJNZ R6,D2
DJNZ R7,D1
RET ;如果是子程序,则要用这句返回

延时时间为:t=(((2*250+1)*250)+7)*1/12M =0.125257秒
全部回答
  • 1楼网友:woshuo
  • 2021-11-18 05:36
你要的是精确时间,所以你一定要用工作方式二,因为工作方式二是自动重装数据,这样的时间精确才准,如果你是用其它的工作方式,这样的误差是很大的。
你的频率是12M就更好算,知道频率12M,那么机器周期为12乘以(1/12)=1us,以1s为例,当计250个数时,要用时1s乘以250=250us,再来计算定时1s计数器要溢岀多少次,也就是1000000/250=4000,这就是12M的频率下计算的方法,明白吧?你慢慢理解一下就明白了。
祝你学好单片机。
  • 2楼网友:想偏头吻你
  • 2021-11-18 04:29
51的定时器是一个机器周期寄存器加一,加到65535溢出,触发一次中断,51的频率11.1592MHZ,寄存器的初值,你自己设置,这样从初值到溢出的时间可以算出,也就是中断时间间隔
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯