unsigned char code baudrate1_initval_list[]=
{
( 128 + (( 32768 - ( UART_CLK_SOURSE / 16 / 1200 ))/ 256 )), (( 32768 - ( UART_CLK_SOURSE / 16 / 1200 ))% 256 ),
( 128 + (( 32768 - ( UART_CLK_SOURSE / 16 / 2400 ))/ 256 )), (( 32768 - ( UART_CLK_SOURSE / 16 / 2400 ))% 256 ),
( 128 + (( 32768 - ( UART_CLK_SOURSE / 16 / 4800 ))/ 256 )), (( 32768 - ( UART_CLK_SOURSE / 16 / 4800 ))% 256 ),
( 128 + (( 32768 - ( UART_CLK_SOURSE / 16 / 9600 ))/ 256 )), (( 32768 - ( UART_CLK_SOURSE / 16 / 9600 ))% 256 ),
};
//-----------------------------------------------------------------------------
// 串口波特率刷新
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// 初始化串口
//-----------------------------------------------------------------------------
void uart1_init( void )// 初始化串口
{
switch( commode1 )
{
case 0: // 自动连续发送方式,要关闭REN接收使能,不接收来自上位机的任何数据,连续盲发
SCON1 = 0x40; // 8位方式,接收开
IEN1 |= 0x04; // 允许USART1中断
SBRT1 = baudrate1_initval_list[( baudrate1 * 2 )];
SBRT0 = baudrate1_initval_list[( baudrate1 * 2 + 1 )];
break;
case 1: // 命令方式,打开收发使能,来一个命令执行一次,同时发一次数据
SCON1 = 0x50; // 8位方式,接收开
IEN1 |= 0x04; // 允许USART1中断
SBRT1 = baudrate1_initval_list[( baudrate1 * 2 )];
SBRT0 = baudrate1_initval_list[( baudrate1 * 2 + 1 )];
break;
case 2: // 关闭串口1
IEN1 &= 0xfb; // 关闭USART1中断
break;
default:
break;
}
}
|