Sie sind auf Seite 1von 3

#include <REG2051.

H>// unsigned char flag,high,low,speedright,speedleft,i,rout,lout,pwmr_width,pwml_wi dth; void Start(void); void Run(void); void Turnright(void); void Turnleft(void); void forward(char); void reverse(char); void delay(void); void pwmr_setup(void); void pwml_setup(void); #define rout P1_0 #define lout P1_1 void main() { P1=0x40; P3=0xff; high = 80; low = 30; speedright=160; speedleft=160; Start(); while(1) { P3=0x0f; Run(); } } void Start() { char exit,key; exit =1; while(exit) {key=P1_6; if(key==0) {exit=0;} } } void Run() { char left,right,mid; left=P3_0; right=P3_7; mid=P3_1; if(left==1 ) { Turnright(); } if(right==1) { Turnleft(); } if(mid==1) { forward(high); } if((left==0) && (right==0) && (mid==0))

{ reverse(low);} if ((left==1) && (right==1) && (mid==1)) {forward(low);} } void forward(char speed) { P1=0x17; speedright=speed+10; speedleft=speed+10; delay(); } void Turnright() { P1=0x27; speedright=low+5; speedleft=low; delay(); } void Turnleft() { P1=0x1b; speedright=low; speedleft=low+5; delay(); } void reverse(char speed) { P1=0x2b; speedright=speed; speedleft=speed; delay(); } void delay() { unsigned char i,j; for(i=0;i<50;i++) for(j=0;j<50;j++); } void pwmr_setup(){ TMOD = 0; pwmr_width= speedright; EA = 1; ET0 = 1; TR0 = 1; } void pwml_setup(){ TMOD = 1; pwml_width=speedleft; EA = 1; ET1 = 1; TR0 = 1; } void timer0() interrupt 1 { if(!F0) { //Start of High level

F0 = 1; //Set flag rout = 1; //Set PWM o/p pin TF0 = 0; return; TH0 = pwmr_width; //Load timer //Clear interrupt flag //Return

} else { //Start of Low level F0 = 0; //Clear flag rout = 0; //Clear PWM o/p pin TH0 = 255 - pwmr_width; //Load timer TF0 = 0; //Clear Interrupt flag return; //return } } void timer1() interrupt 1 { if(!F1) { //Start of High level F1 = 1; //Set flag lout = 1; //Set PWM o/p pin TF0 = 0; return; TH1 = pwml_width; //Load timer //Clear interrupt flag //Return

} else { //Start of Low level F1 = 0; //Clear flag lout = 0; //Clear PWM o/p pin TH1 = 255 - pwml_width; //Load timer TF0 = 0; //Clear Interrupt flag return; //return }

Das könnte Ihnen auch gefallen