標(biāo)題: STC8G1K08-SOP16單片機(jī)串口1通訊正常,串口2死活不出信號 [打印本頁]

作者: JJJ2u    時間: 2023-12-12 00:33
標(biāo)題: STC8G1K08-SOP16單片機(jī)串口1通訊正常,串口2死活不出信號
新手求助!使用STC8系列MCU,串口1 通訊正常!串口2死活不出信號,求助!
  1. #include "stc8g.h"
  2. #include "intrins.h"
  3. #include "stdio.h"

  4. void Uart2_Isr(void) interrupt 8
  5. {
  6.         if (S2CON & 0x02)        //檢測串口2發(fā)送中斷
  7.         {
  8.                 S2CON &= ~0x02;        //清除串口2發(fā)送中斷請求位
  9.         }
  10.         if (S2CON & 0x01)        //檢測串口2接收中斷
  11.         {
  12.                 S2CON &= ~0x01;        //清除串口2接收中斷請求位
  13.         }
  14. }

  15. void Uart2_Init(void)        //115200bps@22.1184MHz
  16. {
  17.         S2CON = 0x50;                //8位數(shù)據(jù),可變波特率
  18.         AUXR &= 0xFB;                //定時器時鐘12T模式
  19.         T2L = 0xFC;                        //設(shè)置定時初始值
  20.         T2H = 0xFF;                        //設(shè)置定時初始值
  21.         AUXR |= 0x10;                //定時器2開始計時
  22.         IE2 |= 0x01;                //使能串口2中斷
  23. }




  24. void main()
  25. {
  26.     Uart2_Init();
  27.     ES = 1;
  28.     EA = 1;
  29.         while(1){
  30.                 printf("Uart Test !\r\n");
  31.         }
  32.    


  33. }
復(fù)制代碼



作者: CQQ@123    時間: 2023-12-12 09:11
串口使能位為ES2
作者: STC新未來    時間: 2023-12-12 09:28
printf函數(shù)默認(rèn)通過串口1輸出,如果想通過串口2輸出,需要改寫putchar函數(shù):
char putchar(char c)
{
        S2BUF  = c;
        while((S2CON & 2) == 0);
        S2CON &= ~2;    //Clear Tx flag
        return c;
}用上面寫法需要將串口2中斷關(guān)閉,或者刪除中斷函數(shù)里清除發(fā)送中斷標(biāo)志指令。

若樓主還有疑問可去STCAI官方咨詢


作者: 老夫任我行    時間: 2023-12-12 09:44
寄存器有沒有弄錯?串口2的數(shù)據(jù)寄存器是S2BUF哦。另外配置串口2一般用S2CON=0x10
作者: JJJ2u    時間: 2023-12-12 10:54
老夫任我行 發(fā)表于 2023-12-12 09:44
寄存器有沒有弄錯?串口2的數(shù)據(jù)寄存器是S2BUF哦。另外配置串口2一般用S2CON=0x10

官方給出的示例寄存器是S2BUF哦!S2CON=0X50和0x10都試過了

作者: coody_sz    時間: 2023-12-12 11:30
不可以直接下載STC ISP返利程序里的例子測試嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1