㈠ 51单片机的定时器的时间怎么算
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。
㈡ 51单片机各种位数定时器初值计算方法
对12MHz ,1个机器周期 1us ,12/fosc = 1us
。
方式0是13位定时器,最大时间间隔 = 2^13 = 8.192ms
方式1是16位定时器,最大时间间隔 = 2^16 = 65.536ms
方式2是8位定时器,最大时间间隔 = 2^8 = 0.256ms =256 us
方式3 仅适用于T0,此时T0分成两个8位计数器,T1停止计数
当选用定时器的方式1时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为:
THX = (2^16 - N)/256 TLX = (2^16 -N )%256(此处的X为定时器0或定时器1)
公式为:(2^y - X)*Tcy = t
Tosc= 1/ fosc
一个机器周期 = 12个时钟周期 = 12/fosc
溢出速率 = 1 / 溢出时间
故:初值X = 2^y – t/Tcy
THX = 高八位
TLX = 低八位
注:
X:定时器初值
N:计数值
y:定时器工作方式
fosc:晶振频率
Tcy:机器周期,Tosc:时钟周期
Tcy = 1/Tosc
㈢ 51单片机的指令周期是怎么计算的
指令周期是不确定的,因为她和该条指令所包含的机器周期有关。一个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。
对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期)
也有部分单片机时钟周期和振荡周期不相等,例如,1个时钟周期=2个振荡周期。
㈣ 51单片机 pc怎么算
在51单片机里面,pc永远指向下一条指令的首地址,计算方法就是:当前执行的指令的首地址+本指令所占的字节长度。
㈤ 51单片机计时60毫秒怎么算呀,计数周期是啥意思呀
一般51单片机的晶振频率是fosc=12M,单片机内部计时的频率是fosc/12 即1MHZ
因此计数周期1us
内部定时器是16位,最多 计脉冲数为65536个,因此最长定时时间是65.536 ms
要定时60 ms,需经过的脉冲个数是60000个,由于51单片机的定时器是加法计数,因此初值应该写入(65536-60000)
这样经过60mS后,计数器的值就是 (65536-60000)+60000=65536,刚好溢出,溢出标志位TF置1或产生中断
定时器初值又分高8位和低8位,高8位的1代表256,因此高8位是256的倍数,低8位是256的余数
因此 C语言编程就这样 写:
TH0=(65536-60000)/256
TL0=(65536-60000)%256
㈥ 51单片机中的延时应该怎么计算
for(a=2;a>0;a--) // 2微秒, 执行2次(a+2)是4微秒;
for(b=142;b>0;b--) // 2微秒, 执行142次,for(a=2;a>0;a--)是4微秒,即2*(142*4);
for(c=1;c>0;c--) // 2微秒, 执行1次,即2*(142*4)=1136微秒;
b=125,1000/8=125,再减去其它调用时间,应该b取值不大于125。
㈦ 51单片机延时程序时间是怎么计算的
51单片机延时时间计算需要考虑以下两种因素:
1、指令执行时间
2、指令循环次数
㈧ 51单片机用定时器计时应该如何计算求大神支招
这个其实很简单的,你只需要知道一个条件即可:晶振频率。
因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次。
那么有了这个条件就好办多了,一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒。
那么如果晶振不是12MHz,就要把上述的X乘以12/晶振,得到的值就是定时时长。原理相同。
有不懂的地方随时回复我。
希望我的回答能帮助到你。