atmega128 helperror:预期';'数值常数之前

时间:2018-11-05 01:44:15

标签: atmega

为什么会这样? 我没有看到任何问题。 我不知道该怎么解决。 帮我! ../1105-1.c:在功能“ E_Pulse”中: ../1105-1.c:23:2:错误:预期为';'数值常数之前 ../1105-1.c:25:2:错误:预期为';'在数字常量之前

这些错误是每个功能造成的。

#include<avr/io.h>
#include<util/delay.h>

#define TLCD_RS PORTB.0 
#define TLCD_RW PORTB.1 
#define TLCD_E PORTB.2 
#define TLCD_EN{TLCD_E = 0 ; TLCD_E = 1 ; }
#define DATA PORTC 

void Port_Init(void); 
void E_Pulse(void);
void Func_Set(void);
void TLCD_DATA(unsigned char);
void Init_LCD(void);
void Port_Init(void)
{
DDRB = 0xff;
DDRC = 0xff;
}
void E_Pulse(void)
{
TLCD_E = 1;
_delay_ms(5);
TLCD_E = 0;
}
void TLCD_DATA(unsigned char data)
{
DATA = data;
TLCD_EN;
}
void Init_LCD(void)
{
TLCD_E = 0;
_delay_ms(15);
Func_Set();
_delay_ms(10);
Func_Set();
_delay_ms(150);
Func_Set();
TLCD_DATA(0x0f);
E_Pulse();
TLCD_DATA(0x06);
E_Pulse();
TLCD_DATA(0x01);
E_Pulse();
}
void lcd_char(char s)
{
TLCD_RS = 1;
TLCD_DATA(s);
E_Pulse();
}
void main(void)
{
Port_Init();
Init_LCD();
    lcd_char('1');
    lcd_char('2');
    lcd_char('3');
    lcd_char('4');
while(1);
}

1 个答案:

答案 0 :(得分:1)

在第23行和第25行出现相同的错误是一个重大提示。

常见的错误行号是指出现错误的行之后的行,因为那是编译器明显出错的地方。

再现该功能,并扩展宏,给出以下代码

void E_Pulse(void)
{
  PORTB.2 = 1;
  _delay_ms(5);
  PORTB.2 = 0;
}

PORTB.2是无效的代码,看起来有点像访问一个struct,但是struct元素不能是数字。因此,编译器会感到困惑并抛出错误,分号有点误导,通常会更好。

这不是使用AVR系统控制GPIO引脚的方式。我已链接到下面的外观合理的教程。

http://www.elecrom.com/avr-tutorial-2-avr-input-output/