久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
關于stc8單片機串口1、2、3、4的配置
[打印本頁]
作者:
楓樹566
時間:
2019-7-3 18:08
標題:
關于stc8單片機串口1、2、3、4的配置
串口1初始化配置:
void Uart1Init(void) // 9600bps@12.000MHz
{
SCON = 0x50; // 8位數據,可變波特率
AUXR |= 0x40; // 定時器1時鐘為Fosc,即1T
AUXR &= 0xFE; // 串口1選擇定時器1為波特率發生器
TMOD &= 0x0F; // 設定定時器1為16位自動重裝方式
TL1 = 0xC7; // 設定定時初值
TH1 = 0xFE; // 設定定時初值
ET1 = 0; // 禁止定時器1中斷
TR1 = 1; // 啟動定時器1
ES = 1; // 開串口中斷
EA = 1; // 開總中斷
}
串口2初始化配置:
void Uart2Init(void) // 9600bps@12.000MHz
{
S2CON = 0x50; // 8位數據,可變波特率
AUXR |= 0x04; // 定時器2時鐘為Fosc,即1T
T2L = 0xC7; // 65536-12000000/9600/4 = FEC7H
T2H = 0xFE; // 設定定時初值
AUXR |= 0x10; // 啟動定時器2
IE2 = ES2; // 使能串口中斷
EA = 1; // 開總中斷
}
串口3初始化配置:
void Uart3Init(void) // 9600bps@12.000MHz
{
S3CON = 0x10; // 8位數據,可變波特率
S3CON &= 0xBF; // 串口3選擇定時器2為波特率發生器
AUXR |= 0x04; // 定時器2時鐘為Fosc,即1T
T2L = 0xC7; // 65536-12000000/9600/4=FEC7H
T2H = 0xFE; // 設定定時初值
AUXR |= 0x10; // 啟動定時器2
IE2 = ES3; // 使能串口中斷
EA = 1; // 開總中斷
}
串口4初始化配置:
void Uart4Init(void) // 9600bps@12.000MHz
{
S4CON = 0x10; // 8位數據,可變波特率
S4CON &= 0xBF; // 串口4選擇定時器2為波特率發生器
AUXR |= 0x04; // 定時器2時鐘為Fosc,即1T
T2L = 0xC7; // 65536-12000000/9600/4=FEC7H
T2H = 0xFE; // 設定定時初值
AUXR |= 0x10; // 啟動定時器2
IE2 = ES4; // 使能串口中斷
EA = 1; // 開總中斷
}
主函數:
void main()
{
UartXInit(); // 串口X初始化
busy = 0; // 發送標志位
while (1)
{
if(rptr != wptr) // 將接收到的數據發送出去
{
UartXSend(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
發送函數:
void UartXSend(char dat)
{
while (busy); // 當busy=0時,跳出循環,表示可以發送數據了
busy = 1; // 發送標志置1,為下次發送做準備
SXBUF = dat; // 開始發送字節 (SXBUF = SBUF、S2BUF、S3BUF、S4BUF)
}
中斷函數:
void UART1_Isr() interrupt 4 using 1
{
if (TI) // 發送中斷標志位判斷
{
TI = 0; // 清中斷標志
busy = 0; // 發送標志位置0,表示滿足發送條件
LED0 = !LED0; // 測試端口
}
if (RI) // 接收中斷標志位判斷
{
RI = 0; // 清中斷標志
LED1 = !LED1; // 測試端口
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UART2_Isr() interrupt 8 using 1
{
if (S2CON & 0x02) // 發送中斷標志判斷
{
S2CON &= ~0x02; // 清中斷標志
LED0 = !LED0; // 測試端口
busy = 0; // busy=0滿足發送條件
}
if (S2CON & 0x01) // 接收中斷標志判斷
{
S2CON &= ~0x01; // 清中斷標志
LED1 = !LED1; // 測試端口
buffer[wptr++] = S2BUF;
wptr &= 0x0f;
}
}
void UART3_Isr() interrupt 17 using 1
{
if (S3CON & S3TI) // 發送中斷標志位
{
S3CON &= ~S3TI; // 清中斷標志
LED0 = !LED0; // 測試端口
busy = 0;
}
if (S3CON & S3RI) // 接收中斷標志位
{
S3CON &= ~S3RI; // 清中斷標志
LED1 = !LED1; // 測試端口
buffer[wptr++] = S3BUF; // 接收數據
wptr &= 0x0f; // 確保接收數據不超出數組長度
}
}
void UART4_Isr() interrupt 18 using 1
{
if (S4CON & S4TI) // 發送中斷標志判斷
{
S4CON &= ~S4TI; // 清中斷標志
LED0 = !LED0; // 測試端口
busy = 0;
}
if (S4CON & S4RI) // 接收中斷標志判斷
{
S4CON &= ~S4RI; // 清中斷標志
LED1 = !LED1; // 測試端口
buffer[wptr++] = S4BUF; // 接收數據
wptr &= 0x0f; // 確保接收數據不超出數組長度
}
}
作者:
kaixin8318
時間:
2020-2-26 12:30
不錯哦 正好需要
作者:
YYZZ052
時間:
2020-9-10 17:31
用在STC8G1K08上,,,
作者:
遠征之路
時間:
2020-10-14 10:03
大神,請問一下:同時使用串口1 和 串口2 如何實現?
作者:
rao23456
時間:
2023-5-31 09:07
遠征之路 發表于 2020-10-14 10:03
大神,請問一下:同時使用串口1 和 串口2 如何實現?
同求,我初始化串口2就串口1都用不了了,不知道怎么得。而且IE2 = ES2;這個ES2也沒有哇
作者:
松下手剎
時間:
2023-8-26 21:13
這段是wptr &= 0x0f;什么意思
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕在线免费观看
|
欧美一区不卡
|
二区中文字幕
|
天天干天天玩天天操
|
日本视频在线播放
|
精品久久久久久久久亚洲
|
国产视频欧美
|
国产精品久久久久久久久久久久久
|
一区二区免费在线观看
|
国产激情视频在线观看
|
欧美一区二区三区精品免费
|
亚洲国产成人精品久久久国产成人一区
|
五月花丁香婷婷
|
免费看欧美一级片
|
欧美中国少妇xxx性高请视频
|
久久黄网
|
av激情影院
|
欧美精品日韩精品
|
色婷婷一区二区三区四区
|
亚洲国产精品一区在线观看
|
国产精品无码专区在线观看
|
国产综合视频
|
国产一区二区三区视频
|
色视频在线免费观看
|
国产精品免费观看视频
|
国产精品一码二码三码在线
|
国产一区二区
|
日日操夜夜操天天操
|
色综合99
|
久草在线
|
国产在线www
|
久久一
|
欧美性精品
|
精品国产欧美一区二区三区成人
|
国产精品久久久久久av公交车
|
狠狠的干
|
国产农村一级片
|
81精品国产乱码久久久久久
|
国产成人99久久亚洲综合精品
|
欧美一级在线
|
精品国产一区二区三区久久久四川
|