📄 xuanya._c
字号:
/************功能介绍************************/
广州双龙电子
WWW.SL.COM.CN
Chip type : ATMEGA16
Clock frequency : 8MHz
/********************************************
自走车,机器人向前方行走,实现自动避悬崖障碍
PB2声控启动
前方碰到障碍,机器人后退,左转,前进
左方碰到障碍,机器人后退,右转,前进
右方碰到障碍,机器人后退,左转,前进
前方碰到悬涯,机器人后退,左转,前进
左方碰到悬涯,机器人后退,右转,前进
右方碰到悬涯,机器人后退,左转,前进
左侧和右侧同时碰到悬涯,机器人停止待命,同时PA口的LED流水灯显示,
电机驱动信号 led灯指示电机状态
PD = 0xA0;//前行 //1010 0000//P0 = 0xC3;//1100,0011
PD = 0x60;//快速左转//0110 0000//P0 = 0x33;//0011,0011
PD = 0x20;//慢速左转//0010 0000//P0 = 0xF3;//1111,0011
PD = 0x90;//快速右转//1001 0000//P0 = 0xCC;//1100,1100
PD = 0x80;//慢速右转//1000 0000//P0 = 0xCF;//1100,1111
PD = 0x50;//后退 //0101 0000//P0 = 0x3C;//0011,1100
********************************************/
#include <iom16v.h>
#include <macros.h>
#define xuanya_delayms 300
#include <diy0206.c>
unsigned char pa,pb,pc,pd;
void xuanya_car(void)
{
port_init(); //PA,PB,PC,PD 初始化
mic_startup(); //等待声控启动
while(1)
{//左(pc7) 中(pc6) 右(pc5)
switch(PINB&0x0b)
{
case 0x09:forward();delay_ms(touch_time); turn_left();delay_ms(touch_time);break;
// 0b 0000,1001 尾部开关接触 ,前行,左转
case 0x0a:backward();delay_ms(touch_time);turn_left();delay_ms(touch_time); break;
//右侧开关接触 ,后退,左转
case 0x03:backward();delay_ms(touch_time);turn_left();delay_ms(touch_time);break;
//左侧开关接触,后退,左转
case 0x02:stop();delay_ms(touch_time*4); break;
// 0b 0000,0010 两侧开关同时接触,停止运动,熄灭指示灯
}
pc = PINC & 0xE0;
if(pc == 0x40)
{//后退//左转
backward();//后退
delay_ms(xuanya_delayms);
turn_left();//左转
delay_ms(xuanya_delayms/2);
}
if(pc == 0x80)
{//后退//左转
backward();//后退
delay_ms(xuanya_delayms);
turn_left();//左转
delay_ms(xuanya_delayms/2);
}
if(pc == 0x20)
{//后退//左转
backward();//后退
delay_ms(xuanya_delayms);
turn_left();//左转
delay_ms(xuanya_delayms/2);
}
if(pc == 0xc0)
{//后退//左转
backward();//后退
delay_ms(xuanya_delayms);
turn_left();//左转
delay_ms(xuanya_delayms/2);
}
if(pc == 0x60)
{//后退//左转
backward();//后退
delay_ms(xuanya_delayms);
turn_left();//左转
delay_ms(xuanya_delayms/2);
}
if(pc == 0xE0)
{
//刹车 //led灯为流水灯
stop();
PORTA = 0x3C;
delay_ms(xuanya_delayms);
PORTA = 0xC3;
delay_ms(xuanya_delayms);
}
else
{
forward();//前行
}
}
}
void main()
{
xuanya_car();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -