text1.c

来自「采用红外对管对不同颜色的不同的反射程度;得到不同的高低电平;通过控制占空比来控制」· C语言 代码 · 共 97 行

C
97
字号
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
void delay(uchar);
void time0(uchar,uchar);
void ks();
void panduan();
void lmotor(uchar,uchar);
void rmotor(uchar,uchar);
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;
sbit a=P1^0;
sbit b=P1^1;
sbit c=P1^2;
sbit d=P1^3;
sbit e=P1^4;
uchar m,n,i,j,aa,bb,k;
 void delay(uchar speed)
{ for(i=speed;i>0;i--) _nop_();

}
void lmotor(uchar m,uchar n)
{IN1=1;IN2=0;delay(m);
 IN1=0;IN2=0;delay(n);
}
void rmotor(uchar m,uchar n)
{IN3=1;IN4=0;delay(m);
 IN3=0;IN4=0;delay(n);
}
/*void time0(uchar m,uchar n)
{ TMOD=0x01;
  TH0=50000/256;
  TL0=50000%256;
  aa=m;bb=n;
  EA=1;ET0=1;TR0=1;
 }
 void time00() interrupt 1
 { j++;k++;
 TH0=50000/256;
  TL0=50000%256; 
 }*/
void main()
{
while(1){ panduan();}

}
void panduan()
{  if(a==1&&b==1&&c==0&&d==1&&e==1)//前进
    do{
	   lmotor(90,10);
	   rmotor(90,10);
      }
	while(a==1&&b==1&&c==0&&d==1&&e==1);
   if(a==1&&b==1&&c==1&&d==0&&e==1)//偏左
    do{
	   lmotor(20,10);
	   rmotor(80,10);
      }
	while(a==1&&b==1&&c==1&&d==0&&e==1);
   if(a==1&&b==0&&c==1&&d==1&&e==1)//偏右
    do{
	   lmotor(80,10);
	   rmotor(20,10);
      }
	while(a==1&&b==0&&c==1&&d==1&&e==1);
	if(a==0&&b==1&&c==1&&d==1&&e==1)//严重偏右
    do{
	   lmotor(90,10);
	   rmotor(10,10);
      }
	while(a==0&&b==1&&c==1&&d==1&&e==1);
	if(a==1&&b==1&&c==1&&d==1&&e==0)//严重偏左
    do{
	   lmotor(10,10);
	   rmotor(90,10);
      }
	while(a==1&&b==1&&c==1&&d==1&&e==0);
 
	
	
  

}









⌨️ 快捷键说明

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