找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机键盘error C161: 'num': formal parameter ignored

[复制链接]
ID:1000412 发表于 2022-1-6 21:57 | 显示全部楼层 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit duan=P2^6;
sbit wei=P2^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delayms(uint)        ;
void display(uchar numdis);
uchar num,numt0,shi,ge;
void main()
{          void init();
          while(1)
          {   void keyscan();
          void display(num);
          }

}
void display(uchar numdis)
{
shi=numdis/10;
ge=numdis%10;
duan=1;
P0=table[shi];
duan=0;
P0=0x0;
wei=1;
P0=0x1;
wei=0;
delayms(5);
duan=1;
P0=table[ge];
duan=0;
P0=0x0;
wei=1;
P0=0x2;
wei=0;
delayms(5);
}
void delayms(uint xms)
{uint i,j;
for(i=xms;i>0;i--)
for(j=107;j>0;j--);
}
void Interrupt_T0_time() interrupt 1  
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
numt0++;
if(numt0==20)
  {numt0=0;
  num++;
  if(num==60)
  num=0;
}
}
void init()
{        TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
}
void keyscan()
{if(key1==0)
           {delayms(10);
         if(key1==0)
          {num++;
          if(num==60)
          num=0;
          while(!key1);
          }
          }
        if(key2==0)
           {delayms(10);
         if(key2==0)
         {if(num==0)
                 num=60;
                 num--;
                 while(!key2) ;
                 }
     }
        if(key3==0)
           {delayms(10);
         if(key3==0)
         { num=0;
           while(!key3);
           }
           }
           if(key4==0)
           {
           delayms(10);
           if(key4==0)
           {while(!key4);
            TR0=~TR0;
                }
                }

}                                  

回复

使用道具 举报

ID:883242 发表于 2022-1-6 23:38 | 显示全部楼层
void display(uchar numdis);

声明函数原型只需要告诉编译器参数是什么类型即可,也就是uchar足够用了,加numdis是个什么鬼?
回复

使用道具 举报

ID:213173 发表于 2022-1-7 07:45 | 显示全部楼层
子函数没有全部声明。
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit key1=P3^4;
  5. sbit key2=P3^5;
  6. sbit key3=P3^6;
  7. sbit key4=P3^7;
  8. sbit duan=P2^6;
  9. sbit wei =P2^7;
  10. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  11. uchar numt0,shi,ge;
  12. char num;
  13. void delayms(uint);
  14. void display(uchar numdis);
  15. void init();
  16. void keyscan();

  17. void main()
  18. {
  19.         init();
  20.         while(1)
  21.         {
  22.                 keyscan();
  23.                 display(num);
  24.         }
  25. }
  26. void display(uchar numdis)
  27. {
  28.         shi=numdis/10;
  29.         ge=numdis%10;

  30.         P0=0xff;
  31.         duan=1;
  32.         duan=0;
  33.         P0=0x01;
  34.         wei=1;
  35.         wei=0;
  36.         P0=table[shi];
  37.         duan=1;
  38.         duan=0;
  39.         delayms(5);

  40.         P0=0xff;
  41.         duan=1;
  42.         duan=0;
  43.         P0=0x02;
  44.         wei=1;
  45.         wei=0;
  46.         P0=table[ge];
  47.         duan=1;
  48.         duan=0;
  49.         delayms(5);
  50. }
  51. void delayms(uint xms)
  52. {
  53.         uint i,j;
  54.         for(i=xms;i>0;i--)
  55.                 for(j=110;j>0;j--);
  56. }
  57. void Interrupt_T0_time() interrupt 1  
  58. {
  59.         TH0=(65536-50000)/256;
  60.         TL0=(65536-50000)%256;
  61.         numt0++;
  62.         if(numt0==20)
  63.         {
  64.                 numt0=0;
  65.                 num++;
  66.                 if(num==60)
  67.                         num=0;
  68.         }
  69. }
  70. void init()
  71. {
  72.         TMOD=0x01;
  73.         TH0=(65536-50000)/256;
  74.         TL0=(65536-50000)%256;
  75.         EA=1;
  76.         ET0=1;
  77. }
  78. void keyscan()
  79. {
  80.         if(key1==0)
  81.         {
  82.                 delayms(10);
  83.                 if(key1==0)
  84.                 {
  85.                         num++;
  86.                         if(num>59)
  87.                                 num=0;
  88.                         while(!key1);
  89.                 }
  90.         }
  91.         if(key2==0)
  92.         {
  93.                 delayms(10);
  94.                 if(key2==0)
  95.                 {
  96.                         num--;
  97.                         if(num<0)
  98.                                 num=59;
  99.                         while(!key2);
  100.                 }
  101.         }
  102.         if(key3==0)
  103.         {
  104.                 delayms(10);
  105.                 if(key3==0)
  106.                 {
  107.                         num=0;
  108.                         while(!key3);
  109.                 }
  110.         }
  111.         if(key4==0)
  112.         {
  113.                 delayms(10);
  114.                 if(key4==0)
  115.                 {
  116.                         while(!key4);
  117.                         TR0=~TR0;
  118.                 }
  119.         }
  120. }
复制代码
回复

使用道具 举报

ID:584814 发表于 2022-1-7 08:22 | 显示全部楼层
标准美国话:error C161: 'num': formal parameter ignored
山东美国话:错误型号C161:对形式参数num无法理解
可参见变量的用法,包括但不限于全局变量啥的,因为改成全局变量更乱
回复

使用道具 举报

ID:908826 发表于 2022-1-7 08:38 | 显示全部楼层
你看看主函数那个调用的,你都调用了,你还加返回类型干嘛?把返回类型void去掉
回复

使用道具 举报

ID:1000412 发表于 2022-1-8 20:15 | 显示全部楼层
wulin 发表于 2022-1-7 07:45
子函数没有全部声明。

哦哦,怪不得
回复

使用道具 举报

ID:1000412 发表于 2022-1-8 20:16 | 显示全部楼层
Hephaestus 发表于 2022-1-6 23:38
void display(uchar numdis);

声明函数原型只需要告诉编译器参数是什么类型即可,也就是uchar足够用了, ...

定义一下numdis,确实有点麻烦了
回复

使用道具 举报

ID:526543 发表于 2022-1-9 12:05 | 显示全部楼层
void display(uchar numdis);

声明函数原型只需要告诉编译器参数是什么类型即可,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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