/*************************************************** P89C669_Uart1.c P89C669扩展的第二个串口采用波特率发生器进行数据发送 ***************************************************/ #include #include #define FOSCCLK 11059200 //单片机外部时钟 #define BAUD 9600 //波特率设置 unsigned int BRATE; void Uart1Init( void ) //UART1 初始化函数 { S1STAT = 0x20 ; // 区分接收和发送中断 S1CON = 0x00 ; //串口控制寄存器清零 REN_1 = 1 ; //允许接收中断 { //进入8 位UART 模式设置 SM0_1 = 0 ; SM1_1 = 1 ; //设定串口通讯方式为模式1 } BRGCON = 0X00 ; //关闭波特率发生器,从而设置波特率 BRGR1 = BRATE >> 8 ; BRGR0 = BRATE & 0x0ff ; BRGCON = 0X01 ; //开启波特率发生器 ES1R = 1 ; // 开放UART1 接收中断 EA = 1 ; // 使能所有中断 } void Uart1SendCrt( unsigned char crt ) //UART1 发送数据函数 { S1BUF = crt ; while( TI_1 == 0 ) ; TI_1 = 0 ; } main() { unsigned int count ; BRATE=FOSCCLK/BAUD-16; Uart1Init( ) ; //初始化串口参数 count = 0x0ff ; while( count--) ; //延时 while(1) { Uart1SendCrt( 'A') ; //发送字符A count = 0x0ff ; while( count--) ; //延时 } }