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

📄 transmmit_new.c

📁 是一个利用单片机C语言生成各阶M序列的程序
💻 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 + -