用寄存器写延时8MS程序

yanyong   2007-3-11 16:46 楼主
应用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  对吗??

回复评论 (1)

OK
点赞  2007-3-11 16:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复