C程序中的重复定义问题 求大神帮忙改一下,十分感谢,在线等啊!

#include<REG51.H>
#define unit unsigned int
#define uchar unsigned char
uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //断码组合,共阴极
uchar code b[4]={0xfe,0xfd,0xfb,0xf7}; //位码组合 低有效
uchar code c[6]={0x78,0xb8,0xcc,0xd4,0xf8,0xdc};
//***************************************************************************
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
uchar m=30,n=35,k=0,cnt=0,y=0,j,x,y;
void delay(uchar t);
void scankey(void)
void interrupt(void)
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=1;
EA=1;
}
//中断处理程序
void key()
{
ET0=0;TR0=0;EA=0;
if(j==1)P1=0xd8;
else if(x==1)P1=c[0];
else if(y==1)P1=c[2];
P0=a[0];
for(;;)
{
P2=0xfe;
delay(20);

P2=0xfed;
delay(20);

P2=0xfb;
delay(20);

P2=0xf7;
delay(20);

scankey();
if(j==2)
{
ET0=1;TR0=1;EA=1;j=0;
break;
}
else if(x==2)
{
ET=1;TR0=1;EA=1;x=0;
break;
}
else if(y==2)
{
ET=1;TR0=1;EA=1;y=0;
break;
}
}
}
;;;;;;;;;

提示
compiling 112.c...
112.C(15): error C141: syntax error near 'interrupt'
112.C(15): error C141: syntax error near 'void'
112.C(15): error C141: syntax error near ')'
112.C(17): error C231: 'TMOD': redefinition
112.C(17): error C231: 'TMOD': redefinition
112.C(18): error C231: 'TH0': redefinition
112.C(18): error C231: 'TH0': redefinition
112.C(19): error C231: 'TL0': redefinition
112.C(19): error C231: 'TL0': redefinition
112.C(20): error C231: 'ET0': redefinition
112.C(20): error C231: 'ET0': redefinition
112.C(21): error C231: 'TR0': redefinition
112.C(21): error C231: 'TR0': redefinition
112.C(22): error C231: 'EA': redefinition
112.C(22): error C231: 'EA': redefinition
112.C(23): error C141: syntax error near '}'
112.c - 16 Error(s), 0 Warning(s).

中断函数定义错误

应该是

void intt0() interrupt 1

这样定义,其中intt0是函数名,1是指定时中断0.


我帮你修改了下,只是通过了编译,像你的delay和scankey函数功能并没有实现。


#include<REG51.H>    
#define unit unsigned int 
#define uchar unsigned char
uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //断码组合,共阴极
uchar code b[4]={0xfe,0xfd,0xfb,0xf7};  //位码组合  低有效
uchar code c[6]={0x78,0xb8,0xcc,0xd4,0xf8,0xdc};
//***************************************************************************
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
uchar m=30,n=35,k=0,cnt=0,y=0,j,x,y;
void delay(uchar t); 
void scankey(void);
void intt() interrupt 1
{
        TMOD=0x01;
        TH0=0x3c;
        TL0=0xb0;
        ET0=1;
        TR0=1;
        EA=1;
}
//中断处理程序
void key()
{
        ET0=0;TR0=0;EA=0;
        if(j==1)P1=0xd8;
        else if(x==1)P1=c[0];
        else if(y==1)P1=c[2];
        P0=a[0];
        for(;;)
        {
                P2=0xfe;
                delay(20);

                P2=0xfed;
                delay(20);

                P2=0xfb;
                delay(20);

                P2=0xf7;
                delay(20);

                scankey();
                if(j==2)
                {
                        ET0=1;TR0=1;EA=1;j=0;
                            break;
                }
                else if(x==2)
                {
                        ET0=1;TR0=1;EA=1;x=0;
                        break;
                }
                else if(y==2)
                {
                        ET0=1;TR0=1;EA=1;y=0;
                        break;
                }
        }
}
                                                                                                                    63,1          Bot

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-09
格式不好看呀追问

哦,你能不能帮忙改一下嘛

第2个回答  2014-06-10
void scankey(void)
少了个分号追问

不对啊,还是不行,您能不能具体的帮我在上面改一下,谢谢,明天就交了。。。

第3个回答  2014-06-09
请去"C语言吧"提问,不谢!

C语言的重定义错误,求解
重复定义是指编译时同一个定义多次给出或者连接时出现多个外部符号(外部函数和全局变量在不同实现文件中重复定义)。ifndef...#pragma once这些指令是用于防止同一个头文件在同一个实现文件中多次包含,这只能解决第一种冲突。你的问题可能是函数或者全局变量的定义在整个程序中重复了。检查头文件中是否有...

关于C语言里面一个因函数重复包含而产生的重定义问题。。请高手解决_百...
B、C、D都分别建一个头文件a.h, b.h, c.h,a.h形如:ifndef _a_h_define _a_h_……endif 这样能够避免重复包含,并且函数原型,结构体定义都写在头文件里面,头文件一定不要写函数主体

C语言函数变量重复定义
是这样的,同一个函数内定义的每个变量名(局部变量)是唯一的,其内容的改变与本函数外的任何变量无关。

C语言选择性重复程序的问题~求助!
while(ch!='n');

C语言中变量为什么不能重复定义,我想问一下C语言里面的具体的机制。
因为定义就意味着给变量分配空间。暂不管重复定义有可能产生空间分配不合理的问题,首先变量名就是一个地址,只不过这个地址是由系统分配的,定义后,地址分出来,存储空间也被分配出来,变量名--地址就被固定下来。重复定义的话就要分出新地址,分配新的存储空间,原来的变量名--地址,与后来的变量名--...

求帮忙【重复定义问题】【multiple definition】
main.c是什么样的? 你是不是在main.c里面也include all.h了?全局变量最好不要定义在h文件里面,而是定义在c文件里面,在h文件里面extern 声明 另外你是不是在main.c里面include input.c了 感觉是input.c编译了两次

关于自定义头文件在多个文件中引用时提示重复定义的问题(C语言)
你在.h文件中定义了全局变量a, b, c。那么就表示你两个.c文件中,每个.c文件中都有这样的全局变量定义:int a, b, c;当每个.c文件单独编译当然没有问题,但是当它们链接起来的时候就出现问题了:两个.c文件中都有变量a b c,所以当然是重复定义啊。问题是出在链接的时候的。

一个C语言源程序调用另一个源程序中的全局变量时出现重复定义main函数问 ...
main(){ printf("this is c2.c");} 用c1.c调用c2.c后相当于c1中的内容变为 main(){ printf("this is c2.c");} main(){ printf("this is c1.c");} 怎么不错呢?你要想C1调用C2不会出错,只有将C1中的main()函数去除,用另外一个自定义函数名代替,比如yy(),然后在C2中加一条...

c语言,这是我编的用来随机排列1~9这九个数的程序,但结果总是有两个数...
,i[2]变数,但结果是不等于i[1],却又等于i[0]*\/ \/* 另外,最好写成a[j]==a[i],a[i]在==后面,表示a[i]等于a[j],阅读的习惯*\/ a[i]=rd();改为 if(a[j]==a[i]) { i--; \/* 消除上一个循环的i++的值,表示要重复第i个数的随机获取动作 *\/ break;} ...

C语言高手进,关于.h与.c的问题,在线急等
没看明白哦 是不是还有别的文件包含这个头文件啊,要是有的话就出错了,重复定义 还有一种可能就是虽然在头文件中定义了,在源文件中也得声明一下,要不编译器找不到头文件中的东西,在编译的时候就出错了

相似回答