#include<reg52.h> sbitrs=P0^0; sbitrw=P0^1; sbiten=P0^2; sbitsensera=P1^0; sbitsenserb=P1^1; sbitsenserc=P1^2; sbitsenserd=P1^3; sbitin1=P1^4; sbitin2=P1^5; sbitin3=P1^6; sbitin4=P1^7; intleft_low,left_high,right_low,right_high; unsignedchar leftsign,rightsign; unsignedchar leftback,rightback; voidtimer0init() { TMOD=0x01; TH0=0x00; TL0=0x00; EA=1; ET0=1; TR0=1; } voidtimer0(void) interrupt 1 { if(leftback) { leftsign=!leftsign; if(!leftsign) { TH0 =(65536-left_low)/256; TL0 =(65536-left_low)%256; in1=0; in2=0; } if(leftsign) { TH0=(65536-left_high)/256; TL0=(65536-left_high)%256;; in1=1; //μ1×a in2=0; } } else { leftsign=!leftsign; if(!leftsign) { TH0=(65536-left_low)/256; TL0=(65536-left_low)%256; in1=0; in2=0; } if(leftsign) { TH0=(65536-left_high)/256; TL0=(65536-left_high)%256;; in1=0; in2=1; } } } voidtimer1init() { TMOD=0x10; TH1=0x00; TL1=0x00; EA=1; ET1=1; TR1=1; } voidtimer1(void) interrupt 3 {if(rightback) { rightsign=!rightsign; if(!rightsign) { TH1=(65536-right_low)/256; TL1=(65536-right_low)%256; in3=0; in4=0; } if(rightsign) { TH1=(65536-right_high)/256; TL1=(65536-right_high)%256; in3=1; in4=0; } } else { rightsign=!rightsign; if(!rightsign) { TH1=(65536-right_low)/256; TL1=(65536-right_low)%256; in3=0; in4=0; } if(rightsign) { TH1=(65536-right_high)/256; TL1=(65536-right_high)%256; in3=0; in4=1; } } } voidtestsenser() //×ó Ö± óò í£ oó£¨01234£©′ó1Õ D¡1Õ ÎTòaò壨310£© { if((sensera==0&&senserb==0&&senserc==0&&senserd==1)||(sensera==0&&senserb==1&&senserc==1&&senserd==1))// óò′ó1Õ { leftback=0; rightback=1; ET0=1; ET1=1; left_high=20000; left_low=40000; right_high=20000; right_low=40000; } elseif((sensera==0&&senserb==0&&senserc==1&&senserd==1)||(sensera==0&&senserb==0&&senserc==1&&senserd==0))// óòD¡1Õ { leftback=0; rightback=1; ET0=1; ET1=1; left_high=20000; left_low=40000; right_high=10000; right_low=40000; } elseif((sensera==1&&senserb==0&&senserc==0&&senserd==0)||(sensera==1&&senserb==1&&senserc==1&&senserd==0)) // ×ó′ó1Õ { leftback=1; rightback=0; ET0=1; ET1=1; left_high=20000; left_low=40000; right_high=20000; right_low=40000; } elseif((sensera==1&&senserb==1&&senserc==0&&senserd==0)||(sensera==0&&senserb==1&&senserc==0&&senserd==0)) // ×óD¡1Õ { leftback=1; rightback=0; ET0=1; ET1=1; left_high=10000; left_low=40000; right_high=20000; right_low=40000; } elseif(sensera==1&&senserb==1&&senserc==1&&senserd==1)// í£ { leftback=0; rightback=0; ET0=0; ET1=0; in1=0; in2=0; in3=0; in4=0; } else if(sensera==0&&senserb==0&&senserc==0&&senserd==0)//oóíË { leftback=1; rightback=1; ET0=1; ET1=1; left_high=10000; left_low=50000; right_high=10000; right_low=50000; } else //Ö±×ß { leftback=0; rightback=0; ET0=1; ET1=1; left_high=10000; left_low=50000; right_high=20000; right_low=50000; } } voidmain() { timer0init(); timer1init(); while(1) testsenser(); }
|