![51通訊協(xié)議-奇偶校驗(yàn)_第1頁](http://file4.renrendoc.com/view/32abb8119305563d905a1b700e0a9c35/32abb8119305563d905a1b700e0a9c351.gif)
![51通訊協(xié)議-奇偶校驗(yàn)_第2頁](http://file4.renrendoc.com/view/32abb8119305563d905a1b700e0a9c35/32abb8119305563d905a1b700e0a9c352.gif)
![51通訊協(xié)議-奇偶校驗(yàn)_第3頁](http://file4.renrendoc.com/view/32abb8119305563d905a1b700e0a9c35/32abb8119305563d905a1b700e0a9c353.gif)
![51通訊協(xié)議-奇偶校驗(yàn)_第4頁](http://file4.renrendoc.com/view/32abb8119305563d905a1b700e0a9c35/32abb8119305563d905a1b700e0a9c354.gif)
![51通訊協(xié)議-奇偶校驗(yàn)_第5頁](http://file4.renrendoc.com/view/32abb8119305563d905a1b700e0a9c35/32abb8119305563d905a1b700e0a9c355.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、51通訊協(xié)議一奇偶校驗(yàn)代碼#include at89x52.h戶*類型定義,方便代碼移植*/ typedef unsigned char UINT8;typedef unsigned int UINT16;typedef unsigned long UINT32;typedef char INT8;typedef int INT16;typedef long INT32;typedef bit BOOL;/*大量宏定義,便于代碼移植和閱讀*/ /- 頭部-#define DCMD_CTRL_HEAD1 0 x10 /PC 下傳控制包頭部 1 #define DCMD_CTRL_HEAD2 0
2、x01 /PC 下傳控制包頭部/- 命令碼-#define DCMD_NULL 0 x00 / 命令碼:空操作#define DCMD_CTRL_BELL 0 x01 / 命令碼:控制蜂鳴器#define DCMD_CTRL_LED#define DCMD_REQ_DATA/ 數(shù)據(jù)#define DCTRL_BELL_ON#define DCTRLBELLOFF0 x02 /命令碼:控制LED0 x03 / 命令碼:請(qǐng)求數(shù)據(jù)0 x01 / 蜂鳴器響0 x02 / 蜂鳴器禁鳴#define DCTRL_LED_ON 0 x03 /LED 亮#define DCTRL_LED_OFF 0 x04
3、/LED 滅/頭部#define UCMD_CTRL_HEAD1 0 x20 /MCU 上傳控制包頭 部1#define UCMD_CTRL_HEAD2 0 x01 /MCU 上傳控制包頭 部2/命令碼#define UCMD_NULL 0 x00 / 命令碼:空操作#define UCMD_REQ_DATA 0 x01 / 命令碼:請(qǐng)求數(shù)據(jù)#define CTRL_FRAME_LEN 0 x04 / 幀長(zhǎng)度(不包含數(shù)據(jù) 和校驗(yàn)值)#define PARITY_LEN 0 x01 / 檢驗(yàn)值長(zhǎng)度#define EN_UART() ES=1 / 允許串 口 中斷#define NOT_EN_UA
4、RT() ES=0 / 禁止串 口中斷#define BELL(x) if(x)P0_6=1 ;else P0_6=0; / 蜂鳴器控制宏函數(shù)#define LED(x) if(x)P2=0 x00;elseP2=0 xFF;/LED控制宏函數(shù)define TRUE 1define FALSE 0define HIGH 1define LOW 0define ON 1define OFF 0define NULL (void *)0/*使用結(jié)構(gòu)體對(duì)數(shù)據(jù)包進(jìn)行封裝方便操作數(shù)據(jù)/typedef struct _PKT_PARITYUINT8 m_ucHead1; /首部 1UINT8 m_ucHe
5、ad2; /首部 2UINT8 m_ucOptCode; / 操作碼UINT8 m_ucDataLength; /數(shù)據(jù)長(zhǎng)度UINT8 m_szDataBuf16; 數(shù)據(jù)UINT8 m_ucParity; /校驗(yàn)值為1個(gè)字節(jié)PKT_PARITY;/*使用共用體再一次對(duì)數(shù)據(jù)包進(jìn)行封裝操作數(shù)據(jù)更加方便*/ typedef union _PKT_PARITY_EX(PKT_PARITY r;UINT8 p32; PKT_PARITY_EX;PKT_PARITY_EX PktParityEx; / 定義數(shù)據(jù)包變量BOOL bLedOn=FALSE; /定義是否點(diǎn)亮 LED布爾變量BOOL bBellOn
6、=FALSE; / 定義是否蜂鳴器響布爾變量BOOL bReqData=FALSE; /定義是否請(qǐng)求數(shù)據(jù)布爾變量*函數(shù)名稱:OddParity輸 入:buf要校驗(yàn)的數(shù)據(jù);len校驗(yàn)數(shù)據(jù)的長(zhǎng)輸由:校驗(yàn)值*功能:偶校驗(yàn)*/BOOL OddParity(UINT8 *buf, UINT8 len)(UINT8 i,j;UINT8 data_temp;BOOL bParity;bParity = 1;for(j = 0; j ; 1;return bParity;)戶*函數(shù)名稱:BufClr輸 入:dest 緩沖區(qū);size 緩沖區(qū)大小輸由:無說明:清空緩沖區(qū)*/BOOL BufCpy(UINT8 *
7、 dest,UINT8 * src,UINT32 size) (if(NULL =dest | NULL=src |NULL=size)(return FALSE;)do(*dest+ = *src+;while(-size!=0);return TRUE;)戶*函數(shù)名稱:UartInit*輸入:無*輸由:無*功能描述:串口初始化*/void Uartlnit(void)(SCON=0 x40;T2CON=0 x34;RCAP2L=0 xD9;RCAP2H=0 xFF;REN=1;ES=1;)/* 函數(shù)名稱:UARTSendByte*輸入:b單個(gè)字節(jié)*輸由:無*功能描述:串口發(fā)送單個(gè)字節(jié)*/v
8、oid UARTSendByte(UINT8 b)(SBUF=b;while(TI=0);TI=0;/* * 函數(shù)名稱:UARTSendByte*輸入:b單個(gè)字節(jié)*輸由:無*功能描述:串口發(fā)送單個(gè)字節(jié)*/void UartSendNBytes(UINT8 *buf,UINT8 len) (while(len-)(UARTSendByte(*buf+);)戶*函數(shù)名稱:main*輸入:無*輸由:無*功能描述:函數(shù)主題*/void main(void)(UINT8 i=0;UINT8 ucCheckSum=0;UartInit();/ 串口 初始化EA=1; /開總中斷while(1)(if(bL
9、edOn) /是否點(diǎn)亮 Led(LED(ON);)else(LED(OFF);)if(bBellOn)/是否響蜂鳴器(BELL(ON);)else(BELL(OFF);)if(bReqData)/ 是否請(qǐng)求數(shù)據(jù)(bReqData=FALSE;NOT_EN_UART(); / 禁止串 口 中斷PktParityEx.r.m_ucHead1=UCMD_CTRL_HEAD1;MCU 上傳數(shù)據(jù)幀頭部1PktParityEx.r.m_ucHead2=UCMD_CTRL_HEAD2;/MCU 上傳數(shù)據(jù)幀頭部2PktParityEx.r.m_ucOptCode=UCMD_REQ_DATA;/MCU 上傳數(shù)據(jù)
10、幀命令碼PktParityEx.r.m_ucParity=OddParity(PktParityEx.p,CTRL_FRAME_LEN+PktParityEx.r.m_ucDataLength);/計(jì)算校驗(yàn)值/*這樣做的原因是因?yàn)橛袝r(shí)寫數(shù)據(jù)長(zhǎng)度不一樣,導(dǎo)致PktParityEx.r.m_ucParity 會(huì)由現(xiàn)為0的情況所以使用BufCpy將校驗(yàn)值復(fù)制到相應(yīng)的位置*/BufCpy(&PktParityEx.pCTRL_FRAME_LEN+PktParityEx.r.m_ucDataLength,&PktParityEx.r.m_ucParity,PARITY_LEN);UartSendNByt
11、es(PktParityEx.p,CTRL_FRAME_LEN+PktParityEx.r.m_ucDataLength+PARITY_LEN);/發(fā)送數(shù)據(jù)EN_UART();允許串口中斷戶*函數(shù)名稱:UartIRQ*輸入:無*輸由:無*功能描述:串口中斷服務(wù)函數(shù)*/void UartIRQ(void)interrupt 4static UINT8 uccnt=0;UINT8 uclen;UINT8 ucParity;if(RI) /是否接收到數(shù)據(jù)(RI=0;PktParityEx.puccnt+=SBUF;/ 獲取單個(gè)字節(jié)if(PktParityEx.r.m_ucHead1 =DCMD_CT
12、RL_HEAD1)S否有效的數(shù)據(jù)幀頭部1(if(uccnt;=2 &PktParityEx.r.m_ucHead2!=DCMD_CTRL_HEAD2)/ 是否有效的數(shù)據(jù)幀頭部2(uccnt=0;return;else(uclen=CTRL_FRAME_LEN+PktParityEx.r.m_ucDataLength;/獲取數(shù)據(jù)幀有效長(zhǎng)度(不包括校驗(yàn)值)ucParity=OddParity(PktParityEx.p,uclen);/計(jì)算校驗(yàn)值/*這樣做的原因是因?yàn)橛袝r(shí)寫數(shù)據(jù)長(zhǎng)度不一樣 導(dǎo)致PktParityEx.r.m_ucParity 會(huì)由現(xiàn)為0的情況所以使用BufCpy將校驗(yàn)值復(fù)制到相應(yīng)的位置*/BufCpy(&PktParityEx.r.m_ucParity,&PktParityEx.puclen,PARITY_LEN);if(ucParity!=PktParityEx.r.m_ucParity)/校驗(yàn)值是否匹配uccnt=0;return;switch(PktParityEx.r.m_ucOptCode)/從命令碼中獲取相對(duì)應(yīng)的操作case DCMD_CTRL_BELL: 控制蜂鳴器命令碼if(DCTRL_BELL_ON=PktParityEx.r.m_szDataBuf0)數(shù)據(jù)部分含控制碼(bBellOn=TRUE;)else(bBellOn=FALSE;)bre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《義務(wù)教育法》知識(shí)考試復(fù)習(xí)題庫(含答案)
- (技師)化學(xué)檢驗(yàn)工職業(yè)技能鑒定理論考試題庫(含答案)
- 年產(chǎn)1000噸納米復(fù)合氧化鋯項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025年江西外語外貿(mào)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫含答案解析
- 2025年新疆工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 幼兒園月亮故事活動(dòng)策劃方案五篇
- 標(biāo)線承包合同范本
- 精準(zhǔn)醫(yī)療項(xiàng)目研發(fā)合作合同
- 麻雀的聽評(píng)課記錄
- 承攬貨物運(yùn)輸合同范本
- 房地產(chǎn)調(diào)控政策解讀
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 2024-2025學(xué)年八年級(jí)數(shù)學(xué)人教版上冊(cè)寒假作業(yè)(綜合復(fù)習(xí)能力提升篇)(含答案)
- 《AP內(nèi)容介紹》課件
- 醫(yī)生定期考核簡(jiǎn)易程序述職報(bào)告范文(10篇)
- 安全創(chuàng)新創(chuàng)效
- 《中國(guó)糖尿病防治指南(2024版)》更新要點(diǎn)解讀
- 初級(jí)創(chuàng)傷救治課件
- 2024年社會(huì)工作者(中級(jí))-社會(huì)綜合能力考試歷年真題可打印
- 《處理人際關(guān)系》課件
- 五年級(jí)行程問題應(yīng)用題100道
評(píng)論
0/150
提交評(píng)論