找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15969|回复: 7
收起左侧

怎么解决这个编译错误error C231: 'display': redefinition弄了半天都没解决

[复制链接]
ID:526819 发表于 2019-5-16 21:57 | 显示全部楼层 |阅读模式
程序始终显示这种问题,自己写的旋转时钟程序
#include <STC15F2K60S2.H>
#define uint unsigned int
#define uchar unsigned char
void delay(int ms)
{    uint i,j;
    for(i=0;i<ms;i++)
    {
      for(j=0;j<5;j++);
      }
    }
    //a??????????
uchar num_a[]={0x24,0x24,0x25,0x7F,0xC4,0x44,0x00,0x7C,0x44,0x44,0x44,0x44,0x44,0x7C,0x00,0x00,/*????????*/
    0x00,0x00,0x3F,0x20,0x20,0x20,0x28,0xA8,0x6A,0x29,0x2A,0x2C,0x28,0x20,0x20,0x00,/*????????*/
    0x04,0x0C,0x35,0xC6,0x04,0x18,0x10,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0x10,0x00,/*????????*/
    0x08,0x08,0x0B,0xFF,0x09,0x08,0x02,0x0C,0xF0,0x13,0x10,0x10,0x10,0x1F,0x00,0x00,/*?????????*/
    0x02,0x02,0x42,0x33,0x00,0x02,0x05,0x79,0x41,0x41,0x41,0x79,0x05,0x04,0x04,0x00, /*????????*/
    0x02,0x02,0x42,0x33,0x00,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x02,0x00 /*????????*/
     };
     //b??????°???
uchar num_b[]={0x10,0x60,0x80,0xFF,0x80,0x60,0x02,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0x00,/*????°???*/
    0x02,0x0C,0xF0,0x00,0x80,0x80,0x80,0x82,0x81,0xFE,0x80,0x80,0x80,0xA0,0xC0,0x00,/*????°???*/
    0x44,0xE6,0x44,0x48,0x48,0x48,0x00,0x7F,0x42,0x42,0x42,0x42,0x42,0x7F,0x00,0x00,/*????°???*/
    0x20,0xC0,0x00,0xFF,0x00,0xC0,0x00,0x30,0xD0,0x10,0x52,0x39,0x02,0xFC,0x00,0x00, /*?????°???*/
    0x00,0x00,0x00,0xFC,0x09,0x11,0x02,0xC2,0x34,0x08,0x14,0x62,0x82,0x01,0x01,0x00, /*????°???*/
    0x00,0x00,0x00,0xFE,0x04,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00  /*????°???*/
     };
uchar num_c[]={0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,/*?е??????*/
      0x00,0x3F,0x04,0x24,0x15,0xFF,0x15,0x24,0x00,0x3F,0x22,0x22,0x23,0x42,0x02,0x00,/*????????*/
      0x00,0x00,0x44,0x4C,0x54,0x65,0x45,0x46,0x84,0x88,0x90,0x81,0x80,0x00,0x00,0x00,/*????????*/
      0x04,0x0C,0x35,0xC6,0x0C,0x00,0x11,0x13,0x15,0x99,0x71,0x11,0x15,0x13,0x11,0x00/*????????*/
      };
uchar num_d[]={0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00,/*?е??°???*/
               0x00,0xFC,0x44,0x84,0x04,0xF4,0x04,0xC5,0x06,0xF8,0x00,0x00,0xFF,0x00,0x00,0x00,/*????°???*/
      0x00,0x42,0x44,0xC8,0xD0,0x42,0x41,0x7E,0x40,0x40,0x50,0x48,0xC4,0x62,0x00,0x00,/*????°???*/
      0x44,0xE6,0x44,0x48,0x48,0x01,0x02,0x0C,0xF0,0x00,0x00,0xFC,0x02,0x02,0x8E,0x00/*????°???*/
      
      };

void INT0() interrupt 0 //?ж???????????????
{  
   
    display();//出问题的地方
     
}
    uint i=0;
uint k=0;  
  void display()//出问题的地方
{  
k++;
if(k<200)
display_1();
else if(k<400)
display_2();
else if(k<600)
display_3();
}
void display_1()
{
  P0=0x00;
  P1=0x00;
  P2=0x00;
  P4^5=0;
} //???
void display_2()
{
   uint m;
   for(m=0;m<192;m++)
   {
       P0=~num_a[16*(m/16)+16-(m%16)];
    P1=~num_b[16*(m/16)+16-(m%16)];
    P2=0xff;
       P4^5=1;
    delay(30);
   }
}  //???????????
void display_3()
{  uint l;
     for(l=0;l<192;l++)
   {
       P0=~num_c[16*((l+i)/16)+16-((l+i)%16)%192];
    P1=~num_d[16*((l+i)/16)+16-((l+i)%16)%192];
    P2=0xff;
       P4^5=1;
    delay(30);
   }
   i++;
}
void main()
{
  P0=0xff;
  P1=0xff;
  P2=0xff;
  P4^5=1;
  IT0=1;//int0??????????ж?
  EX0=1;
  EA=1;//????ж?
  while(1);

}


错误问题,display出了问题。
xuanzhuang.c(44): warning C206: 'display': missing function-prototype
xuanzhuang.c(50): error C231: 'display': redefinition

回复

使用道具 举报

ID:213173 发表于 2019-5-17 06:23 | 显示全部楼层
编译报错的主要问题有3:
1.子函数没有声明。如把调用顺序排列合理不声明也可以。
2.被操作端口的名称要与头文件内名称相同或另外声明也可以。如:sbit  xxx=P4^5;
3.数组过大,超出SRAM存储器容量,要改为用户程序存储器。
这是编辑通过的程序
  1. #include <STC15F2K60S2.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //sbit xxx=P4^5;
  5. uint i=0;
  6. uint k=0;  
  7.     //a??????????
  8. uchar code num_a[]={0x24,0x24,0x25,0x7F,0xC4,0x44,0x00,0x7C,0x44,0x44,0x44,0x44,0x44,0x7C,0x00,0x00,/*????????*/
  9.     0x00,0x00,0x3F,0x20,0x20,0x20,0x28,0xA8,0x6A,0x29,0x2A,0x2C,0x28,0x20,0x20,0x00,/*????????*/
  10.     0x04,0x0C,0x35,0xC6,0x04,0x18,0x10,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0x10,0x00,/*????????*/
  11.     0x08,0x08,0x0B,0xFF,0x09,0x08,0x02,0x0C,0xF0,0x13,0x10,0x10,0x10,0x1F,0x00,0x00,/*?????????*/
  12.     0x02,0x02,0x42,0x33,0x00,0x02,0x05,0x79,0x41,0x41,0x41,0x79,0x05,0x04,0x04,0x00, /*????????*/
  13.     0x02,0x02,0x42,0x33,0x00,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x02,0x00 /*????????*/
  14.      };
  15.      //b??????°???
  16. uchar code num_b[]={0x10,0x60,0x80,0xFF,0x80,0x60,0x02,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0x00,/*????°???*/
  17.     0x02,0x0C,0xF0,0x00,0x80,0x80,0x80,0x82,0x81,0xFE,0x80,0x80,0x80,0xA0,0xC0,0x00,/*????°???*/
  18.     0x44,0xE6,0x44,0x48,0x48,0x48,0x00,0x7F,0x42,0x42,0x42,0x42,0x42,0x7F,0x00,0x00,/*????°???*/
  19.     0x20,0xC0,0x00,0xFF,0x00,0xC0,0x00,0x30,0xD0,0x10,0x52,0x39,0x02,0xFC,0x00,0x00, /*?????°???*/
  20.     0x00,0x00,0x00,0xFC,0x09,0x11,0x02,0xC2,0x34,0x08,0x14,0x62,0x82,0x01,0x01,0x00, /*????°???*/
  21.     0x00,0x00,0x00,0xFE,0x04,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00  /*????°???*/
  22.      };
  23. uchar code num_c[]={0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,/*?е??????*/
  24.       0x00,0x3F,0x04,0x24,0x15,0xFF,0x15,0x24,0x00,0x3F,0x22,0x22,0x23,0x42,0x02,0x00,/*????????*/
  25.       0x00,0x00,0x44,0x4C,0x54,0x65,0x45,0x46,0x84,0x88,0x90,0x81,0x80,0x00,0x00,0x00,/*????????*/
  26.       0x04,0x0C,0x35,0xC6,0x0C,0x00,0x11,0x13,0x15,0x99,0x71,0x11,0x15,0x13,0x11,0x00/*????????*/
  27.       };
  28. uchar code num_d[]={0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00,/*?е??°???*/
  29.                0x00,0xFC,0x44,0x84,0x04,0xF4,0x04,0xC5,0x06,0xF8,0x00,0x00,0xFF,0x00,0x00,0x00,/*????°???*/
  30.       0x00,0x42,0x44,0xC8,0xD0,0x42,0x41,0x7E,0x40,0x40,0x50,0x48,0xC4,0x62,0x00,0x00,/*????°???*/
  31.       0x44,0xE6,0x44,0x48,0x48,0x01,0x02,0x0C,0xF0,0x00,0x00,0xFC,0x02,0x02,0x8E,0x00/*????°???*/
  32. };
  33. //子程序声明
  34. void display();
  35. void display_1();
  36. void display_2();
  37. void display_3();
  38. void delay(int ms);

  39. void delay(int ms)
  40. {
  41.         uint i,j;
  42.         for(i=0;i<ms;i++)
  43.         {
  44.                 for(j=0;j<5;j++);
  45.         }
  46. }

  47. void INT0() interrupt 0 //?ж???????????????
  48. {     
  49.         display();//出问题的地方     
  50. }

  51. void display()//出问题的地方
  52. {  
  53.         k++;
  54.         if(k<200)
  55.                 display_1();
  56.         else if(k<400)
  57.                 display_2();
  58.         else if(k<600)
  59.                 display_3();
  60. }

  61. void display_1()
  62. {
  63.         P0=0x00;
  64.         P1=0x00;
  65.         P2=0x00;
  66.         P45=0;
  67. } //???
  68. void display_2()
  69. {
  70.         uint m;
  71.         for(m=0;m<192;m++)
  72.         {
  73.                 P0=~num_a[16*(m/16)+16-(m%16)];
  74.                 P1=~num_b[16*(m/16)+16-(m%16)];
  75.                 P2=0xff;
  76.                 P45=1;
  77.                 delay(30);
  78.         }
  79. }  //???????????
  80. void display_3()
  81. {
  82.         uint l;
  83.         for(l=0;l<192;l++)
  84.         {
  85.                 P0=~num_c[16*((l+i)/16)+16-((l+i)%16)%192];
  86.                 P1=~num_d[16*((l+i)/16)+16-((l+i)%16)%192];
  87.                 P2=0xff;
  88.                 P45=1;
  89.                 delay(30);
  90.         }
  91.         i++;
  92. }

  93. void main()
  94. {
  95.         P0=0xff;
  96.         P1=0xff;
  97.         P2=0xff;
  98.         P45=1;
  99.         IT0=1;//int0??????????ж?
  100.         EX0=1;
  101.         EA=1;//????ж?
  102.         while(1);
  103. }
复制代码

回复

使用道具 举报

ID:365802 发表于 2019-5-17 08:21 | 显示全部楼层
dispaly函數在調用前沒有定義, 在最前面要用Extren 進行定義, 或者函數要寫在被調用的前面.
回复

使用道具 举报

ID:123289 发表于 2019-5-17 09:04 | 显示全部楼层
你能将出错的英文译成中文吗?
回复

使用道具 举报

ID:487821 发表于 2019-5-17 09:18 | 显示全部楼层
没申明就使用了吧
回复

使用道具 举报

ID:487821 发表于 2019-5-17 09:19 | 显示全部楼层
"K"也没定义类型
回复

使用道具 举报

ID:511890 发表于 2019-5-17 12:48 | 显示全部楼层
void INT0() interrupt 0 //?ж???????????????
{  
   
    display();//出问题的地方
     
}把这个放到display()方法后面。
回复

使用道具 举报

ID:424408 发表于 2019-5-17 13:10 | 显示全部楼层
先定义 再使用 把void display 放在上面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表