標(biāo)題:
STC8G1K08-SOP16單片機(jī)串口1通訊正常,串口2死活不出信號
[打印本頁]
作者:
JJJ2u
時間:
2023-12-12 00:33
標(biāo)題:
STC8G1K08-SOP16單片機(jī)串口1通訊正常,串口2死活不出信號
新手求助!使用STC8系列MCU,串口1 通訊正常!串口2死活不出信號,求助!
#include "stc8g.h"
#include "intrins.h"
#include "stdio.h"
void Uart2_Isr(void) interrupt 8
{
if (S2CON & 0x02) //檢測串口2發(fā)送中斷
{
S2CON &= ~0x02; //清除串口2發(fā)送中斷請求位
}
if (S2CON & 0x01) //檢測串口2接收中斷
{
S2CON &= ~0x01; //清除串口2接收中斷請求位
}
}
void Uart2_Init(void) //115200bps@22.1184MHz
{
S2CON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR &= 0xFB; //定時器時鐘12T模式
T2L = 0xFC; //設(shè)置定時初始值
T2H = 0xFF; //設(shè)置定時初始值
AUXR |= 0x10; //定時器2開始計時
IE2 |= 0x01; //使能串口2中斷
}
void main()
{
Uart2_Init();
ES = 1;
EA = 1;
while(1){
printf("Uart Test !\r\n");
}
}
復(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