我收到这些错误:
error: lvalue required as left operand of assignment
error: void value not ignored as it ought to be
基本上,我有一个i2c电容式触摸控制器,我会不断进行扫描,然后检查扫描的数据,然后根据需要执行d操作,然后重复执行。
这是我的代码:
#include <avr/io.h>
#include <util/delay.h>
#include "i2cmaster.h"
#define mpr03x 0x4A
int main(void)
{
unsigned char tou;
DDRA = 0xff;
DDRB = 0xff;
PORTA = 0x03;
_delay_ms(500);
PORTA = 0x00;
i2c_init(); //Initialize I2C
i2c_start_wait(mpr03x+I2C_WRITE); //Set device address and write mode
i2c_write(0x44); //Write address = 68
i2c_write(0x03); //Calibration = ON, Runmode = 1, Enabled = ELE0, ELE1, ELE2
while(1)
{
PORTA = 0x01;
i2c_start_wait(mpr03x=I2C_WRITE); //Set device address and write mode
i2c_write(0x00); //Write address = 68
i2c_rep_start(mpr03x+I2C_READ); // set device address and read mode
tou = i2c_readNak;
i2c_stop;
if(tou == 0x00); //If no pads are pressed
{
PORTA = 0x00;
_delay_ms(1);
}
else
{
if(tou == 0x01); //If pad 1 is pressed
{
PORTA = 0x05;
if(tou == 0x02); //If pad 2 is pressed
{
PORTA = 0x09;
if(tou == 0x03); //If pad 3 is pressed
{
PORTA = 0x11;
_delay_ms(1000);
}
}
else
{
if(tou == 0x02); //If pad 2 is pressed
{
PORTA = 0x09;
if(tou == 0x03); //If pad 3 is pressed
{
PORTA = 0x11;
_delay_ms(1000);
}
else
{
if(tou == 0x03);//If pad 3 is pressed
{
PORTA = 0x11;
_delay_ms(1000);
}
}
}
}
}
}
}`
任何帮助将不胜感激。
最佳答案
这肯定会引起问题:
i2c_start_wait(mpr03x=I2C_WRITE); //Set device address and write mode
^
...因为
mpr03x
不是变量。我的假设是在最后一行的代码中实际上没有反引号,但无论如何我都会提到。
正如其他人指出的那样,
i2c_stop;
看起来像一个错误。关于c - 错误:左值必须作为赋值的左操作数,错误:空值不能忽略,因为它应该是,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24458079/