错误:标识符“LCD_E_PORT”未定义
为什么我得到的错误:标识符“LCD_E_PORT”在此代码是未定义:错误:标识符“LCD_E_PORT”未定义
#include <msp430f5438a.h>
#include "IO_functions.h"
#define LCD_E_PORT PORT_6
#define LCD_E PIN_4
#include "LCD1602.h"
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P4DIR = 0x03;
P4OUT = 0x00;
output_bit(PORT_4, PIN_7, 1);
output_bit(PORT_4, PIN_7, 0);
lcd_send_nibble(0x0f);
while(1)
{
P4OUT ^= BIT0;
__delay_cycles(500000);
}
}
既然我已经在我的代码上我不定义LCD_E_PORT了解这个错误来自哪里。
这是LCD1602.c在我使用LCD_E_PORT:
#include <msp430f5438a.h>
#include "LCD1602.h"
#include "IO_functions.h"
void lcd_send_nibble(unsigned char nibble)
{
output_bit(LCD_DB4_PORT, LCD_DB4, !!(nibble & 1));
output_bit(LCD_DB5_PORT, LCD_DB5, !!(nibble & 2));
output_bit(LCD_DB6_PORT, LCD_DB6, !!(nibble & 4));
output_bit(LCD_DB7_PORT, LCD_DB7, !!(nibble & 8));
__delay_cycles(8);
output_bit(LCD_E_PORT, LCD_E, 1);
__delay_cycles(16);
output_bit(LCD_E_PORT, LCD_E, 0);
}
void lcd_send_byte(unsigned char data_instr, unsigned char data)
{
output_bit(LCD_RS_PORT, LCD_RS, 0);
__delay_cycles(480);
if(data_instr == DATA)
output_bit(LCD_RS_PORT, LCD_RS, 1);
else
output_bit(LCD_RS_PORT, LCD_RS, 0);
__delay_cycles(8);
output_bit(LCD_E_PORT, LCD_E, 0);
lcd_send_nibble(data >> 4);
lcd_send_nibble(data & 0x0F);
}
void lcd_init(void)
{
unsigned char i;
output_bit(LCD_RS_PORT, LCD_RS, 0);
output_bit(LCD_E_PORT, LCD_E, 0);
__delay_cycles(120000);
for(i=0 ;i < 3; i++)
{
lcd_send_nibble(0x03);
__delay_cycles(25000);
}
lcd_send_nibble(0x02);
lcd_send_byte(INSTR, 0x28);
__delay_cycles(25000);
lcd_send_byte(INSTR, 0x0C);
__delay_cycles(25000);
lcd_send_byte(INSTR, 0x01);
__delay_cycles(25000);
lcd_send_byte(INSTR, 0x06);
__delay_cycles(25000);
}
按照更新的代码中,LCD_E_PORT
定义从LCD1602.c
文件是不可见的。
您可能希望在头文件(LCD1602.h
或任何其他的,您选择的)中添加#define
本身,它将包含在所有使用宏的源文件中。
我已经评论过该行,因为我想从我的源代码中更改宏。 https://drive.google.com/file/d/0B5Y7MPFIDn9dXzJUNEZRWi1vSUk/view?usp=sharing – 2015-04-06 12:13:07
@RadoslawKrasimirow再次,我看不到您的链接。但是,请理解,您无法在运行时更改宏值。它只能在编译时进行操作。如果你想使用'#ifdef'和'#undef'指令的更高版本,cosider也是如此。 – 2015-04-06 12:15:11
有没有可能在''IO_functions.h''中使用'LCD_E_PORT'? – 2015-04-06 11:35:41
不是。错误出现在'LCD1602.c' – 2015-04-06 11:42:20
顺便说一句,你似乎没有在任何地方使用'LCD_E_PORT'。那么拥有它的目的是什么? – 2015-04-06 11:47:55