📄 readad.c
字号:
#include"2407regs.h"
int ad,templ,tempf,tempr,distant,i,adcheck;
int checkad(char choice){//选择红外传感器,并进行软件滤波
int psd;
adcheck=0;
switch(choice){
case 'l': for(i=500;i>=0;i--){
psd=RESULT0>>6;
if(psd<=distant) adcheck++;
else adcheck--;
} break;
case 'f': for(i=500;i>=0;i--){
psd=RESULT1>>6;
if(psd<=distant) adcheck++;
else adcheck--;
} break;
case 'r': for(i=500;i>=0;i--){
psd=RESULT3>>6;
if(psd<=distant) adcheck++;
else adcheck--;
} break;
default:break;
}
if(adcheck>0) {psd=distant-10;return(psd); }// <distant
else {psd=distant+10;return(psd);}// >distant
}
int readad(){
distant=550;//1.6v(15cm)
// templ=RESULT0>>6;
// tempf=RESULT1>>6;
// tempr=RESULT2>>6;
templ=checkad('l');//左边,RESULT0
if(templ<=distant)//距离>=20cm,没有障碍
{
tempf=checkad('f');//中间,RESULT1
if(tempf<=distant)
{
tempr=checkad('r');//右边,RESULT2
if(tempr<=distant) ad=0x000;//三个都没障碍
else ad=0x001;//右边有障碍
}
else
{
tempr=checkad('r');
if(tempr<=distant) ad=0x010;//中间有障碍
else ad=0x011;//中间,右边都有障碍
}
}
else //距离<20cm,有障碍
{
tempf=checkad('f');
if(tempf<=distant)
{
tempr=checkad('r');
if(tempr<=distant) ad=0x100;//左边有障碍
else ad=0x101;//左边,右边有障碍
}
else
{
tempr=checkad('r');
if(tempr<=distant) ad=0x110;//左边,中间有障碍
else ad=0x111;//左边,中间,右边都有障碍
}
}
return ad;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -