📄 main.c
字号:
#include "main.h"
unsigned char ReadPin(void)
{
unsigned char i;
PORTC = 0XFF; //定义上拉电阻和设置高电平输出
DDRC = 0X00; //为端口引脚定义方向
_NOP(); // 为了同步插入nop 指令
i = PINC; // 读取端口引脚
}
void car_turn(unsigned char mes)
{
switch(mes)
{
/**************************以下为检测障碍物时的执行函数************************************/
case 0x00: forward(); break;
case 0x01: {
back_left();
delay(1000);
for_right();
delay(1000);
}; break;
case 0x02: {
backward();
delay(1000);
for_left();
delay(1000);
}; break;
case 0x03: {
back_left();
delay(1000);
for_right();
delay(1000);
}; break;
case 0x04: {
back_right();
delay(1000);
for_left();
delay(1000);
}; break;
case 0x05: forward(); break;
case 0x06: {
back_right();
delay(1000);
for_left();
delay(1000);
}; break;
case 0x07: {
backward();
delay(1000);
for_left();
delay(1000);
}; break;
/**************************以下为检测黑线时的执行函数************************************/
case 0x30: for_left(); break;
case 0x28: forward(); break;
case 0x18: for_right(); break;
case 0x20: for_left(); break;
case 0x08: for_right(); break;
case 0x38: backward(); break;
default: forward(); break;
}
}
void main()
{
unsigned char mesg,mesc;
unsigned char pin;
init_lcd(); //初始化液晶
LCD_write_string(0,0,"auto car"); //显示信息
LCD_write_string(0,1,"ATMega 16");
while(1)
{
pin = 0x00; //初始化引脚信息
mesg = 0x00;
mesc = 0x00;
pin = ReadPin(); //读取引脚信息
mesc|= pin&0x07; //屏蔽光电传感器干扰,检测障碍物
mesg|= pin&0x38; //屏蔽超声波干扰,检测黑线
if(mesc)
car_turn(mesc);
else
car_turn(mesg);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -