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<RX1_Length; i++)    
	RX1_Buffer[i] = 0;
	TX1_Busy   	  = 0;
	TX1_read   	  = 0;
	RX1_write     = 0;
}
/*************			串口二初始化			**************/
void Uart2_Init()
{
	u8 i;
	
	S2CON = 0x50;		// 8位数据,可变波特率
	AUXR |= 0x04;	    // 定时器2时钟为Fosc,即1T
	T2L   = BRT2;	    // 65536-12000000/9600/4 = FEC7H
	T2H   = BRT2 >> 8;;	// 设定定时初值
	AUXR |= 0x10;		// 启动定时器2
	IE2   |= 1; ;       // 使能串口中断
	P_SW2 &= ~1;        //锁定引脚 


	for(i=0; i<RX2_Length; i++)               
	RX2_Buffer[i] = 0;
	TX2_Busy      = 0;
	TX2_read  	  = 0;
	RX2_write  	  = 0;
}

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中断号

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值