欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機串口通行與多機通信程序源碼
[打印本頁]
作者:
1339337425
時間:
2019-3-10 21:30
標題:
單片機串口通行與多機通信程序源碼
(一)1號機通信程序設計
1、1號機初始化函數
1號機采用定時發(fā)送命令,等待接收數據的方式,使用初始化函數對串行口、定時器進行初始化。
void csh1()
{
SM0 = 0; //串行口通信方式1,8位異步通信
SM1 = 1;
REN = 1; //允許接收
PCON = 0x80; //波特率加倍
TMOD = 0x20; // T1作波特率發(fā)生器,方式2
TH1 = 0xd0; //選定波特率
TL1 = 0xd0;
TR1 = 1; //起動定時器
}
2、1號機發(fā)送程序
兩臺機器之間約定一個命令字節(jié)格式,假設2號機接收到該命令字節(jié),就向1號機發(fā)送溫度數據,1號機接收到該溫度數據后顯示在數碼管上。1號機定時發(fā)送請求命令字節(jié)。
1號機的主程序:
Void main()
{
csh1(); //初始化串行口、定時器
while(1)
{
delay(); //延時
SBUF = 0xa5; //發(fā)送給1號機請求數據命令
while(~TI){ ; } //等待串行發(fā)送結束
TI = 0; //發(fā)送標志清零
while(~RI) //等待接收2號機發(fā)來的數據
{ ; }
RI = 0; //接收標志清零
wendu = SBUF; //保存接收的數據到wendu單元,供顯示使用
}
}
(二)2號機通信程序設計
2號機接收命令后發(fā)送數據,2號機的初始化函數如下。
2號機采用接收命令后,中斷發(fā)送數據到1號機的方式,使用初始化函數對串行口、定時器、中斷進行初始化。
void csh2()
{
SM0 = 0; //串行口通信方式1,8位異步通信
SM1 = 1;
REN = 1; //允許接收
PCON = 0x80; //波特率加倍
TMOD = 0x20; // T1作波特率發(fā)生器,方式2
TH1 = 0xd0; //選定波特率
TL1 = 0xd0;
TR1 = 1; //起動定時器
EA = 1; //開中斷
ES = 1; //開串行口中斷
}
2號機串行通信中斷服務函數
Void tongxin( ) interrupt 4
{
If( TI == 1 ) TI = 0; //如果是發(fā)送中斷,清發(fā)送中斷標志
else //否則是接收中斷,判斷接收數據是否是命令
{RI = 0; //清除接收中斷標志
If( SBUF == 0xa5 ) SBUF = wendu; } //接收的來自1號機的命令字節(jié),則發(fā)送溫度數據
}
2號機的主程序:
Void main()
{
csh2(); //初始化串行口、定時器
while(1)
{
wdjc(); //溫度檢測函數
delay(); //延時
}
}
作者:
Jeff_BlindCat
時間:
2020-6-29 12:58
言簡意賅多機往,
恍然大悟細思量;
往返BUF帶命名;
地址參量見真章。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1