C程序,编译不能通过

[复制链接]
 楼主| 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中没有包含头文件。
真是不明白啊,难道是编译器出错了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gdqinci 发表于 2010-4-24 13:26 | 显示全部楼层
附件是整个工程的打包,有空的前辈帮我看一下吧,谢谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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;
                }
        }
}
代码比较混乱,帮你格式化了一下
linjing 发表于 2010-4-24 15:51 | 显示全部楼层
你看一下62行与92行,应该是有非法字符,如果看不到,就在行前加两个//将这行注释了看,Keil对汉字的支持不太好
znmcu 发表于 2010-4-24 15:53 | 显示全部楼层
看来大家都喜欢用这种 把代码写乱的风格 注意点程序的结构,加点注释,多好!
dulianling 发表于 2010-4-24 20:24 | 显示全部楼层
本帖最后由 dulianling 于 2010-4-24 20:31 编辑

看来不太熟悉编译器,也比较粗心,程序已帮你改过。
dulianling 发表于 2010-4-24 20:26 | 显示全部楼层
本帖最后由 dulianling 于 2010-4-24 20:28 编辑

附件怎么上传?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| gdqinci 发表于 2010-4-25 22:32 | 显示全部楼层
谢谢兄弟们:)
 楼主| gdqinci 发表于 2010-4-25 22:55 | 显示全部楼层
本帖最后由 gdqinci 于 2010-4-25 22:56 编辑

弄好了,谢谢大家

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ershisi 发表于 2010-4-25 22:56 | 显示全部楼层
怎么又那么多“:P”?
ershisi 发表于 2010-4-25 22:57 | 显示全部楼层
我感觉程序不算乱啊
 楼主| gdqinci 发表于 2010-4-25 22:59 | 显示全部楼层
看起来是多了一个分号,但是我试了一下,但是那个分号又好像不是在中文输入法状态下输入的

我试过用中文和英文的分号好像是一样的,不知道是不是我弄错了,请兄弟们试试看
playjian 发表于 2010-4-27 09:51 | 显示全部楼层
是不是在中文输入法里面键入了一些非法字符~~定位到出错的行把那一行重新键入一次试一试
甄明伟1987 发表于 2010-4-30 10:06 | 显示全部楼层
嗯,那个多出来,但又看不见的分号(;)的确是在中文输入法情况下输入的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

341

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部