標題: warning C206: 'ScanKeyboard': missing function-prototype,這個到底要怎么改呀 [打印本頁]

作者: 單片機好難啊!    時間: 2018-12-24 14:20
標題: warning C206: 'ScanKeyboard': missing function-prototype,這個到底要怎么改呀
  1. #include<reg52.h>
  2. #define LCD1602_DB P0
  3. sbit LCD1602_RS=P1^0;
  4. sbit LCD1602_RW=P1^1;
  5. sbit LCD1602_E=P1^5;
  6. void InitLcd1602();
  7. void delay_ms(unsigned int d);
  8. void ScanKeyboard();
  9. void LcdShowStr(unsigned char x,unsigned char y,unsigned char*str);
  10. void LcdShowDat(unsigned char x,unsigned char y,unsigned char dat);
  11. unsigned char cnt=0;
  12. unsigned char w=0,key=0;
  13. unsigned char code KeyCode[]=
  14. {0xe7,0xd7,0xb7,0x77,0xeb,0xdb,0xbb,0x7b,0xed,0xdd,0xdb,0xbd,0x7d,0xee,0xde,0xbe,0x7e};
  15. void main()
  16. {        
  17.         unsigned char temp;
  18.         unsigned char str[]="hello";
  19.         TMOD=0X01;
  20.         TH0=0X4C;
  21.         TL0=0X00;
  22.         IE=0X82;
  23.         TR0=1;
  24.         InitLcd1602();
  25.         LcdShowStr(2,0,str);
  26.         while(1);
  27.         {
  28.         ScanKeyboard();
  29.         temp=w;
  30.         LcdShowDat(4,1,temp);
  31.         }
  32. }
  33. void LcdWaitReady()
  34. {
  35.         unsigned char sta;
  36.         LCD1602_DB=0XFF;
  37.         LCD1602_RS=0;
  38.         LCD1602_RW=1;
  39.         do{
  40.                 LCD1602_E=1;
  41.                 sta=LCD1602_DB;
  42.                 LCD1602_E=0;
  43.         }
  44.         while(sta&0x80);
  45. }
  46. void LcdWriteCmd(unsigned char cmd)
  47. {
  48.         LcdWaitReady();
  49.         LCD1602_RS=0;
  50.         LCD1602_RW=0;
  51.         LCD1602_DB=cmd;
  52.         LCD1602_E=1;
  53.         LCD1602_E=0;
  54. }
  55. void LcdWriteDat(unsigned char dat)
  56. {
  57.         LcdWaitReady();
  58.         LCD1602_RS=1;
  59.         LCD1602_RW=0;
  60.         LCD1602_DB=dat;
  61.         LCD1602_E=1;
  62.         LCD1602_E=0;
  63. }
  64. void LcdSetCursor(unsigned char x,unsigned char y)
  65. {
  66.         unsigned char addr;
  67.         if(y==0)
  68.         addr=0x00+x;
  69.         else
  70.         addr=0x40+x;
  71.         LcdWriteCmd(addr|0x80);
  72. }
  73. void LcdShowStr(unsigned char x,unsigned char y,unsigned char*str)
  74. {
  75.         LcdSetCursor(x,y);
  76.         while(*str!='\0')
  77.         {
  78.                 LcdWriteDat(*str++);
  79.         }
  80. }
  81. void InitLcd1602()
  82. {
  83.         LcdWriteCmd(0x38);
  84.         LcdWriteCmd(0x0c);
  85.         LcdWriteCmd(0x06);
  86.         LcdWriteCmd(0x01);
  87. }
  88. void ScanKeyboard()
  89. {
  90.         unsigned char scan1,scan2,keyboard;
  91.         unsigned char i;
  92.         P2=0xf0;
  93.         scan1=P2;
  94.         if((scan1&0xf0)!=0xf0)
  95.         {
  96.                 delay_ms(10);
  97.                 scan1=P2;
  98.                 if((scan1&0xf0)!=0xf0)
  99.                 {
  100.                         P2=0xf0;
  101.                         scan2=P2;
  102.                         keyboard=scan1|scan2;
  103.                         while((P2&0x0f)!=0x0f)
  104.                         for(i=0;i<=15;i++)
  105.                         {
  106.                                 if(keyboard==KeyCode[i])
  107.                                 key=i;
  108.                         }
  109.                 }
  110.         }
  111. }
  112. void clock()interrupt 1
  113. {
  114.         unsigned char i,r;
  115.         cnt++;
  116.         TH0=0X4C;
  117.         TL0=0X00;
  118.         if(i==1)
  119.         {
  120.                 w=0x20;
  121.         }
  122.         if(i==2)
  123.         {
  124.                 for(r=0;cnt<=20;r++)
  125.                 {
  126.                  w=0x61+0x01;
  127.                  if(r==3)
  128.                  {
  129.                          r=0;
  130.                          w=0x61;
  131.                  }
  132.                 }
  133.         }
  134. }
  135. void delay_ms(unsigned int d)
  136. {
  137.         unsigned char i;
  138.         while(d--)
  139.         {                                                                                                                                       
  140.                 for(i=0;i<=110;i++);
  141.         }
  142. }
復制代碼

ABC.C(90): warning C206: 'ScanKeyboard': missing function-prototype


作者: robinsonlin    時間: 2018-12-24 15:23
預定義ScanKeyboard();的時候分號是個全角的!  分號,分號,分號錯了。。
作者: 周超然    時間: 2018-12-24 22:34
robinsonlin 發(fā)表于 2018-12-24 15:23
預定義ScanKeyboard();的時候分號是個全角的!  分號,分號,分號錯了!!

好眼力!我會把keil設置下,中英文顯示不一樣,一眼就看出來了
作者: s021713    時間: 2018-12-25 10:52
呵呵,確實好眼力,建議復制別人程序時可以復制后在WORD中進行選擇性粘貼,選無格式粘貼,在復制到KEIL中。
作者: woshige    時間: 2018-12-25 19:23
robinsonlin 發(fā)表于 2018-12-24 15:23
預定義ScanKeyboard();的時候分號是個全角的!  分號,分號,分號錯了!!

哈哈哈哈哈哈那是真的牛逼!
作者: jll586    時間: 2018-12-26 12:27
robinsonlin 發(fā)表于 2018-12-24 15:23
預定義ScanKeyboard();的時候分號是個全角的!  分號,分號,分號錯了。!

忍不住想叫你一聲大神




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