
{
TMOD=0x20//T1计时器启动关闭仅仅受TR1控制;定时器1工作方式2:M1MO=10 8位初值自动装填
TH1=0xfa
TL1=oxfa
/*初值计算:
!溢出率T1=11059200/((256-初值)*12 纤困)
!串口方式3:波特率=(2^SMOD/32)*T1 溢出率
由于电源管理寄存器PCON复位时全部清0 SMOD初始毁嫌念=0
4800=(2^0/32)*(11059200/(256-初值)*12)
所以解得 初值= 250=0xfa
*/
TR1=1//启动T1计时器
REN=1//允许串口接收
SM0=0//SM0SM1=01 10位异步收发(8位数据),波特率可变(由定时器1的溢出率控制)
SM1=1
EA=1//打开全局中断
ES=1//打开串口中断
}
我备注应该写的够详细了,希望对你有用者迅
使SMOD=1的时候是指将波特率2400加倍,最终加倍后的为波特率4800,因此通信速率增大程序波特率设定4800并且使SMOD=0时毁首蚂,这时候应该使用波特率2400进行通信,通信速率降低。
当芹闹单片机晶振使用12MHZ的时候,串口通信会有误差,使用SMOD加倍会减少误纤埋差。
--------网上搜不到答案,所以查询资料后回答,供后人参考
void UartInit(void) //4800bps@11.0592MHz{
PCON &= 0x7f //波特率不倍速
SCON = 0x50 //8位数据,可变波特率
TMOD &= 0x0f //清除定时器1模式位
TMOD |= 0x20 //设定定时器1为8位自动重装笑凯方式
TL1 = 0xFA //设定定时初值
TH1 = 0xFA //设定定时器梁升宴重装值
ET1 = 0 //禁止定时器1中断
TR1 = 1 //启动定时橡银器1
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)