找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4764|回复: 5
收起左侧

warning C206: 'ScanKeyboard': missing function-prototype,这个到底要怎么改呀

[复制链接]
ID:453409 发表于 2018-12-24 14:20 | 显示全部楼层 |阅读模式
  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

回复

使用道具 举报

ID:451718 发表于 2018-12-24 15:23 | 显示全部楼层
预定义ScanKeyboard();的时候分号是个全角的!  分号,分号,分号错了!!!
回复

使用道具 举报

ID:449525 发表于 2018-12-24 22:34 来自手机 | 显示全部楼层
robinsonlin 发表于 2018-12-24 15:23
预定义ScanKeyboard();的时候分号是个全角的!  分号,分号,分号错了!!!

好眼力!我会把keil设置下,中英文显示不一样,一眼就看出来了
回复

使用道具 举报

ID:448597 发表于 2018-12-25 10:52 | 显示全部楼层
呵呵,确实好眼力,建议复制别人程序时可以复制后在WORD中进行选择性粘贴,选无格式粘贴,在复制到KEIL中。
回复

使用道具 举报

ID:174087 发表于 2018-12-25 19:23 | 显示全部楼层
robinsonlin 发表于 2018-12-24 15:23
预定义ScanKeyboard();的时候分号是个全角的!  分号,分号,分号错了!!!

哈哈哈哈哈哈那是真的牛逼!
回复

使用道具 举报

ID:357520 发表于 2018-12-26 12:27 | 显示全部楼层
robinsonlin 发表于 2018-12-24 15:23
预定义ScanKeyboard();的时候分号是个全角的!  分号,分号,分号错了!!!

忍不住想叫你一声大神
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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