用寄存器写延时8MS程序

stephenliu   2007-3-12 14:24 楼主
应用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  对吗??

回复评论 (6)

拖CPU时间的延时在应用中几乎不可能准确

写中断吧...
点赞  2007-3-12 14:57
上一楼主你可以回答我写的程序对吗??
点赞  2007-3-12 15:45
你的程序是想用CPU执行每条指令的时间来计算延时???
这样恐怕不准确哦....
用定时器吧
点赞  2007-3-13 18:04
我知道了,但我想知这种方式还行吗
点赞  2007-3-14 15:18
应该可以的,使用指令延时的话,计算时间比较复杂,但是计算准确了还是可以实现比较准的延时的
点赞  2007-3-14 16:55
上一楼主,本人计算的计算4000次即是4000*2=8000US   这条程式写得对吗?用仿真器怎样看到寄存器延时时间的,
点赞  2007-3-15 21:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复