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

📄 tankex.c

📁 本人学习单片机一年多时间厚参加全国电子设计大赛的程序以及赛前练习的程序。
💻 C
字号:
#include<reg51.h>

sbit P1_0=P1^0;
sbit P1_7=P0^7;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_3=P2^3;

unsigned int CODE[8]={0x77,0x33,0xbb,0x99,0xdd,0xcc,0xee,0x66};
unsigned int now=1,qian;
unsigned int i,a=0;
unsigned char deng;

void delay(unsigned int);
void Init(void);
void panduan(void);
void zuozhuan(void);
void youzhuan(void);
void huifu(void);
void qianjin(void);
void tingzhi(void);
void houtui(void);

main()
{Init();
 for(;;)             //000 000 00     任意传感器检测到黑线就跳出
 {if(P2_3==0)
   break;
  }

 for(;;)
 {deng=P2&0x1C;
  if(deng==0x00)
   break;            //循迹
  panduan();
  }
 tingzhi();    
 P1_7=0;      
 
 //C
 delay(5000);
 P1_7=0;

 qianjin();         //循迹
 for(;;)
 {deng=P2&0x1C;
  if(deng==0x00)
   break;
  panduan();
  }
  P1_7=0;

  tingzhi();
  delay(5000);
  P1_7=0;

  houtui();
  for(;;)
  {if(P2_3==0)
    a++;
   if(a==2)
	 break;
   }

  for(;;)
  {deng=P2&0x1C;
  if(deng==0x00)
   break;
  panduan();
  }
  for(;;);
}

void Init(void)
{P1_0=0;
 P1_1=1;
 P1_2=1;
 P1_3=0;
}

void panduan(void)
{
//记录当前状态,和先前状态
 if(deng==0x1C)     // 000 111 00
  {qian=now;
   now=1;
   }
  else if(deng==0x14)// 000 101 00
 {qian=now;
  now=2;
  }
  else if(deng==0x04)// 000 001 00
  {qian=now;
   now=3;
   }
  else if(deng==0x0C)// 000 011 00
  {qian=now;
   now=4;
   }
  else if(deng==0x10)// 000 100 00
  {qian=now;
   now=5;
   }
  else if(deng==0x18)// 000 110 00
  {qian=now;
   now=6;
   }
  else if(deng==0x00)// 000 000 00
  {qian=now;
   now=7;
   }
  else if(deng==0x08)// 000 010 00
  {qian=now;
   now=8;
   }

//  判断
  if(now==1)
  {if(qian==3||qian==4)
   {zuozhuan();
	 }
	else if(qian==5||qian==6)
	{youzhuan();
	 }
	else
	{delay(20);
	 }
	}
  else if(now==2)
  {huifu();
   }
  else if(now==3)
  {if(qian==1)
   {huifu();
    }
   else if(qian==2)
   {zuozhuan();
    }
	else if(qian==5||qian==6)
	{zuozhuan();
	 }
   else
   {delay(20);
	 }
   }
  else if(now==4)
  {zuozhuan();
   }
  else if(now==5)
  {if(qian==1)
   {huifu();
    }
   else if(qian==2)
   {youzhuan();
    }
   else if(qian==3||qian==4)
   {youzhuan();
    }
   else
   {delay(20);
	 }
   }
 else if(now==6)
  {youzhuan();
   }
 else if(now==7)
  {;
   }
 else if(now==8)
  {;
   }
}

void zuozhuan(void)
{P1_2=0;
 P1_3=0;
 }

void youzhuan(void)
{P1_0=0;
 P1_1=0;
 }

void huifu(void)
{P1_0=0;
 P1_1=1;
 P1_2=1;
 P1_3=0;
 }

void qianjin(void)
{P1_0=0;
 P1_3=0;
 P1_1=1;
 P1_2=1;
}
void houtui(void)
{P1_0=1;
 P1_1=0;
 P1_2=0;
 P1_3=1;

}
void tingzhi(void)
{P1_0=0;
 P1_1=0;
 P1_2=0;
 P1_3=0;
 }

void delay(unsigned int z)
{unsigned int x,y;
 for(x=0;x<z;x++)
  for(y=0;y<124;y++)
   ;
}

⌨️ 快捷键说明

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