应用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时间的延时在应用中几乎不可能准确
写中断吧...
你的程序是想用CPU执行每条指令的时间来计算延时???
这样恐怕不准确哦....
用定时器吧
应该可以的,使用指令延时的话,计算时间比较复杂,但是计算准确了还是可以实现比较准的延时的
上一楼主,本人计算的计算4000次即是4000*2=8000US 这条程式写得对吗?用仿真器怎样看到寄存器延时时间的,