单片机 tmod怎么设置,还有情高手帮我看看下面这个小程序,必有重谢

void UART_init()
{
PCON = 0x80;
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
SCON = 0x50;
TR1 = 1;
ES=1;
EA=1;
}

tmod的位功能设置:

定时器工作方式寄存器TMOD的位功能定义

D3 D2 D1 D0:T0工作方式控制

D1 D0:方式选择00:方式0,01:方式1,10:方式2,11:方式3

D2:计数/定时方式选择,1:计数,0:定时

D3:外接INT1控制使能,1:允许,0:禁止

D7 D6 D5 D4:T1工作方式控制

按顺序与上面4位对应。

看你要做什么,才能告诉你如何设置。书上都有,不知道你哪点不明白。

你的串口初始化函数:

   PCON = 0x80; 设置波特率因子,详见教科书中波特率计算 

     TMOD = 0x20; T1设定方式2,用于波特率发生器 

     TH1  = 0xfd;   T1的波特率参数。波特率与你采用的系统时钟频率有关,所以虽然设定了T1的波特率参数,还不能确定波特率是多少。    

     TL1  = 0xfd;

     SCON = 0x50; 设定了串行口方式1,允许接收; 

     TR1  = 1;启动T1波特率发生器,注意要关T1中断  

     ES=1; 你开了串行中断,相应的要采用中断方式收、发串行口数据

     EA=1; 开中断总开关

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-27
一般是T1作为串口波特率发生器,方式2,8位,自动重载定时常数。TMOD=0x20追问

想要得到19200Baud, 11.0592Mhz,为什么设置 TH1 = 0xfd; TL1 = 0xfd;

追答

如果PCON为0X00,那么波特率是9600 ,但你这里PCON=0X80 ,就是说波特率要X2了。

本回答被网友采纳
第2个回答  2011-10-29
你不就是想搞串口通信吗?在宏晶公司的器件手册上写得很清楚。
相似回答