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

📄 51single-2.c

📁 周立功试验板上的一个程序
💻 C
字号:
#include<reg52.h>
#include<display_s.h>
unsigned char data disbuf[5],buf[5]={0x00,0x00,0x00,0x00,0x00};
unsigned char pf;
void init (void)
{
  TMOD=0x20;		//T1设置为定时方式2  
  TH1=0xfd;			//设置波特率为9600
  TL1=0xfd;			
  PCON=0x00;		//
  SCON=0x50;		//串口工作方式1
  TR1=1;	
  }

void sendu(unsigned char data *d)
{
   unsigned char i;
   do
   {
      SBUF=0xaa;			//发送联络信息aa
	  while(TI==0);
	  TI=0;
	  while(RI==0);	        //接受B机应答
	  RI=0;
	  }while((SBUF^0xbb)!=0);	//B机未准备好,继续联络
   do
   {
	  pf=0;
	  for(i=0;i<5;i++)
	  {
	    SBUF=d[i];
		pf+=d[i];
		while(TI==0);		//发送一位数据
		TI=0;
		}
	  SBUF=pf;
	  while(TI==0);			//发送校验和
	  TI=0;
	  while(RI==0);			//等待B机应答
	  RI=0;
	}while(SBUF!=0x00);		//回答出错则从发
}

void receive(unsigned char data *d)
{
   unsigned char i;
   do
   {
	  while(RI==0);
	  RI=0;
	  }while((SBUF^0xaa)!=0);		//判断A机请求否
   SBUF=0xbb;						//发送应答信号
   while(TI==0);
   TI=0;
   while(1)
   {
      pf=0;
	  for(i=0;i<5;i++)
	  {
	    while(RI==0);
		RI=0;
		d[i]=SBUF;
		pf+=d[i];
		}
	  while(RI==0);
	  RI=0;
	  if((SBUF^pf)==0)
	  {
	     SBUF=0x00;
		 while(TI==0);
		 TI=0;
		 break;
		 }
	  else
 	  {
	     SBUF=0xff;
		 while(TI==0);
		 TI=0;
		 }
	}
}

void main(void)
{
   unsigned char i;
   init();
   while(1)
   {
   	  	
     receive(disbuf);
	 sendu(buf);
	 for(i=0;i<250;i++)
	 display(disbuf);
	 buf[0]+=1;
	 buf[4]+=1;
	 if(buf[0]==0xf)
	 {
	   buf[0]=0x0;
	   buf[4]=0x0;
	   buf[3]+=1;
	   if(buf[3]==0xf)
	   {
	     buf[3]=0x00;
		 buf[2]+=1;
		 if(buf[2]==0xf)
		 buf[2]=0x00;
		 }
	   }

	  }
}

⌨️ 快捷键说明

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