⑴ 单片机如何精确定时1秒钟
采用定时器定时很精确的,如果定时时间为1ms,那循环1000次就是1s。定时初值要看你采用的晶振频率了,下面是12M晶振,定时器0的定时1ms程序。
timer0() interrupt 1 // 1ms延时(12.0MHz)
{
TR0=0;
ET0=0;
TH0=0xfc;
TL0=0x18;
if(delayTimes1!=0) delayTimes1--;
TR0=1;
ET0=1;
}
当要程序中把delayTimes1赋值1000后,等到delayTimes1为0的时候定时1s钟到
⑵ 单片机中定时器的初值产生1ms的定时,到底是65536-1000还是65535-1000 为什么啊急急急
定时器计数最大值为65535,再计一次则溢出,产生中断。也就是说初值设置成65535(65536-1)时,定时1个机器周期。所以正确答案是65536-1000,此时定时1000个机器周期,12M晶振1个机器周期为1微秒,1000个就是1ms啦!
⑶ 51单片机的定时器的时间怎么算
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
⑷ 单片机编写一个能延时1秒的子程序
通用办法,可以类推:
DELAY1s:
MOVR5,#08H;∵1s=1000000us
MOVR6,#0A2H;∴1000000/2=500000
MOVR7,#20H;500000用16进制表示为:07A120
;所以R5=07H+1=08H
;R6=0A1H+1=0A2H
;R7=20H
loop:DJNZR7,$;延时时间≈2×[(R5-1)×256+R6-1]×256+R7
DJNZR6,loop;当R5、R6等于0,相当于256参与运算
DJNZR5,loop;当R5、R6等于0,相当于256参与运算
RET
⑸ 单片机关于定时器,定时1ms,定时器中寄存器高低位的值如何设置
你要定时 1ms 即是 1000uS,之所以是减 1000,就是认定计数器的计数脉冲周期为 1uS,
而 1uS 就是晶振(12MHz)的12分频;
这些你理解就好;
至于计数分频值是 0xfc18 还是 0xfc67 不必太在意,如果真的想得到准确的定时,则是需要通过测量以便调节分频值来得到最接近值;