MCS51单片机时钟频率fosc11.0592MHZ,其波特率为1200bps,SMOD=0,T1工作于方式2,请写一段程序进行初始化

设MCS51单片机时钟频率fosc11.0592MHZ,使其波特率为1200bps,SMOD=0,T1工作于方式2,请写一段程序进行初始化

第1个回答  2015-11-05
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1=TL1=0xE8; // 波特率1200

SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句
//SM0=0;
//SM1=1;
//REN=1;
PCON =0x00; // 波特率不倍增 SMOD = 0
TR1 = 1;
第2个回答  推荐于2018-03-13
#include <reg51.h>
void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xE8;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}
 
void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}
 
void main(void)
{
    InitUART();
}
 
void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        //add your code here!
    }
    else
        TI = 0;
}

本回答被网友采纳
第3个回答  2015-11-05
关键是初始值,得查表。