上一章-藍橋杯STC基礎代碼-基礎外設
上一章講了開發板上面最基礎的外設,led 數碼管 以及按鍵,並給出了代碼。
文章地址
串口
原理圖
STC15串口引腳跟80c51是同樣的。
P30 - TX ; P31 -RX
串口的代碼配置
串口在比賽中好像很少用到,在比賽主辦方提供的書上面好像沒有關於串口的題,但是以防萬一還是得知道怎麼配置。
其實也挺簡單~
首先 打開 燒錄軟件 ,打開到波特率計算器
看 ,代碼就寫好了49%。
記得打開串口中斷
ES = 1;
總體代碼如下
SCON = 0x50; //8位數據,可變波特率
AUXR |= 0x40; //定時器1時鐘爲Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時器1爲波特率發生器
TMOD &= 0x0F; //設定定時器1爲16位自動重裝方式
TL1 = 0xE0; //設定定時初值
TH1 = 0xFE; //設定定時初值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啓動定時器1
ES = 1;
至此,代碼就完成了**50%**了
再加上串口中斷函數就完成了。
記住串口1中斷 號 是 4
// 一下中斷函數是把串口接收到的字符串發送回去
void usart_intrrupt(void) interrupt 4
{
u8 rece;
if(RI)
{
rece = SBUF;
RI = 0;
SBUF = rece;
while(TI == 0);
TI = 0;
}
}
串口發送函數
//發送單個字符
void usart_send_char(u8 str)
{
SBUF = str;
while(TI == 0);
TI = 0;
}
//發送整個字符串
void usart_send_str( u8 *str)
{
while(*str != '\0')
{
usart_send_char(*str);
str++;
}
}
值得一提的是
當串口發送完成後,TI是置1 ,我之前就以爲是置 0,導致程序死機。