資源描述:
《曼切斯特編解碼51程序.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應用文檔-天天文庫。
1、#include"Manchester.h"/*******************************************************************************程序說明基于單片機的曼徹斯特編碼程序,功能是將一個8位的數(shù)據(jù)(一個字節(jié))進行曼徹斯特編碼曼徹斯特編碼的原則是:電平從高到低跳變表示'1',電平從低到高跳變表示'0'*******************************************************************************//*****************
2、**************************************************************曼徹斯特編碼函數(shù)參數(shù)DataIn:將要進行編碼的單字節(jié)數(shù)據(jù)返回值manchesterOut:編碼后返回的與參數(shù)對應的曼徹斯特編碼值*******************************************************************************/unsignedintCharToManchester(unsignedcharEncode_Data){uintManchesterOut=0;uc
3、hari=0;for(i=0;i<8;i++){if((Encode_Data&0x80)==0x80)//說明該位為1{ManchesterOut=ManchesterOut+1;//寫1ManchesterOut=ManchesterOut<<1;//左移一位,相當于在最低位寫0if(i<7){ManchesterOut<<=1;//移位準備編碼下一位Encode_Data<<=1;//待編碼數(shù)據(jù)左移1位,為下一位數(shù)據(jù)編碼做準備}}elseif((Encode_Data&0x80)==0)//說明該位為0{ManchesterOut<<=1;//不寫1移
4、位相當于寫0ManchesterOut+=1;//寫1if(i<7){ManchesterOut<<=1;//移位準備編碼下一位Encode_Data<<=1;//待編碼數(shù)據(jù)左移1位,為下一位數(shù)據(jù)編碼做準備}}}returnManchesterOut;//返回編碼后的16位值}/*******************************************************************************曼徹斯特譯碼函數(shù)參數(shù)Manchester_In:將要進行編碼的單字節(jié)數(shù)據(jù)返回值Decode_Data:譯碼后返回的與參數(shù)對應的
5、值*******************************************************************************/ucharManchesterToChar(uintManchester_In){ucharDecode_Data=0;ucharj=0;ucharerror=0;for(j=0;j<8;j++){if((Manchester_In&0xc000)==0x8000)//說明該位為10{Decode_Data=Decode_Data+1;if(j<7){Decode_Data<<=1;//移位準備譯碼
6、下一位Manchester_In<<=2;//待譯碼數(shù)據(jù)左移2位,為下一位數(shù)據(jù)譯碼做準備}}elseif((Manchester_In&0xc000)==0x4000)//說明該位為01{//Decode_Data=Decode_Data<<1;//直接左移1位代表寫0if(j<7){Decode_Data<<=1;//移位準備譯碼下一位Manchester_In<<=2;//待譯碼數(shù)據(jù)左移2位,為下一位數(shù)據(jù)譯碼做準備}}else{error=1;break;}}