《简单的曼彻斯特编码的C语言实现》由会员分享,可在线阅读,更多相关《简单的曼彻斯特编码的C语言实现(3页珍藏版)》请在金锄头文库上搜索。
1、简单的曼彻斯特编码的 C 语言实现曼彻斯特编码是减小信号交流分量,实现固定信号占空比的基本方法。用 C 语言实现如下:#include #define uint8_t unsigned char#define uint16_t int#define BOOL int#define TRUE 1#define FALSE 0BOOLapp_ManchesterEncode(uint8_t*indata,uint8_t*outdata,uint16_tinlength);BOOLapp_ManchesterDecode(uint8_t*indata,uint8_t*outdata,uint16_t
2、inlength);uint8_t indata10=0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0x43,0xb8; uint8_t middata20;uint8_t outdata10;uint16_t inlength;int main()int length=10;int i=0;app_ManchesterEncode(indata,middata,length); if(app_ManchesterDecode(middata,outdata,length*2)=FALSE) printf(decode failed!n);printf(in:
3、);for(i=0;ilength;i+)printf( %2.2x,indatai);printf(n);printf(mid:);for(i=0;ilength*2;i+)printf( %2.2x,middatai);printf(n);printf(out:); for(i=0;ilength;i+) printf( %2.2x,outdatai);printf(n);BOOL app_ManchesterEncode(uint8_t *indata,uint8_t *outdata,uint16_t inlength) uint16_t i=0;uint8_t j=0;for(i=0
4、;iinlength;i+)outdata2*i=0; outdata2*i+1=0;for(j=0;j8;j+)if(jj)&0x01)?2:1)j)&0x01)?2:1)(j*2-8);return TRUE;BOOL app_ManchesterDecode(uint8_t *indata,uint8_t *outdata,uint16_t inlength) uint16_t i=0;uint8_t j=0; for(i=0;iinlength/2;i+)outdatai=0; for(j=0;j8;j+)if(j(j*2)&0x03)=0x01);else if(indata2*i+1(j*2)&0x03)=0x02) outdatai|=0x01(j*2-8)&0x03)=0x01)else if(indata2*i(j*2-8)&0x03)=0x02) outdatai|=0x01j;elseprintf(at i=%d j=%dn,i,j);return FALSE;return TRUE;