?? remote_light.c
字號:
//追光機器人 和 遙控機器人程序
//將 pd0 接低電平,pd3,pd2,pd1 保持高電平
// 或按下遙控器<A>(保持 0.5s) 進入遙控機器人運行環境
//將 pd1 接低電平,pd3,pd2,pd0 保持高電平
// 或按下遙控器<B>(保持 0.5s) 進入追光機器人運行環境
//將 sl3010.c 文件拷貝到 icc avr 安裝目錄的<include>文件夾
//sl3010.c 是sl3010機器人的子函數庫
//程序中調用此文件后 #include <sl3010.c>
//可直接調用里面的函數和變量
/*
void port_init(); //PA,PB,PC,PD 初始化
void delay_us(int time); //微妙級延時
void delay_ms(unsigned int time);//毫秒級延時
void sw_touch(); //檢測輕觸開關
void mic_startup(); //等待聲控啟動
void remote_auto_time(); //遙控器控制直行和轉彎時間
void turn_right(); //右轉
void turn_left(); //左轉
void turn_right_s(); //慢速右轉
void turn_left_s(); //慢速左轉
void backward(); //后退
void forward(); //前行
void stop(); //停止運動
*/
//更新日期 2003.03.17
#include <io8515v.h>
#include <macros.h>
#include <sl3010.c> //調用sl3010小車的子函數庫
#define light_delay 100
unsigned char cds;
void remote_car()
{//遙控車程序
unsigned char remote_in,led,timers;
led = 0x00;
for(timers=0;timers<7;timers++)
{//8 LED 整體亮滅閃爍
PORTA = led;
delay_ms(500);
led = ~led;
}
work_status = 0x60;//置對應的工作狀態標志
mic_startup();//等待聲控啟動函數
while(1)
{
sw_touch();//檢測輕觸開關
remote_in = PINB & 0x0F;
switch (remote_in)
{//檢測遙控器是否有鍵按下
case 0x04: // < A >
turn_right(); //右轉
break;
case 0x02: // < B >
backward(); //后退
break;
case 0x08: // < C >
stop(); //停止運動
break;
case 0x01: // < D >
turn_left(); //左轉
break;
case 0x00:
forward(); //前行
break;
}
delay_ms(100);
}
}
void trace_light()
{
unsigned char cds,led,timers;
led = 0xc3;
for(timers=0;timers<9;timers++)
{//8 LED 整體亮滅閃爍
PORTA = led;
delay_ms(500);
led = ~led;
}
work_status = 0x70; //置對應的工作狀態標志
mic_startup(); //等待聲控啟動
while(1)
{
sw_touch(); //檢測輕觸開關
cds = PINC & 0x06; //0b0000,0110
if(cds == 0x00) //左右兩側都感測到光
{//直行
forward();
delay_ms(light_delay); //延時
}
if(cds == 0x02) //0b0000,0010___pc2(右側)感測到光
{//慢速右轉
turn_right_s();
delay_ms(light_delay); //延時
}
if(cds == 0x04) //0b0000,0100___pc1(左側)感測到光
{//慢速左轉
turn_left_s();
delay_ms(light_delay); //延時
}
if(cds == 0x06)
{//停止動作
PORTA = 0x55; //延時后停止動作,等待光照重新動作
delay_ms(light_delay*2);
stop();
}
}
}
void main()
{
unsigned char pd_select,remote_select;
port_init(); //PA,PB,PC,PD 初始化
work_status = 0x67; //置對應的工作狀態標志
PORTA = 0x7e;
while(1)
{
pd_select = PIND & 0x0f;
if(pd_select == 0x0e)//pd0=0,其它為高電平
{
while(1)
{
delay_ms(500);//消除抖動
pd_select = PIND & 0x0f;
if(pd_select == 0x0e)//pd0=0,其它為高電平
{remote_car();}//運行遙控車程序
else
break;
}
}
if(pd_select == 0x0d)//pd1=0,其它為高電平
{
while(1)
{
delay_ms(500);//消除抖動
pd_select = PIND & 0x0f;
if(pd_select == 0x0d)//pd1=0,其它為高電平
{trace_light();}//運行遙控車程序
else
break;
}
}
remote_select = PINB & 0x0f;//檢測遙控器是否有鍵按下
if(remote_select == 0x04)// A
{
while(1)
{
delay_ms(500);//消除抖動
remote_select = PINB & 0x0f;
if(remote_select == 0x04)// A
{remote_car();}//運行遙控車程序
else
break;
}
}
if(remote_select == 0x02)// B
{
while(1)
{
delay_ms(500);//消除抖動
remote_select = PINB & 0x0f;
if(remote_select == 0x02)// B
{trace_light();}//運行追光機器人程序
else
break;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -