STC12C5A60S2雙串口應(yīng)用
增強(qiáng)型8051芯片,具有雙串口。我以前通常采用軟件模擬一個(gè)串口來實(shí)現(xiàn),要占用太多的系統(tǒng)資源。該芯片可以通過一個(gè)內(nèi)置的波特率發(fā)生器,實(shí)現(xiàn)兩個(gè)串口同時(shí)工作在一個(gè)波特率下,或一個(gè)通過內(nèi)置,一個(gè)通過TH1實(shí)現(xiàn)不同波特率的通訊。通過配置AUXR來配置波特率發(fā)生器 BRT設(shè)置波特率重入裝載數(shù),S2CON 配置通訊模式。
例如: 在12MHz 頻率下 兩串口工作在 9600,8,1 配置如下
//配置串口1
SCON=0x40; /* n,8,1 */
PCON=0x80; //Bps加倍
TCON=0;
ES=1;
REN=1;
//STC 串口2定義
AUXR=0x1d; //配置兩個(gè)串口波特率發(fā)生器采用內(nèi)置,1個(gè)時(shí)鐘/機(jī)器周期
BRT=0xb2; //重裝載數(shù)
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 // 發(fā)送
{
S2CON=S2CON & 0xfd;
//S2BUF=0x55; //發(fā)送數(shù)據(jù)
}
}