增强型8051芯片,具有双串口。我以前通常采用软件模拟一个串口来实现,要占用太多的系统资源。该芯片可以通过一个内置的波特率发生器,实现两个串口同时工作在一个波特率下,或一个通过内置,一个通过TH1实现不同波特率的通讯。通过配置AUXR来配置波特率发生器 BRT设置波特率重入装载数,S2CON 配置通讯模式。
例如: 在12MHz 频率下 两串口工作在 9600,8,1 配置如下
//配置串口1
SCON=0x40; /* n,8,1 */
PCON=0x80; //Bps加倍
TCON=0;
ES=1;
REN=1;
//STC 串口2定义
AUXR=0x1d; //配置两个串口波特率发生器采用内置,1个时钟/机器周期
BRT=0xb2; //重装载数
S2CON=0x50;
IE2=0x01; //ES2=1 //开中端
//串口1中断
void serial_1() interrupt 4 using 2
{
unsigned char in_data;
if(RI)
{
in_data=SBUF;
RI=0;
}
if(TI)
{
TI=0;
}
}
//串口2中断
void serial_2() interrupt 8 using 2
{
unsigned char rti;
unsigned char in_data;
rti=S2CON;
rti=rti 0x01;
if (rti==1) // 接收
{
In_Data=S2BUF;
S2CON=S2CON 0xfe;
}
else // 发送
{
S2CON=S2CON 0xfd;
//S2BUF=0x55; //发送数据
}
}