C51,单片机T1,串口编程(请问如何设置TH1,TL1初值)

TH1= TL1=?
我是新手,我想问问,定时器1的工作方式2下,16M晶振,想要250Kbps波特率,初值为多少?如何计算?谢谢(C51)

这个要看你是什么单片机,不同的单片机指令周期不同,有12T,也有6T1T等等,
12T的算法就是256-16000000/(250000*12)=FAH
TH1=FAH
TL1=FAH
计算中你会发现除不尽,有小数点,被无情的舍去了,这样的话精度就无法保证,
所以要调整你的16M,比如用11.0592M 18.432M等,波特率一般9600等常用波特率
保证计算的时候能除尽,这样精度就高,通讯出错的几率就低

另外我这有波特率计算器,需要的话留邮箱
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-14
在方式2下貌似只利用了TL,当溢出的时候单片机会自动让TL=TH。TL有8位也就是0~255,每次计数要一个机器周期也就是12/16M(秒)。波特率250k就要看你工作在什么方式下了
第2个回答  2011-07-15
哈,简单,下个51定时计算器就行了。不用自己去算。
第3个回答  2011-07-15
两个赋相同的值即可,系统会自动使用减法将TL减到0,然后将TH赋给TL

C51,单片机T1,串口编程(请问如何设置TH1,TL1初值)
TH1=FAH TL1=FAH 计算中你会发现除不尽,有小数点,被无情的舍去了,这样的话精度就无法保证,所以要调整你的16M,比如用11.0592M 18.432M等,波特率一般9600等常用波特率 保证计算的时候能除尽,这样精度就高,通讯出错的几率就低 另外我这有波特率计算器,需要的话留邮箱 ...

...器时,设置为工作方式1时,应该给TH1和TL1设定怎样的值
如:11.0592MHz,波特率为9600的初值:TH1=0FFH,TL1=0FDH 强调:51串行口方式1为由定时器T1的计数溢出率来决定,T1为16位定时器,故TH1,TL1均需设值,

C51单片机程序
TH1 = 0xfd;TL1 = 0xfd;T1初值 TMOD = 0x21;定时器\/计数器模式控制寄存器 如图 GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1 GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。C\/T=0时为定时功能,C\/T=1时为计数功能 M0、M1——方式选择功能 M1M0 工作方式 计数器模式 T...

自学单片机reg51.h定时程序是里面的TH1、TL1、TR1、TMOD是什么意思?没...
TH1,TL1、TR1、TMOD是单片机的特殊寄存器 ,是用来控制计数\/中断器的.TMOD(工作方式控制寄存器);TH1\/TL1是定时器\/计数器1;TR1=1是启动定时器1。

51单片机串口通信,定时器1,8位自动重装初值的求法
1 公式一的结果为TH1=TL1=-3 2 公式二结果为TH1=TL1=253 无论使用哪个参数,程序都可以正常运行,这就对了。因为这俩数 表面上看着不同 实际是一样的。公式二结果为TH1=TL1=253 为正数,公式一的结果为TH1=TL1=-3 为负数 在计算机中要用补码表示,应表示为FDH=253.呵呵 这俩个数...

51单片机串口初始化步骤,首先初始化那个在初始化那个,最好是华为等大...
设置系统时钟-》设定分频-》设定引脚输出输入方式(推挽或漏极开路)-》设定定时器1工作模式在八位自动重载模式-》载入定时器初始值-》开启定时器1-》开启串口0中断使能-》开启总中断使能-》开启串口0接受允许-》设定串口0工作模式-》初始化完成。将数据压入发送缓冲寄存器 用while 语句等待发送标志位被...

...12M,串口通信波特率应该用多少合适,TH1,TL1初值为多少?
我的LCD是HMI,它也要设定波特率,我需要把我的单片机程序中TH1和TL1都设为F3,也就是2400的波特率,同时也要把我的LCD的波特率也设定为2400。由于我还没有做过串口打印的实验,所以对这个不是很清楚,但是你要知道通信双方的波特率必须一致,你可以参考一下我的这个例子,祝你成功!

TH1=0xfd;为什么赋初值为0xfe TL1=0xfd;(单片机c510
程序中也没有赋初值为0xfe这一行啊。明明是 TH1=0xfd; TL1=0xfd;是不是想问为什么都是赋值为0xfd啊,在串行通信时,T1定时器是用作波特率发生器的,且为方式2,这样,TL1是作为8位计数器的,而TH1是作为时间常数的寄存器的,可以实现TL1计数回0时自动重装时间常数,即将TH1中的数自动送给TL1,...

C51 如何使用定时器的TH1,TL1来计算时间差值?定时器初值计时时如何变化...
不太明白你这样做有什么意义,另外C51的定时器似乎只能自增一直至超出数位产生溢出中断,另外你所述的关闭定时器1是指关闭中断的话,那么寄存器的值讲继续增加,只是溢出中断不响应,如果是关闭计数,那么寄存器的值讲不变化,也不会产生中断

求一个51单片机c语言程序,当串口输入一个数,然后单片机返回指定的数 ...
给个简单的。main(){ \/\/初始化串口 SCON=0x50;TMOD=0x20;TH1=TL1=0xff;\/\/视Fosc,给实际波特率发生器初值。TR1=1;while(1){ while(RI==0);RI=0;switch(SBUF){ case 0x55:SBUF=0x31;while(TI==0);TI=0;SBUF=0x31;while(TI==0);TI=0;SBUF=0x31;while(TI==0);TI=0;SBUF...

相似回答