⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hamming编码解码c51程序.txt

📁 用C51程序实现的Hamming编码器和解码器
💻 TXT
字号:
/*汉明(Hamming)码是一种可以纠正一位差错的编码*/

/*-------------------------------
名称:汉明(Hamming)码编、解码的C51源程序
版本:第一版
日期:2004-7-30
作者:liqu
---------------------------------*/
#include<reg51.h>
#define uchar unsigned char
sbit ACC0=ACC^0;
sbit ACC1=ACC^1;
sbit ACC2=ACC^2;
sbit ACC3=ACC^3;
sbit ACC4=ACC^4;
sbit ACC5=ACC^5;
sbit ACC6=ACC^6;
sbit ACC7=ACC^7;
sbit B0=B^0;
sbit B1=B^1;
sbit B2=B^2;
sbit B3=B^3;
sbit B4=B^4;
sbit B5=B^5;
sbit B6=B^6;
sbit B7=B^7;
uchar code HammingArray[8]={0,0,0,0x04,0,0x10,0x20,0x40};/*解码表,第一位为不出
错,需修正的仅是数据的四位,即D2,D4,D5,D6。*/

/*------------------
编码
入口: 待编码数值(4bit)位于低四位。
计算公式:设数值为D3D2D1D0
B0=D3D1D0的奇偶校验;
B1=D3D2D0的奇偶校验
B3=D3D2D1的奇偶校验
编码后,数值位于D6D5D4D2,添加码位于D3D1D0
------------------*/
uchar HammingBM(uchar aa)
{
B=0;
aa&=0x0f;
ACC=aa;
ACC&=0x0b;
B0=P;
ACC=aa;
ACC&=0x0d;
B1=P;
ACC=aa;
ACC&=0x0e;
B3=P;
ACC=aa;
ACC6=ACC3;ACC5=ACC2;ACC4=ACC1;ACC2=ACC0;
aa=ACC;aa|=B;
return(aa);
}

/*-----------------------------
解码
异或运算1,就是将该位取反。异或运算0,该位不变。
出口:解码后的数据(四位)位于低四位。
------------------------------*/
uchar HammingJM(uchar aa)
{
B=0;ACC=aa;
ACC&=0x55;
B0=P;
ACC=aa;
ACC&=0x66;
B1=P;
ACC=aa;
ACC&=0x78;
B2=P;
aa^=HammingArray[B];ACC=aa;/*将相应出错位取反,未出错,则不变。*/
ACC0=ACC2;ACC1=ACC4;ACC2=ACC5;ACC3=ACC6;
ACC&=0x0f;
return(ACC);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -