为什么会这样? 我没有看到任何问题。 我不知道该怎么解决。 帮我! ../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);
}
答案 0 :(得分:1)
在第23行和第25行出现相同的错误是一个重大提示。
常见的错误行号是指出现错误的行之后的行,因为那是编译器明显出错的地方。
再现该功能,并扩展宏,给出以下代码
void E_Pulse(void)
{
PORTB.2 = 1;
_delay_ms(5);
PORTB.2 = 0;
}
PORTB.2是无效的代码,看起来有点像访问一个struct,但是struct元素不能是数字。因此,编译器会感到困惑并抛出错误,分号有点误导,通常会更好。
这不是使用AVR系统控制GPIO引脚的方式。我已链接到下面的外观合理的教程。