打印

求助,keil编程报错,错误代码: error C141

[复制链接]
5892|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spegar|  楼主 | 2012-2-4 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编了一个小模块,一个.c文件,一个对应的.h文件。编译后报错,如下:
SRC\LCD_DISPLAY.H(4): error C141: syntax error near 'one', expected ')'
代码包括两部分:
(1)lcd_display.c文件,如下:
#include <AT89X52.H>
#define  LE0 0x01
#define  LE1 0x02
#define  LE2 0x04
#define  LE3 0x08
#define  LE4 0x10
#define  LE5 0x20
#define  LE6 0x40
#define  LE7 0x80
sbit E1=P0^4;
#define  uchar unsigned char
void  delayms(int  xms)
{
    uchar i,j;
    for(i=xms;i>0;i--)
        for(j=110;j>0;j--);
}
void display(uchar one[2][16],uchar two[2][16],uchar three[2][16],uchar four[2][16] )
{
    uchar j;
    E1=0;
    for(j=0;j<16;j++)
    {
        P0=j;
        P3=LE0;
        P2=one[0][j];
        P3=LE1;
        P2=one[1][j];
            
        P3=LE2;
        P2=two[0][j];
        P3=LE3;
        P2=two[1][j];
               
        P3=LE4;
        P2=three[0][j];
        P3=LE5;
        P2=three[1][j];
        
        P3=LE6;
        P2=four[0][j];
        P3=LE7;
        P2=four[1][j];
        delayms(5);
    }
}
(2)这个是对应的lcd_display.h文件,代码如下:
#ifndef __LCD_DISPLAY_H__
#define  __LCD_DISPLAY_H__
extern void display(uchar one,uchar two,uchar three,uchar four);
extern void delayms(int  xms);
#endif

本人实在检查不出来哪里有问题,求助论坛高手。

相关帖子

沙发
spegar|  楼主 | 2012-2-6 10:28 | 只看该作者
问题已解决,我自己来回复一下。其实在这两个文件之外,我还写了一个main函数,main函数是这样写的。
#include <AT89X52.H>
#include "lcd_display.h"
//#include "SoundPlay.h"
#define  uchar unsigned char

uchar code yin[2][16]={{0x40,0x80,0xFC,0x00,0x10,0x20,0xFF,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0xF8,0x08},
{0x00,0x00,0x1F,0x00,0x04,0x02,0x7F,0x00,0x0F,0x08,0x08,0x0F,0x08,0x08,0x0F,0x08}};/*"音",0*/
uchar code yue[2][16]={{0x00,0x00,0xF8,0x08,0x88,0x84,0x84,0xFC,0x80,0x90,0x90,0x88,0x84,0x82,0xA0,0x40},
{0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x04,0x08,0x10,0x20,0x20,0x00,0x00}};/*“乐”*/
uchar code zhi[2][16]={{0x40,0x80,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x18,0x24,0xC2,0x00},
{0x00,0x00,0x00,0x00,0x1F,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x7F,0x00}};/*"之",0*/
uchar code sheng[2][16]={{0x80,0x80,0xFF,0x80,0xFE,0x00,0xFC,0x84,0x84,0xFC,0x04,0x04,0x04,0x02,0x02,0x01},
{0x00,0x00,0x7F,0x00,0x3F,0x00,0x1F,0x10,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x00}};/*"声",0*/

void main()
{
    while(1)
    {  
        display (yin,yue,zhi,sheng);
    }
}


因为在网上看到关于模块化程序的**说,不要在头文件里面定义变量,所以关于字码的二维数组定义就放在了main函数里面。当我把四个字码的数组定义放到lcd_display.h中之后,编译之后没有报错。程序没有问题了。

使用特权

评论回复
板凳
spegar|  楼主 | 2012-2-6 10:28 | 只看该作者
问题已解决,我自己来回复一下。其实在这两个文件之外,我还写了一个main函数,main函数是这样写的。
#include <AT89X52.H>
#include "lcd_display.h"
//#include "SoundPlay.h"
#define  uchar unsigned char

uchar code yin[2][16]={{0x40,0x80,0xFC,0x00,0x10,0x20,0xFF,0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0xF8,0x08},
{0x00,0x00,0x1F,0x00,0x04,0x02,0x7F,0x00,0x0F,0x08,0x08,0x0F,0x08,0x08,0x0F,0x08}};/*"音",0*/
uchar code yue[2][16]={{0x00,0x00,0xF8,0x08,0x88,0x84,0x84,0xFC,0x80,0x90,0x90,0x88,0x84,0x82,0xA0,0x40},
{0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x04,0x08,0x10,0x20,0x20,0x00,0x00}};/*“乐”*/
uchar code zhi[2][16]={{0x40,0x80,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x18,0x24,0xC2,0x00},
{0x00,0x00,0x00,0x00,0x1F,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x7F,0x00}};/*"之",0*/
uchar code sheng[2][16]={{0x80,0x80,0xFF,0x80,0xFE,0x00,0xFC,0x84,0x84,0xFC,0x04,0x04,0x04,0x02,0x02,0x01},
{0x00,0x00,0x7F,0x00,0x3F,0x00,0x1F,0x10,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x00}};/*"声",0*/

void main()
{
    while(1)
    {  
        display (yin,yue,zhi,sheng);
    }
}


因为在网上看到关于模块化程序的**说,不要在头文件里面定义变量,所以关于字码的二维数组定义就放在了main函数里面。当我把四个字码的数组定义放到lcd_display.h中之后,编译之后没有报错。程序没有问题了。

使用特权

评论回复
地板
zj314995534| | 2012-2-7 19:36 | 只看该作者
变量在不同C文件中使用才用extern申明下。

使用特权

评论回复
5
hewayking| | 2013-1-8 19:02 | 只看该作者
个人观点是否应该放在 lcd_display.C中呢  不然只要是不是只要有包含lcd_display.h 的都要为数组分配空间呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

0

粉丝