標(biāo)題: 單片機(jī)鍵盤error C161: 'num': formal parameter ignored [打印本頁(yè)]

作者: 六爻zzzz    時(shí)間: 2022-1-6 21:57
標(biāo)題: 單片機(jī)鍵盤error C161: 'num': formal parameter ignored
#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;
                }
                }

}                                  


作者: Hephaestus    時(shí)間: 2022-1-6 23:38
void display(uchar numdis);

聲明函數(shù)原型只需要告訴編譯器參數(shù)是什么類型即可,也就是uchar足夠用了,加numdis是個(gè)什么鬼?
作者: wulin    時(shí)間: 2022-1-7 07:45
子函數(shù)沒(méi)有全部聲明。
  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. }
復(fù)制代碼

作者: man1234567    時(shí)間: 2022-1-7 08:22
標(biāo)準(zhǔn)美國(guó)話:error C161: 'num': formal parameter ignored
山東美國(guó)話:錯(cuò)誤型號(hào)C161:對(duì)形式參數(shù)num無(wú)法理解
可參見(jiàn)變量的用法,包括但不限于全局變量啥的,因?yàn)楦某扇肿兞扛鼇y

作者: 13205495918    時(shí)間: 2022-1-7 08:38
你看看主函數(shù)那個(gè)調(diào)用的,你都調(diào)用了,你還加返回類型干嘛?把返回類型void去掉
作者: 六爻zzzz    時(shí)間: 2022-1-8 20:15
wulin 發(fā)表于 2022-1-7 07:45
子函數(shù)沒(méi)有全部聲明。

哦哦,怪不得

作者: 六爻zzzz    時(shí)間: 2022-1-8 20:16
Hephaestus 發(fā)表于 2022-1-6 23:38
void display(uchar numdis);

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

定義一下numdis,確實(shí)有點(diǎn)麻煩了
作者: 123456ZXC1    時(shí)間: 2022-1-9 12:05
void display(uchar numdis);

聲明函數(shù)原型只需要告訴編譯器參數(shù)是什么類型即可,




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1