藍橋杯STC基礎代碼-串口通信

上一章-藍橋杯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,導致程序死機。

代碼下載地址

下載地址

下一章-時鐘芯片-DS1302

文章地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章