当前位置: 代码迷 >> 单片机 >> 用寄存器写延时8MS程序,该如何解决
  详细解决方案

用寄存器写延时8MS程序,该如何解决

热度:132   发布时间:2016-04-28 16:21:45.0
用寄存器写延时8MS程序
应用89C51,晶振12M   写延时8MS程序
4000=0FA0H   超出一个8位寄存器所能容纳的范围,所以使用两个寄存器R4、R3分别存放高字节0FH与低字节A0H,但在中断服务子程序中.当R4、R3=0101H,再减1,
则R4、R3=0100H,但实际上程序使R4、R3=0000H,即R4多减一次,所以R4的初始值应加1,
HTIME=OFH+1
HTIME     EQU       OFH+1
LTIME     EQU       0A0H
MAIN:     ORG         00H
                MOV         R4,HITME
                MOV         R3,LTIME
                DJNZ       R3,TIM2
                DJNZ       R4,TIM2
TIM2:     RETI
R3、R4设置的延时是怎样算呢????
DJNZ的机器周期为2,计算4000次即是4000*2=8000US     对吗??

------解决方案--------------------
你的程序是想用CPU执行每条指令的时间来计算延时???
这样恐怕不准确哦....
用定时器吧
------解决方案--------------------
应该可以的,使用指令延时的话,计算时间比较复杂,但是计算准确了还是可以实现比较准的延时的
  相关解决方案