#d">
51串口通信c程序--模塊集合

51串口通信c程序--模塊集合

ID:34627745

大?。?3.50 KB

頁數(shù):4頁

時(shí)間:2019-03-08

51串口通信c程序--模塊集合_第1頁
51串口通信c程序--模塊集合_第2頁
51串口通信c程序--模塊集合_第3頁
51串口通信c程序--模塊集合_第4頁
資源描述:

《51串口通信c程序--模塊集合》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、本文以51單片機(jī)控制四路開關(guān)量輸入/六路開關(guān)量輸出為例,設(shè)計(jì)了一個(gè)簡單的上位機(jī)下位機(jī)通信作品,作為模塊學(xué)習(xí)和整理,供讀者參考!難為,2010-11-28,于上海!四路開關(guān)量輸入/六路開關(guān)量輸出C語言程序#include#defineuintunsignedint#defineucharunsignedcharucharindata[4];ucharoutdata[4];volatileuchartemp1=0,temp2=0;uchari,j;voidinitial_comm(void

2、){SCON=0x50;//設(shè)定串行口工作方式:mode1;8-bitUART,enableucvrTMOD=0x21;//TIMER1;mode2;8-BitReloadPCON=0x80;//波特率不加倍SMOD=1TH1=0xfa;//baud:9600;fosc=11.0596IE=0x90;//enableserialinterruptTR1=1;//timer1}voiduart_send(void){ES=0;if(indata[3]==indata[0]^indata[1]^indata

3、[2]){if(indata[1]==0x01){temp1=P0;temp1=temp1&0x0f;outdata[0]=0xee;outdata[1]=0x02;outdata[2]=temp1;outdata[3]=outdata[0]^outdata[1]^outdata[2];for(i=0;i<4;i++){SBUF=outdata[i];while(TI==0);TI=0;}}if(indata[1]==0x03){temp2=indata[2];P1=temp2;}if(indata[1

4、]==0x04){outdata[0]=0xee;outdata[1]=0x05;outdata[2]=temp2;outdata[3]=outdata[0]^outdata[1]^outdata[2];for(i=0;i<4;i++){SBUF=outdata[i];while(TI==0);TI=0;}}}ES=1;}voidmain(){initial_comm();ES=1;while(1){uart_send();}}voiduart_receive(void)interrupt4{RI=0;

5、for(j=0;j<4;j++){indata[j]=SBUF;while(RI==0);RI=0;}}四路開關(guān)量輸入/六路開關(guān)量輸出通訊協(xié)議通信設(shè)置:波特率9600b/s1位起始位8位數(shù)據(jù)位無校驗(yàn)位1位停止位命令格式:區(qū)別碼(1字節(jié))+Command(1字節(jié))+Content(1字節(jié))+Xor(1字節(jié))區(qū)別碼:上位發(fā)送/單片機(jī)接收:0xff單片機(jī)發(fā)送/上位機(jī)接收:0xeeCommand=0x01上位機(jī)命令單片機(jī)讀取四路輸入開關(guān)量的輸入狀態(tài)如:0xff+0x01+0x00+XorCommand=0x02

6、單片機(jī)返回四路輸入狀態(tài)給上位機(jī)此時(shí),Content的1字節(jié)中的低四位分別表示四路開關(guān)量的輸入狀態(tài)1表示輸入高電平,0表示輸入低電平第一路輸入(第0位)第二位輸入(第1位)第三路輸入(第2位)第四路輸入(第3位)如:假設(shè)某一時(shí)刻四路輸入開關(guān)量的輸入狀態(tài)為0x03,上位機(jī)讀取其狀態(tài)為:0xee+0x02+0x03+XorCommand=0x03上位機(jī)命令單片機(jī)控制六路輸出的輸出狀態(tài)此時(shí),Content的1字節(jié)中的低六位分別表示六路開關(guān)量的輸出狀態(tài)1表示輸出高電平,0表示輸出低電平第一路輸出(第0位)第二路輸

7、出(第1位)第三路輸出(第2位)第四路輸出(第3位)第五路輸出(第4位)第六路輸出(第5位)如:上位機(jī)欲設(shè)置某一時(shí)刻六路輸出開關(guān)量的輸出狀態(tài)為0x01:0xff+0x03+0x01+XorCommand=0x04上位機(jī)命令單片機(jī)讀取六路輸出開關(guān)量的輸出狀態(tài)如:0xff+0x04+0x00+XorCommand=0x05單片機(jī)返回六路輸出狀態(tài)給上位機(jī)此時(shí),Content的1字節(jié)中的低六位分別表示六路開關(guān)量的輸出狀態(tài)1表示輸出高電平,0表示輸出低電平第一路輸出(第0位)第二路輸出(第1位)第三路輸出(第2位

8、)第四路輸出(第3位)第五路輸出(第4位)第六路輸出(第5位)如:某一時(shí)刻六路輸出開關(guān)量的輸出狀態(tài)為0x01,上位機(jī)讀取其狀態(tài)為:0xee+0x05+0x01+XorContent:表示四路輸入開關(guān)量的輸入狀態(tài)(數(shù)據(jù))或者六路輸出開關(guān)量的輸出狀態(tài)(數(shù)據(jù)),在不使用它的命令格式中,它的值無意義,為通信方便,在不使用它的命令格式中,規(guī)定其值為0x00;Xor:從第一個(gè)字節(jié)開始到Xor的前一個(gè)字節(jié)(總共3個(gè)字節(jié)),做異或運(yùn)算

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。