?? transmmit_new.c
字號:
//產生四階m序列,并將其漢明編碼后從p1.4口發出,同時p3.3口發出時鐘同步信號
//使用定時器0的中斷方式
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define V_TH0 0xF1
#define V_TL0 0x9A//3686 F19A
#define V_TH1 0xE6
#define V_TL1 0xCD
void hamingcode();
sbit P1_4 = P1^4;//clock
sbit P3_3 = P3^3;//data
sbit m_seria = P3^5;
bit flag;
int f1,f2;
uchar i,k,m_counter;
uchar xdata R;
uchar xdata H;
uchar xdata M;
int H_count;
timer0() interrupt 1 using 1
{
EA=0;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
f1=1;
EA=1;
}
timer1() interrupt 3 using 2
{
EA=0;
TH1=V_TH1;
TL1=V_TL1;
TR1=1;
if(i<7 && k==28)
{
if( (M & 0x01)==0x01 )
m_seria = 1;
else
m_seria = 0;
m_counter++;
M=M>>1;
}
if(i==7)
{
ET1=0;
TR1=0;
}
EA=1;
}
void hamingcode()
{
switch(R)
{
case 0x00: H=0x00; break;
case 0x01: H=0x0B; break;
case 0x02: H=0x15; break;
case 0x03: H=0x1E; break;
case 0x04: H=0x26; break;
case 0x05: H=0x2D; break;
case 0x06: H=0x33; break;
case 0x07: H=0x38; break;
case 0x08: H=0x47; break;
case 0x09: H=0x4C; break;
case 0x0A: H=0x52; break;
case 0x0B: H=0x59; break;
case 0x0C: H=0x61; break;
case 0x0D: H=0x6A; break;
case 0x0E: H=0x74; break;
case 0x0F: H=0x7F; break;
default: break;
}
i=0;
ET1=1;
TR1=1;
}
main ()
{
uchar xdata f,m,j;
k=0;
P3_3=0;
flag=0;
f=0;
f1=0;
m_counter=0;
m_seria=0;
R=0x08;
M = R;
hamingcode();
ET1=1;
TR1=0;
TMOD=0x11;
TH0=V_TH0;
TL0=V_TL0;
TH1=V_TH1;
TL1=V_TL1;
EA=1;
ET0=1;
TR0=1;
IP=0x02;
m_seria =0;
while(1)
{
if(f1==1)
{
f1=0;
if(i==8)
hamingcode();
if(k<19)
{
P3_3=0;
k++;
}
else if( k>=19 && k<27)
{
P3_3=1;k++;
}
else
{
k=28;
if( (H & 0x01)==0x01 )
P3_3=1;
else
P3_3=0;
H=H>>1;
i++;
H_count++;
}
}
if( k==27 )
{
ET1=1;
TR1=1;
}
if(i==7)
{
for(j=0;j<4;j++)
{
m=R;
m=m >> 1;
f=R << 3;
R=R ^ f;
R=R & 0x08;
R=R | m;
R=R & 0x0F;
}
M = R;
i++;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -