新手上路
- 积分
- 39
- 金钱
- 39
- 注册时间
- 2015-8-29
- 在线时间
- 1 小时
|
5金钱
大家好!如下是一个简单的电压比较程序,atmega64的PF1作为电压输入,电压比较后PD口控制不同的灯亮。用avr studio4编译,为什么一直出现这个错——lvalue required as left operand of assignment?这是个啥,着急呀?错误指示是倒数第八行的那句 ADMUX=0x01;可是为什么删掉这句后,还是会有错?大神在哪儿,求助啊.......先谢谢啦。
#include <avr/io.h>
#include <util/delay.h>
#define fosc 8000000 //晶振8MHZd
void adc_init(void) //AD通道初始化
{
ADCSRA = 0x00;
ADMUX = 0x60; //ACC参考电压,左对齐
ACSR |= 0x80; //关闭模拟比较器
ADCSRA = 0x85; //使能ADC,中断未使能,32分频
}
unsigned int ADC_Convert(void)
{unsigned int temp1,temp2;
temp1=(unsigned int)ADCL;
temp2=(unsigned int)ADCH;
temp2=(temp2<<8)+temp1;
return(temp2);
}
void adc_isr(void)
{
unsigned int data=0; //variable for ADC result
DDRD=0XFF;
data=ADC_Convert();
if(data>(3*1023)/5)
PORTD=0x04;
else if(data<(2*1023)/5)
PORTD=0x01;
else
lse
PORTD=0x02;
ADCSR=ADCSR|0x40; //start the next conversion
}
int main(void)
{
DDRF=0x00; //设置A口为不带上拉输入;
  ORTF=0x00;
DDRD=0xff; //设置C口为推挽1输出;
  ORTD=0x00;
ADMUX=0x01; //选择第二通道ADC1;
_delay_ms(3000);
while(1);
{
adc_init();
adc_isr();
}
}
|
|