打印

C程序,编译不能通过

[复制链接]
2330|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gdqinci|  楼主 | 2010-4-24 13:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};
uchar data shuzu[4];
//-------------------------------------------------------------------
uchar status;
uchar temp,f;
//-------------------------------------------------------------------
void delay_1ms(void)
{
uint k;
for(k=0;k<121;k++);
}
//--------------------------------------------------------------------
void dis_all(void)
{
P0=SEG7[shuzu[0]];P2=ACT[0];
delay_1ms();
P0=SEG7[shuzu[1]];P2=ACT[1];
delay_1ms();
P0=SEG7[shuzu[2]];P2=ACT[2];
delay_1ms();
P0=SEG7[shuzu[3]];P2=ACT[3];
delay_1ms();
}
//---------------------------------------------------------------------
void dis_shuzu0(void)
{
P0=SEG7[f];P2=ACT[0];
delay_1ms();
}
//--------------------------------------------------------------------
void dis_shuzu1(void)
{
P0=SEG7[f];P2=ACT[1];
delay_1ms();
}
//--------------------------------------------------------------------
void dis_shuzu2(void)
{
P0=SEG7[f];P2=ACT[2];
delay_1ms();
}
//--------------------------------------------------------------------
void dis_shuzu3(void)
{
P0=SEG7[f];P2=ACT[3];
delay_1ms();
}
//--------------------------------------------------------------------
void key_s1(void)
{
P3=0xff;
if(P3==0xfb)
  {
   if(temp>50)temp=0;
  if(temp==0)f++;
  if(f>9)f=0;
  temp++;
  delay_1ms();;
  }
}
//---------------------------------------------------------------------
void key_s2(void)
{
P3=0xff;
if(P3==0xf7)
  {
   switch(status)
    {
       case 1:shuzu[0]=f;break;
   case 2:shuzu[1]=f;break;
   case 3:shuzu[2]=f;break;
   case 4:shuzu[3]=f;break;
   default:break;
    }
  }
}
//---------------------------------------------------------------------
void key_s4(void)
{
P3=0xff;
if(P3==0xdf)
  {
   if(temp>50)temp=0;
  if(temp==0)status++;
  if(status>4)status=0;
  temp++;
  delay_1ms();;
  }
}
//======================================================
void main()
{
while(1)
  {
   key_s1();
  key_s2();
  key_s4();
  switch(status)
   {
    case 0:dis_all();break;
    case 1:dis_shuzu0();break;
   case 2:dis_shuzu1();break;
   case 3:dis_shuzu2();break;
   case 4:dis_shuzu3();break;
   default:break;
   }
  }
}

/*编译器提示的出错的E文又看不大懂,主要是不明白提示的意思,另外源程序中明明已经写了#include <REG51.H>但是在编译器的项目窗口中显示项目中加入的那个CS13-1.C中没有包含头文件。
真是不明白啊,难道是编译器出错了?

编译不能通过.jpg (131.63 KB )

编译不能通过.jpg

相关帖子

沙发
gdqinci|  楼主 | 2010-4-24 13:26 | 只看该作者
附件是整个工程的打包,有空的前辈帮我看一下吧,谢谢了

CS13-1.rar

9.41 KB

使用特权

评论回复
板凳
mohanwei| | 2010-4-24 15:28 | 只看该作者
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};
uchar data shuzu[4];
//-------------------------------------------------------------------
uchar status;
uchar temp,f;
//-------------------------------------------------------------------
void delay_1ms(void)
{
        uint k;
        for(k=0;k<121;k++);
}
//--------------------------------------------------------------------
void dis_all(void)
{
        P0=SEG7[shuzu[0]];P2=ACT[0];
        delay_1ms();
        P0=SEG7[shuzu[1]];P2=ACT[1];
        delay_1ms();
        P0=SEG7[shuzu[2]];P2=ACT[2];
        delay_1ms();
        P0=SEG7[shuzu[3]];P2=ACT[3];
        delay_1ms();
}
//---------------------------------------------------------------------
void dis_shuzu0(void)
{
        P0=SEG7[f];P2=ACT[0];
        delay_1ms();
}
//--------------------------------------------------------------------
void dis_shuzu1(void)
{
        P0=SEG7[f];P2=ACT[1];
        delay_1ms();
}
//--------------------------------------------------------------------
void dis_shuzu2(void)
{
        P0=SEG7[f];P2=ACT[2];
        delay_1ms();
}
//--------------------------------------------------------------------
void dis_shuzu3(void)
{
        P0=SEG7[f];P2=ACT[3];
        delay_1ms();
}
//--------------------------------------------------------------------
void key_s1(void)
{
        P3=0xff;
        if(P3==0xfb)
        {
                if(temp>50)temp=0;
                if(temp==0)f++;
                if(f>9)f=0;
                temp++;
                delay_1ms();
        }
}
//---------------------------------------------------------------------
void key_s2(void)
{
        P3=0xff;
        if(P3==0xf7)
        {
                switch(status)
                {
                        case 1:shuzu[0]=f;break;
                        case 2:shuzu[1]=f;break;
                        case 3:shuzu[2]=f;break;
                        case 4:shuzu[3]=f;break;
                        default:break;
                }
        }
}
//---------------------------------------------------------------------
void key_s4(void)
{
        P3=0xff;
        if(P3==0xdf)
        {
                if(temp>50)temp=0;
                if(temp==0)status++;
                if(status>4)status=0;
                temp++;
                delay_1ms();
        }
}
//======================================================
void main()
{
        while(1)
        {
                key_s1();
                key_s2();
                key_s4();
                switch(status)
                {
                        case 0:dis_all();break;
                        case 1:dis_shuzu0();break;
                        case 2:dis_shuzu1();break;
                        case 3:dis_shuzu2();break;
                        case 4:dis_shuzu3();break;
                        default:break;
                }
        }
}

行尾有一些非法字符,删掉就好了。

使用特权

评论回复
地板
mohanwei| | 2010-4-24 15:32 | 只看该作者
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uchar code SEG7[10] =
{
        0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
};
uchar code ACT[4] =
{
        0xfe, 0xfd, 0xfb, 0xf7
};
uchar data shuzu[4];
//-------------------------------------------------------------------
uchar status;
uchar temp, f;
//-------------------------------------------------------------------
void delay_1ms(void)
{
        uint k;
        for(k = 0; k < 121; k++)
                ;
}

//--------------------------------------------------------------------
void dis_all(void)
{
        P0 = SEG7[shuzu[0]];
        P2 = ACT[0];
        delay_1ms();
        P0 = SEG7[shuzu[1]];
        P2 = ACT[1];
        delay_1ms();
        P0 = SEG7[shuzu[2]];
        P2 = ACT[2];
        delay_1ms();
        P0 = SEG7[shuzu[3]];
        P2 = ACT[3];
        delay_1ms();
}

//---------------------------------------------------------------------
void dis_shuzu0(void)
{
        P0 = SEG7[f];
        P2 = ACT[0];
        delay_1ms();
}

//--------------------------------------------------------------------
void dis_shuzu1(void)
{
        P0 = SEG7[f];
        P2 = ACT[1];
        delay_1ms();
}

//--------------------------------------------------------------------
void dis_shuzu2(void)
{
        P0 = SEG7[f];
        P2 = ACT[2];
        delay_1ms();
}

//--------------------------------------------------------------------
void dis_shuzu3(void)
{
        P0 = SEG7[f];
        P2 = ACT[3];
        delay_1ms();
}

//--------------------------------------------------------------------
void key_s1(void)
{
        P3 = 0xff;
        if(P3 == 0xfb)
        {
                if(temp > 50)
                        temp = 0;
                if(temp == 0)
                        f++;
                if(f > 9)
                        f = 0;
                temp++;
                delay_1ms();
        }
}

//---------------------------------------------------------------------
void key_s2(void)
{
        P3 = 0xff;
        if(P3 == 0xf7)
        {
                switch(status)
                {
                        case 1:
                                shuzu[0] = f;
                                break;
                        case 2:
                                shuzu[1] = f;
                                break;
                        case 3:
                                shuzu[2] = f;
                                break;
                        case 4:
                                shuzu[3] = f;
                                break;
                        default:
                                break;
                }
        }
}

//---------------------------------------------------------------------
void key_s4(void)
{
        P3 = 0xff;
        if(P3 == 0xdf)
        {
                if(temp > 50)
                        temp = 0;
                if(temp == 0)
                        status++;
                if(status > 4)
                        status = 0;
                temp++;
                delay_1ms();
        }
}

//======================================================
void main()
{
        while(1)
        {
                key_s1();
                key_s2();
                key_s4();
                switch(status)
                {
                        case 0:
                                dis_all();
                                break;
                        case 1:
                                dis_shuzu0();
                                break;
                        case 2:
                                dis_shuzu1();
                                break;
                        case 3:
                                dis_shuzu2();
                                break;
                        case 4:
                                dis_shuzu3();
                                break;
                        default:
                                break;
                }
        }
}
代码比较混乱,帮你格式化了一下

使用特权

评论回复
5
linjing| | 2010-4-24 15:51 | 只看该作者
你看一下62行与92行,应该是有非法字符,如果看不到,就在行前加两个//将这行注释了看,Keil对汉字的支持不太好

使用特权

评论回复
6
znmcu| | 2010-4-24 15:53 | 只看该作者
看来大家都喜欢用这种 把代码写乱的风格 注意点程序的结构,加点注释,多好!

使用特权

评论回复
7
dulianling| | 2010-4-24 20:24 | 只看该作者
本帖最后由 dulianling 于 2010-4-24 20:31 编辑

看来不太熟悉编译器,也比较粗心,程序已帮你改过。

使用特权

评论回复
8
dulianling| | 2010-4-24 20:26 | 只看该作者
本帖最后由 dulianling 于 2010-4-24 20:28 编辑

附件怎么上传?

CS13-1.rar

16.9 KB

使用特权

评论回复
9
gdqinci|  楼主 | 2010-4-25 22:32 | 只看该作者
谢谢兄弟们:)

使用特权

评论回复
10
gdqinci|  楼主 | 2010-4-25 22:55 | 只看该作者
本帖最后由 gdqinci 于 2010-4-25 22:56 编辑

弄好了,谢谢大家

没发现什么不对啊.jpg (14.75 KB )

没发现什么不对啊.jpg

蓝色条带上有一格不平.jpg (16.12 KB )

蓝色条带上有一格不平.jpg

分号后面又多了一个分号.jpg (16.91 KB )

分号后面又多了一个分号.jpg

在记事本里面也可以看到.jpg (11.26 KB )

在记事本里面也可以看到.jpg

使用特权

评论回复
11
ershisi| | 2010-4-25 22:56 | 只看该作者
怎么又那么多“:P”?

使用特权

评论回复
12
ershisi| | 2010-4-25 22:57 | 只看该作者
我感觉程序不算乱啊

使用特权

评论回复
13
gdqinci|  楼主 | 2010-4-25 22:59 | 只看该作者
看起来是多了一个分号,但是我试了一下,但是那个分号又好像不是在中文输入法状态下输入的

我试过用中文和英文的分号好像是一样的,不知道是不是我弄错了,请兄弟们试试看

使用特权

评论回复
14
playjian| | 2010-4-27 09:51 | 只看该作者
是不是在中文输入法里面键入了一些非法字符~~定位到出错的行把那一行重新键入一次试一试

使用特权

评论回复
15
甄明伟1987| | 2010-4-30 10:06 | 只看该作者
嗯,那个多出来,但又看不见的分号(;)的确是在中文输入法情况下输入的

使用特权

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

本版积分规则

36

主题

341

帖子

2

粉丝