找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3019|回復: 7
打印 上一主題 下一主題
收起左側

單片機鍵盤error C161: 'num': formal parameter ignored

[復制鏈接]
跳轉到指定樓層
樓主
ID:1000412 發(fā)表于 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;
                }
                }

}                                  

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:883242 發(fā)表于 2022-1-6 23:38 | 只看該作者
void display(uchar numdis);

聲明函數原型只需要告訴編譯器參數是什么類型即可,也就是uchar足夠用了,加numdis是個什么鬼?
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 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 發(fā)表于 2022-1-7 08:22 | 只看該作者
標準美國話:error C161: 'num': formal parameter ignored
山東美國話:錯誤型號C161:對形式參數num無法理解
可參見變量的用法,包括但不限于全局變量啥的,因為改成全局變量更亂
回復

使用道具 舉報

5#
ID:908826 發(fā)表于 2022-1-7 08:38 | 只看該作者
你看看主函數那個調用的,你都調用了,你還加返回類型干嘛?把返回類型void去掉
回復

使用道具 舉報

6#
ID:1000412 發(fā)表于 2022-1-8 20:15 | 只看該作者
wulin 發(fā)表于 2022-1-7 07:45
子函數沒有全部聲明。

哦哦,怪不得
回復

使用道具 舉報

7#
ID:1000412 發(fā)表于 2022-1-8 20:16 | 只看該作者
Hephaestus 發(fā)表于 2022-1-6 23:38
void display(uchar numdis);

聲明函數原型只需要告訴編譯器參數是什么類型即可,也就是uchar足夠用了, ...

定義一下numdis,確實有點麻煩了
回復

使用道具 舉報

8#
ID:526543 發(fā)表于 2022-1-9 12:05 | 只看該作者
void display(uchar numdis);

聲明函數原型只需要告訴編譯器參數是什么類型即可,
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表