unsigned int code uart_initval_list[]=
{
1200,
2400,
4800,
9600,
};
//-----------------------------------------------------------------------------
// T1初始化,串行口
//-----------------------------------------------------------------------------
void uart_init( void )
{
SCON = 0x50;
PCON = 0x00;
RXCON = 0x00; // 1V以下是低电平
T2CON = 0x30; // 定时器2产生接收和发送波特率,开启定时器,工作在定时器方式,自动重装载
T2MOD = 0x00;
baudrate = 3;
RCAP2H =( 65536 - XTAL / uart_initval_list[baudrate]/ 32 )/ 256;
RCAP2L =( 65536 - XTAL / uart_initval_list[baudrate]/ 32 )% 256;
TR2 = 1; // 开启T1
ES = 1; // 开启UART中断
UART_REC();
}
//-----------------------------------------------------------------------------
// 串行口中断
//-----------------------------------------------------------------------------
void uart( void ) interrupt 4
{
unsigned char i;
if( RI )
{
RI = 0;
}
if( TI )
{
RI = 0;
}
}
|