我在这里做的是,测量8位红外传感器数据。这里,Reflectance_Read(time)
以二进制形式返回8位红外传感器数据。然后将Data
变量中的中间两个传感器值(位号3和4)作为Right
和Left
变量,尝试返回类似OffRoad
、OnRoad
等的内容。
#define OffRoad = 0x0
#define OffToLeft = 0x1
#define OffToRight = 0x2
#define OnRoad = 0x3
#define LeftCheck = 0x10
#define RightCheck = 0x08
uint8_t Reflectance_Center(uint32_t time){
uint8_t Data;
uint8_t Left, Right;
Reflectance_Init();
Data = Reflectance_Read(time);
Left = Data&0x10;
Right = Data&0x08;
if(0){}
else if(Left==LeftCheck && Right==RightCheck) return OnRoad;
else if(Left==LeftCheck && Right!=RightCheck) return OffToRight;
else if(Left!=LeftCheck && Right==RightCheck) return OffToLeft;
else if(Left!=LeftCheck && Right!=RightCheck) return OffRoad;
return 0;
}
但是我从else if(Left==LeftCheck && Right==RightCheck) return OnRoad;
那里得到了一个错误--这句话是error #29: expected an expression
。我不知道是什么导致了这个错误。
#define OFFROAD 0x0
#define OFFTOLEFT 0x1
#define OFFTORIGHT 0x2
#define ONROAD 0x3
#define LEFTCHECK 0x10
#define RIGHTCHECK 0x08
我已以正确的形式更改了我的#define
。我的问题解决了!
发布于 2021-12-31 10:52:05
#define LeftCheck = 0x010;
这种语法是不正确的(或者说,至少它可能不是您想要的)。把它改成
#define Leftcheck 0x010
也适用于您定义的所有其他定义。
https://stackoverflow.com/questions/70541499
复制相似问题