欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STC15單片機4串口中斷收發(fā)數(shù)據(jù)源代碼,親測能用
[打印本頁]
作者:
xs3396
時間:
2018-9-11 17:04
標題:
STC15單片機4串口中斷收發(fā)數(shù)據(jù)源代碼,親測能用
STC15W4K58s4單片機4路串口同時中斷收發(fā)數(shù)據(jù)代碼
0.png
(10.2 KB, 下載次數(shù): 98)
下載附件
2018-9-11 18:01 上傳
單片機源程序如下:
#include "uart.h"
u8 Uart1_RecvBuf[11]; //串口數(shù)據(jù)緩存
u8 point1 = 0; //綬存指針
u8 UART1_RecvFlag=0;
u8 Uart2_RecvBuf[11]; //串口數(shù)據(jù)緩存
u8 point2 = 0; //綬存指針
u8 UART2_RecvFlag=0;
u8 Uart3_RecvBuf[11]; //串口數(shù)據(jù)緩存
u8 point3 = 0; //綬存指針
u8 UART3_RecvFlag=0;
u8 Uart4_RecvBuf[11]; //串口數(shù)據(jù)緩存
u8 point4 = 0; //綬存指針
u8 UART4_RecvFlag=0;
void UartInit(void) //9600bps@11.0592MHz
{
P3M0 &= ~(1<<7); //設置P3.7為準雙向IO
P3M1 &= ~(1<<7);
S1_USE_P30P31();
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR |= 0x40; //定時器1時鐘為Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器
TMOD |= 0x00; //設定定時器1為16位自動重裝方式
TL1 = 0xE0; //設定定時初值
TH1 = 0xFE; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
S2CON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR |= 0x04; //定時器2時鐘為Fosc,即1T
T2L = 0xE0; //設定定時初值
T2H = 0xFE; //設定定時初值
AUXR |= 0x10; //啟動定時器2
S3CON = 0x10; //8位數(shù)據(jù),可變波特率
S3CON |= 0x40; //串口3選擇定時器3為波特率發(fā)生器
T4T3M |= 0x02; //定時器3時鐘為Fosc,即1T
T3L = 0xE0; //設定定時初值
T3H = 0xFE; //設定定時初值
T4T3M |= 0x08; //啟動定時器3
S4CON = 0x10; //8位數(shù)據(jù),可變波特率
S4CON |= 0x40; //串口4選擇定時器4為波特率發(fā)生器
T4T3M |= 0x20; //定時器4時鐘為Fosc,即1T
T4L = 0xE0; //設定定時初值
T4H = 0xFE; //設定定時初值
T4T3M |= 0x80; //啟動定時器4
UART2_INT_ENABLE();
UART3_INT_ENABLE();
UART4_INT_ENABLE();
ES = 1;
EA = 1;
}
/*----------------------------
發(fā)送串口數(shù)據(jù)
----------------------------*/
void Uart1_Sendbyte(unsigned char ch)
{
SBUF = ch; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
while (!TI); //等待前面的數(shù)據(jù)發(fā)送完成
TI = 0;
}
void Uart1_SendData()
{
int i;
for(i=0;i<11;i++)
{
Uart1_Sendbyte(Uart1_RecvBuf[i]);
}
}
void Usart() interrupt 4 using 1 // 串口中斷函數(shù)
{
ES = 0;
if (RI)
{
RI = 0; //清除RI位
Uart1_RecvBuf[point1] = SBUF;
if (Uart1_RecvBuf[0] == 0x55)
{
point1++;
if(point1>=11)
{
point1 = 0;
}
}
if(Uart1_RecvBuf[1] == 0x53)
{
UART1_RecvFlag=1;
}
}
ES = 1;
}
/*----------------------------
通過串口2發(fā)送串口數(shù)據(jù)
----------------------------*/
void Uart2_Sendbyte(unsigned char ch)
{
S2BUF = ch; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
while(!TI2); //不忙后發(fā)送數(shù)據(jù)
CLR_TI2();
}
void Uart2_SendData()
{
int i;
for(i=0;i<11;i++)
{
Uart2_Sendbyte(Uart2_RecvBuf[i]);
}
}
void Usart2() interrupt 8 using 1
{
UART2_INT_DISABLE();
if(RI2)
{
CLR_RI2(); //清除RI位
Uart2_RecvBuf[point2] = S2BUF;
if (Uart2_RecvBuf[0] == 0x55)
{
point2++;
if(point2>=11)
{
point2 = 0;
}
}
if(Uart2_RecvBuf[1] == 0x53)
{
UART2_RecvFlag=1;
}
}
UART2_INT_ENABLE();
}
/*----------------------------
通過串口3發(fā)送串口數(shù)據(jù)
----------------------------*/
void Uart3_Sendbyte(unsigned char ch)
{
S3BUF = ch; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
while(!TI3); //不忙后發(fā)送數(shù)據(jù)
CLR_TI3();
}
void Uart3_SendData()
{
int i;
for(i=0;i<11;i++)
{
Uart3_Sendbyte(Uart3_RecvBuf[i]);
}
}
void Usart3() interrupt 17
{
UART3_INT_DISABLE();
if(RI3)
{
CLR_RI3(); //清除RI位
Uart3_RecvBuf[point3] = S3BUF;
if (Uart3_RecvBuf[0] == 0x55)
{
point3++;
if(point3>=11)
{
point3 = 0;
}
}
if(Uart3_RecvBuf[1] == 0x53)
{
UART3_RecvFlag=1;
}
}
UART3_INT_ENABLE();
}
/*----------------------------
通過串口4發(fā)送串口數(shù)據(jù)
----------------------------*/
void Uart4_Sendbyte(unsigned char ch)
{
S4BUF = ch; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
while(!TI4); //不忙后發(fā)送數(shù)據(jù)
CLR_TI4();
}
void Uart4_SendData()
{
int i;
for(i=0;i<11;i++)
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
4路串中斷收發(fā).rar
(126.09 KB, 下載次數(shù): 266)
2018-9-11 17:03 上傳
點擊文件名下載附件
STC15W4K58S4單片機源程序
下載積分: 黑幣 -5
作者:
xsf444051989
時間:
2018-12-26 18:06
希望有用
作者:
liuz325
時間:
2019-3-17 22:04
希望有用
作者:
gongzhu
時間:
2019-6-2 21:55
整了個15w4k48S4回來做modbus從站用,正需要!
作者:
hyz5122
時間:
2019-7-10 09:08
不錯,先下載來學習,學習
作者:
yulin3192
時間:
2019-7-18 15:46
不是我想要的答案
作者:
elec_hangzhou
時間:
2019-8-2 15:04
希望能解決我的困惑,學習一下。
作者:
zhangjianhu
時間:
2019-10-18 10:23
參考下樓主的歷程,寫的很清晰
作者:
caiwj
時間:
2020-3-5 17:26
參考下樓主的歷程
作者:
talentnan
時間:
2021-3-31 09:39
正在使用STC15w4k32s4寫多串口同時通訊程序,參考一下
作者:
15540241206
時間:
2021-9-8 11:04
沒啥用 調試了一下沒反應 白充了!!!!!
作者:
ZHAOBAO511
時間:
2022-6-28 10:42
直接發(fā)送沒反應:delayms(200);
Uart4_SendData1();
delayms(200);
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1