久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

STC單片機雙串口使用設置與例程

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年08月27日   【字體:

 

 
 
在用STC_60s2單片機進行雙串口同時收發時,要注意一些容易配置錯誤的地方。AUXR寄存器有很多功能。在對其中的位置位和復位時,很可能在不同的地方多次進行,應該使用AUXR |= bitx 和AUXR &=~bitx 語句進行對某一位的置位和復位。這樣就不會影響其他功能位了。
 
附上程序: 
 
 #include <STC12C5A60S2.h>
 
//sfr AUXR = 0x8E;
 
#define uchar unsigned char//
 
#define uint unsigned int //
 
#define BUADRATE 38400
 
#define FOSC 24000000
 
#define S2RI 0x01
 
#define S2TI 0x02
 
sbit LED1 = P2^7;
 
uchar ReceBuf[200]={0};
 
bit finishflag = 0;
 
uchar revcnt = 0;
 
uchar startflag = 0;
 
void InitUART1(void) //baudrate 115200
 
{
 
TMOD = 0x20;
 
SCON = 0x50;
 
TH1 = 0xf3; //115384
 
TL1 = TH1;
 
PCON = 0x80; //SMOD = 1;
 
ES = 1;
 
TR1 = 1;
 
}
 
void InitUART2() //baudrate 38400
 
{
 
S2CON = 0x50; //8-Bit 串口模式 允許接收
 
BRT = 236; //[24000000/(256-236)]/32 = 37500 error2.34%
 
AUXR |= 0x14; //BRTR=1使能BRT BRTx12=1 不分頻 (AUXR 第二次出現,不能用‘=’應該用“|=”)
 
IE2 = 0x01; //enable UART2 interrupt
 
AUXR1 = 0; //UART2 TXD->P1.3 RXD->P1.2
 
}
 
void SendOneByte(unsigned char c)
 
{
 
SBUF = c;
 
while(!TI);
 
TI = 0;
 
}
 
void U1SendString(uchar *dat)
 
{
 
while(*(dat)!='\0')
 
{
 
SendOneByte(*dat);
 
dat ;
 
}
 
}
 
void U2SendOneByte(unsigned char c)
 
{
 
S2BUF = c;
 
while(!(S2CON & S2TI));
 
S2CON &= ~S2TI;
 
}
 
void U2SendString(uchar *dat)
 
{
 
while(*(dat)!='\0')
 
{
 
U2SendOneByte(*dat);
 
dat ;
 
}
 
}
 
void main()
 
{ uchar temp = 0x01;
 
AUXR = AUXR|0x40; // T1, 1T Mode AUXR 第一次出現
 
InitUART1();
 
EA = 1;
 
SendOneByte(0xaa);
 
SendOneByte(0xbb);
 
SendOneByte(0xcc);
 
InitUART2();
 
SendOneByte(0xdd);
 
while(1)
 
{// temp = ~temp;
 
// U2SendOneByte(temp);
 
if(finishflag)
 
{ LED1 = 1;
 
finishflag = 0;
 
U1SendString(ReceBuf);
 
LED1 = 0;
 
}
 
}
 
}
 
void UART1ISR(void) interrupt 4
 
{
 
if(RI)
 
{
 
RI = 0;
 
//add your code here!
 
}
 
else
 
TI = 0;
 
}
 
void UART2ISR(void) interrupt 8
 
{ static bit flash=0;
 
static uchar i=0;
 
static uchar endcnt = 0;
 
uchar tempdat = 0;
 
if(S2CON & S2RI)
 
{
 
S2CON &= ~S2RI;
 
if(~finishflag)
 
{
 
flash=~flash;
 
// LED1 = flash;
 
tempdat = S2BUF;
 
if(tempdat=='$')
 
{
 
startflag = 1;
 
}
 
////////////////////////////////////////////////////////////
 
if(startflag)
 
{
 
ReceBuf[i] = tempdat;
 
i ;
 
////////////////////////////////////////////////////////////
 
if(i==6&&ReceBuf[3]!='R'&&ReceBuf[5]!='C') //判斷是不是$GPRMC幀
 
{
 
startflag = 0;
 
i = 0;
 
}
 
else if(ReceBuf[i-1]=='*')
 
{
 
endcnt ;
 
if(endcnt==2)
 
{
 
revcnt = i;
 
endcnt = 0;
 
i = 0;
 
finishflag = 1;
 
startflag = 0;
 
}
 
}
 
else ;
 
}
 
}
 
else ;
 
}
 
else
 
S2CON &= ~S2TI;
 
}
 
關閉窗口
主站蜘蛛池模板: 在线一区 | 国产成人精品一区二区三区四区 | 久久99精品久久久久久 | 欧美综合网 | 久产久精国产品 | 免费成人在线网站 | 午夜精品久久久久久久久久久久 | 人人澡人人爱 | 中文字幕一区在线观看视频 | 日本一区二区三区在线观看 | 亚洲精品成人 | 欧美久久久久 | 一区二区高清在线观看 | 亚洲色图综合 | www.色综合| 欧美一级在线观看 | 成人免费一区二区三区视频网站 | 日韩免费在线观看视频 | 日韩三级精品 | 日本三级电影在线观看视频 | 在线日韩福利 | 国产伦精品一区二区三毛 | 亚洲免费在线播放 | 亚洲视频观看 | 日韩精品一区二区三区中文在线 | 国产日韩久久 | 日本黄色的视频 | 91在线精品秘密一区二区 | 日韩欧美中文 | 亚洲欧洲精品成人久久奇米网 | 国产精品久久久久久久久污网站 | 国产综合精品一区二区三区 | 日本精品一区 | 日韩男人天堂 | 亚洲精品国产第一综合99久久 | 日韩在线视频免费观看 | 天天欧美| 亚洲一区久久 | 9久久婷婷国产综合精品性色 | 一级特黄a大片 | 少妇精品亚洲一区二区成人 |