串口2的初始化程序,我是用STC的“波特率计算工具”生成的:
void UartInit(void) //4800bps@11.0592MHz
{
AUXR &= 0xf7; //波特率不倍速
S2CON = 0x50; //8位数据,可变波特率
BRT = 0xB8; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x10; //启动独立波特率发生器
}
串口2查询方式函数,注意不要开中断:
串口输出数据:
void OutByteS2(int8u k)
{
S2BUF=k;
while(!(S2CON&S2TI));
S2CON&=~S2TI;
}
串口读取数据
int8u GetByteS2(void)
{
while(!(S2CON&S2RI));
S2CON&=~S2RI;
return S2BUF;
}
串口2中断服务程序:
void S2INT() interrupt UART2_INT
{
EA=0;
if(S2CON&S2RI)
{
S2CON&=~S2RI;
//k=S2BUF;
}
if(S2CON&S2TI)
{
S2CON&=~S2TI;
//S2BUF=k;
}
EA=1;
}