① 51单片机初值计算
应该做不到吧 定时器2是自动装载的8位计数 最大255 单片机时钟频率晶振/12 是1M 也就是1000次才1ms 模式2不行的 除非你在在弄个全局变量中断中计数
② 51单片机波特率初值怎么计算
用专门软件算吧,象STC烧录软件就附带有定时器和波特率的计算程序,何必自己按计算器呢。
③ 51单片机定时器初值公式
1.简单说起,256表示一个8位分界点,对它求模得高位字节存在TH0中,求余得低位字节放在TL0中,拿十进制打比:15/10得十位1,15%10得个位数5
2.12Mhz时,单周期指令时间为12/fsoc=1us
方式1为16位定时/计数器
故定时1ms为:TH0=(2^16-1000)/2^8,
TL0=(2^16-1000)%256
当为11.0592MHz时,单周期指令时间为12/fsoc=12/11.0592us
由于采用方式0,为13为定时器,TH0高8位和TL0的低5位
故定时1ms为:
TH0=(2^13-1000/(12/11.0592))/2^5,
TL0=(2^16-1000/(12/11.0592))%2^5
这么晚了 写写不容易,多给些分以此鼓励俺
O(∩_∩)O~
④ 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/12,晶振12M时,计时脉冲频率是1MHz,周期是1us,因此定时1mS就是1000个脉冲,由于51定时器是加法计数,计数到最大值65536溢出,定时结束,产生中断,因此初值应该写为65536-1000,计数器分高8位和低8位,高8位的1代表256,低8位是不足256的那一部分,因此高8位初值为TH=(65536-1000)/256,低8位TL=(65536-1000)%256。
⑥ 51单片机串口通信定时器初值怎么计算公式和计算原理是什么
串口通信方式1和方式3,要用T1来控制波特率。
T1,使用定时方式2,其初始值,和晶振频率、波特率、SMOD的关系式如下:
T1初值 = 256 - fosc * (SMOD + 1) / (384 * 波特率)
--我不明白波特率跟这个定时器的关系。麻烦你详细一点!
这个关系,是由硬件决定的,只有搞微电子的,才能弄明白。
软件人员,编程的时候,会用这个公式即可,也没有必要弄明白这个。
基本上,也没有几个人,能够弄明白集成电路内部,究竟是怎么处理的。
其它的很多人,好像是很明白,其实都是在瞎编理由,包括写书的那些人。
⑦ 51单片机中PCON的初值如何算
PCON一般只有在使用串口时设置,要设置也只设置它的最高位SMOD。SMOD是串口波特率倍增位,设为1串口波特率就加倍,为0就不变。PCON不能位寻址,所以说初值就00H和80H两种。
⑧ 51单片机中定时1分钟,怎么计算初值
void init()//初始化定时器50毫秒 开启定时0
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++; //50MS 一次
}
通过判断aa的值可以得到时间长度
⑨ 51单片机中定时器初始值是怎样计算的呀
下面按外接,12MHz晶振算..在P1.0处输出1MS方波
ORG 00
AJMP MAIN
ORG 0BH
LALL T0INT
RETI
ORG 30H
MAIN:
LCALL T0INIT
AJMP $
T0INIT:
MOV TMOD,#01H
LCALL T0LOAD
SETB TR0
SETB ET0
SETB EA
RET
T0LOAD:
MOV TL0,#0F0H ;初值计算,65536US-1MS=D8F0H
MOV TH0,#0D8H
RET
T0INT:
LCALL T0LOAD
JB P1.0,NEXT
SETB P1.0
RET
NEXT:
CLR P1.0
RET
END
大概应该就是这样的..