//9600转19200
#include<STC12C5A.H>
#define uchar unsigned char
void UartInit(void);
void UartInit2(void);
uchar temp;
void main()
{
UartInit();
UartInit2();
EA = 1;
IE2 =0X01;
while(1);
}
void UartInit(void) //19200bps@11.0592MHz
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xEE; //设定定时初值
TH1 = 0xEE; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES=1;
}
void UartInit2(void) //9600bps@11.0592MHz
{
AUXR&=0xf7; //波特率不倍速
S2CON=0x50; //8位数据,可变波特率
BRT=0xDC; //设定独立波特率发生器重装值
AUXR|=0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR|=0x10; //启动独立波特率发生器
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI=0;
}
}
void UART_SER_2(void) interrupt 8 //串行中断服务程序
{
uchar T_emp;
T_emp=S2CON ;
T_emp=T_emp&0x01;
if(T_emp)
{
S2CON=S2CON&0xFE;
temp=S2BUF;
SBUF=temp;
while(!TI);
TI=0;
}
}
|