首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-02-09 
用寄存器写延时8MS程序应用89C51,晶振12M写延时8MS程序40000FA0H超出一个8位寄存器所能容纳的范围,所以使

用寄存器写延时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执行每条指令的时间来计算延时???
这样恐怕不准确哦....
用定时器吧
[解决办法]
应该可以的,使用指令延时的话,计算时间比较复杂,但是计算准确了还是可以实现比较准的延时的

热点排行