STCF2K08S2的双串口配置


                                STCF2K08S2的双串口配置


1、串口一与串口二的配置如下:

/*************		串口一初始化			**************/
void Uart1_Init()
{
	 u8 i;
	
	SCON = 0x50;    		 // 8位数据,可变波特率
	TMOD = 0x00;    		 // 设定定时器1为模式0
	TL1 = BRT1;      		 // 设定定时初值
	TH1 = BRT1 >> 8; 		 // 设定定时初值
	TR1 = 1; 		 		 // 启动定时器1
	AUXR = 0x40;     		 // 串口1选择定时器1为波特率发生器,定时器1时钟为Fosc,即1T
	ES = 1; 		 	 	 //中断使能
	P_SW1 = P_SW1 & 0x3f;  	 //锁定引脚                              
  

	for(i=0; i> 8;;	// 设定定时初值
	AUXR |= 0x10;		// 启动定时器2
	IE2   |= 1; ;       // 使能串口中断
	P_SW2 &= ~1;        //锁定引脚 


	for(i=0; i

2、中断部分如下:

/*************		 串口一发送函数	  		 **************/
void Uart1_SendStr(u8 *puts)
{
    for (; *puts != 0; puts++)
        {
			TX1_Busy = 1;                //标志发送忙
			SBUF = *puts;                //发一个字节
			while(TX1_Busy);       		 //等待发送完成
        }
} 
/*************		   串口二发送函数		  **************/
void Uart2_SendStr(u8 *puts)
{
    for (; *puts != 0;        puts++)
        {
			TX2_Busy = 1;                 //标志发送忙
			S2BUF = *puts;                //发一个字节
			while(TX2_Busy);        	  //等待发送完成
        }
}

3、点H文件:

///
//自定义部分
///

#define		TI2              (S2CON & 2)          // 判断TI2是否发送完成                                
#define		RI2              (S2CON & 1)          // 判断RI2是否接收完成                 
#define		CLR_TI2()        S2CON &= ~(1<<1)     // 清除TI2                                                                                         */
#define 	CLR_RI2()        S2CON &= ~1       	  // 清除RI2       

#define		UART1_VECTOR        4              	  //串口1中断号
#define		UART2_VECTOR        8				  //串口2中断号

/********************************************结束*****************************************************/

你可能感兴趣的:(单片机,STC8系列)