#include <STC12C5A60S2.h> #include <intrins.h> #include "IO.h" #include "delay.h" #include "pwm.h" #include "ADC.h" #include "function.h" #include "uart.h" #define uchar unsigned char #define uint unsigned int float a0,a1; void main() { uint i; PWM_init(); //PWM初始化 init(); //串口初始化 while(1) { STC_ADC(); //ADC初始化函数 //*************AD数据处理 *********** for(i=0;i<50;i++) { a0=a0+ADC_Get0(); delay(5); a1=a1+ADC_Get1(); } a0=a0/50.0; a1=a1/50.0; a0=(a0*5.0)/256.0; a1=(a1*5.0)/256.0; //************************************ if(a0>2.95&&a0<3.05&&a1>2.45&&a1<2.5) { PWM0_set_left (0); //左桨pwm为0(不转) PWM1_set_right (0); //右桨pwm为0(不转) left_r=0; //左桨方向 left_b=1; //左桨刹车0是刹车 right_r=0; //右桨方向 right_b=1; //右桨刹车0是刹车 } if(zidong_shoukong==1) //手动判断 { if(fan==0) //方向判断(该边视角判断) { pwm_straight0(); //向前走直线函数0 pwm_back0(); //向后走直线函数0 turn_left0(); //左转弯函数0 turn_right0(); //右转弯函数0 up_down(); //上升下降函数 left_right0(); //横桨的正转与反转0(左平移右平移) } if(fan==1) //方向判断(该边视角判断) { pwm_straight1(); //向前走直线函数1 pwm_back1(); //向后走直线函数1 turn_left1(); //左转弯函数1 turn_right1(); //右转弯函数1 up_down(); //上升下降函数 left_right1(); //横桨的正转与反转1(左平移右平移) } } if(zidong_shoukong==0) //自动判断 { if(flag==1); { ES=0; if(table=='0') //串口接收'0'电机全部停转 { between_b=0; } if(table=='1') //串口接收'1'直走 { PWM0_set_left (80); PWM1_set_right (80); left_r=0; left_b=1; right_r=0; right_b=1; } if(table=='2') //串口接收'2'后退 { PWM0_set_left (80); PWM1_set_right (80); left_r=1; left_b=1; right_r=1; right_b=1; } if(table=='3') //串口接收'3'左转 { PWM0_set_left (80); PWM1_set_right (80); left_r=1; left_b=1; right_r=0; right_b=1; } if(table=='4') //串口接收'4'右转 { PWM0_set_left (80); PWM1_set_right (80); left_r=0; left_b=1; right_r=1; right_b=1; } if(table=='5') //串口接收'5'左平移 { between_p=0; between_r=0; between_b=1; } if(table=='6') //串口接收'6'右平移 { between_p=0; between_r=1; between_b=1; } flag=0; ES=1; } } } }
转载于:https://www.cnblogs.com/cuisine/p/3348323.html