找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9389|回復(fù): 1
收起左側(cè)

error C267: 'Delay_ms': requires ANSI-style prototype程序錯誤,需要怎么改

[復(fù)制鏈接]
ID:372936 發(fā)表于 2018-7-17 17:01 | 顯示全部樓層 |閱讀模式
這個程序運行后出現(xiàn)
compiling main.c...
..\code\main.c(1): warning C318: can't open file 'main.h'
..\CODE\MAIN.C(25): warning C206: 'Delay_ms': missing function-prototype
..\CODE\MAIN.C(25): error C267: 'Delay_ms': requires ANSI-style prototype
..\code\main.c - 1 Error(s), 2 Warning(s).


這是怎么回事呀?需要怎么修改?

  1. #include "main.h"
  2. #include "LCD1602.h"
  3. #include "HX711.h"
  4. #include "intrins.h"

  5. unsigned long HX711_Buffer = 0;
  6. unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;
  7. char Price_Count = 0;
  8. unsigned char KEY_NUM = 0;
  9. unsigned char Price_Buffer[3] = {0x00,0x00,0x00};
  10. unsigned long Money = 0;
  11. bit Flag_OK = 0;

  12. //****************************************************
  13. //主函數(shù)
  14. //****************************************************
  15. void main()
  16. {
  17.         Init_LCD1602();                                                                        //初始化LCD1602

  18.         LCD1602_write_com(0x80);                                                //指針設(shè)置
  19.         LCD1602_write_word("Welcome to use! ");                        //開機畫面第一行


  20.         Delay_ms(2000);                 //延時2s


  21. loop:Price_Count = 0;
  22.         Price_Buffer[0] = 0;
  23.         Price_Buffer[1] = 0;
  24.         Price_Buffer[2] = 0;
  25.         Flag_OK = 0;

  26.         LCD1602_write_com(0x80);                                                //指針設(shè)置
  27.         LCD1602_write_word("+WEI |PRI | MON ");
  28.         LCD1602_write_com(0x80+0x40);                                //指針設(shè)置
  29.         LCD1602_write_word("0.000|  . |   . ");

  30.       

  31.       
  32.         Get_Maopi();                                //稱毛皮重量

  33.         while(1)
  34.         {
  35.                 if( Flag_OK == 0)
  36.                 {
  37.                         Get_Weight();                        //稱重
  38.       
  39.                         //顯示當(dāng)前重量
  40.                         LCD1602_write_com(0x80+0x40);
  41.                         LCD1602_write_data(Weight_Shiwu/1000 + 0x30);
  42.                         LCD1602_write_data('.');
  43.                         LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
  44.                         LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
  45.                         LCD1602_write_data(Weight_Shiwu%10 + 0x30);
  46.                 }

  47.                 KEY_NUM = KEY_Scan();

  48.                 if( KEY_NUM != 0x55)                        //當(dāng)返回的不是初值時候,確認(rèn)按鍵按下。
  49.                 {
  50.                         if(KEY_NUM == 16)                        //數(shù)字A鍵,去皮功能
  51.                         {
  52.                                 Get_Maopi();                        //去皮      
  53.                         }

  54.                         if(KEY_NUM == 15)                        //數(shù)字B鍵清除鍵,二次測量
  55.                         {
  56.                                 goto loop;      
  57.                         }

  58.                         if(KEY_NUM == 12)                        //數(shù)字C輸入單價錯誤時返回上一步
  59.                         {
  60.                                 Price_Count--;
  61.                                 if( Price_Count < 0)
  62.                                 {
  63.                                         Price_Count = 0;
  64.                                 }
  65.                               
  66.                                 Price_Buffer[Price_Count] = 0;                           //清除上一個輸入的數(shù)據(jù)

  67.                                 switch(Price_Count)
  68.                                 {
  69.                                         case 0:
  70.                                                         LCD1602_write_com(0x80+0x40+6);
  71.                                                         LCD1602_write_data(' ');
  72.                                                         break;
  73.                                         case 1:
  74.                                                         LCD1602_write_com(0x80+0x40+7);
  75.                                                         LCD1602_write_data(' ');
  76.                                                         break;
  77.                                         case 2:
  78.                                                         LCD1602_write_com(0x80+0x40+9);
  79.                                                         LCD1602_write_data(' ');
  80.                                                         break;
  81.                                         default : break;
  82.                                 }      
  83.                         }

  84.                         if(KEY_NUM == 13)                        //數(shù)字D鍵,計算總價
  85.                         {
  86.                                 Money = Price_Buffer[0] * 100 + Price_Buffer[1] * 10 + Price_Buffer[2];      
  87.                                 Money = Money * Weight_Shiwu / 1000;
  88.                                 LCD1602_write_com(0x80+0x40+11);
  89.                                 LCD1602_write_data(Money/1000 + 0x30);                       
  90.                                 LCD1602_write_data(Money%1000/100 + 0x30);
  91.                                 LCD1602_write_data(Money%100/10 + 0x30);
  92.                                 LCD1602_write_data('.');
  93.                                 LCD1602_write_data(Money%10 + 0x30);
  94.                               
  95.                                 Flag_OK = 1;                                       
  96.                         }

  97.                         if(KEY_NUM >= 0 && KEY_NUM <= 9)                                          //顯示輸入的價值
  98.                         {
  99.                                 Price_Buffer[Price_Count] = KEY_NUM;
  100.       
  101.                                 switch(Price_Count)
  102.                                 {
  103.                                         case 0:
  104.                                                         LCD1602_write_com(0x80+0x40+6);
  105.                                                         LCD1602_write_data(Price_Buffer[0] + 0x30);
  106.                                                         break;
  107.                                         case 1:
  108.                                                         LCD1602_write_com(0x80+0x40+7);
  109.                                                         LCD1602_write_data(Price_Buffer[1] + 0x30);
  110.                                                         break;
  111.                                         case 2:
  112.                                                         LCD1602_write_com(0x80+0x40+9);
  113.                                                         LCD1602_write_data(Price_Buffer[2] + 0x30);
  114.                                                         break;
  115.                                         default : break;
  116.                                 }
  117.       
  118.                                 Price_Count++;
  119.       
  120.                                 if( Price_Count >= 3)
  121.                                 {
  122.                                         Price_Count = 3;
  123.                                 }
  124.                         }

  125.                 }

  126.         }
  127. }

  128. //****************************************************
  129. //矩陣鍵盤掃描
  130. //****************************************************
  131. unsigned char KEY_Scan()
  132. {
  133.         unsigned char temp = 0;
  134.         unsigned char com = 0x55 , com1 = 0 , com2 = 0;
  135.         P3=0xf0;
  136.         if(P3!=0xf0)
  137.         {
  138.                 com1=P3;
  139.                 P3=0x0f;
  140.                 com2=P3;        
  141.         }
  142.         P3=0xf0;
  143.     while(P3!=0xf0);         
  144.         temp=com1|com2;
  145.         if(temp==0xee)com=1;//數(shù)字1
  146.         if(temp==0xed)com=4;//數(shù)字4
  147.         if(temp==0xeb)com=7;//數(shù)字7
  148.         if(temp==0xe7)com=11;//備用鍵*號鍵
  149.         if(temp==0xd7)com=0;//數(shù)字0
  150.         if(temp==0xb7)com=14;//備用鍵*號鍵
  151.       

  152.         if(temp==0xde)com=2; //數(shù)字2
  153.         if(temp==0xdd)com=5; //數(shù)字5
  154.         if(temp==0xdb)com=8;//數(shù)字8

  155.         if(temp==0xbe)com=3;//數(shù)字3
  156.         if(temp==0xbd)com=6; //數(shù)字6
  157.         if(temp==0xbb)com=9;//數(shù)字9

  158.         if(temp==0x7e)com=16;//數(shù)字A鍵,去皮功能         
  159.         if(temp==0x7d)com=15;//數(shù)字B鍵清除鍵,二次測量
  160.         if(temp==0x7b)com=12;//數(shù)字C輸入單價錯誤時返回上一步
  161.         if(temp==0x77)com=13;//數(shù)字D鍵,計算總價         
  162.         return(com);
  163. }

  164. //****************************************************
  165. //稱重
  166. //****************************************************
  167. void Get_Weight()
  168. {
  169.         HX711_Buffer = HX711_Read();
  170.         HX711_Buffer = HX711_Buffer/100;
  171.         if(HX711_Buffer > Weight_Maopi)                       
  172.         {
  173.                 Weight_Shiwu = HX711_Buffer;
  174.                 Weight_Shiwu = Weight_Shiwu - Weight_Maopi;        //獲取實物的AD采樣數(shù)值。
  175.         Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.22+0.05); //計算實物的實際重量
  176. //因為不同的傳感器特性曲線不一樣,因此,每一個傳感器需要矯正這里的4.30這個除數(shù)。
  177. //當(dāng)發(fā)現(xiàn)測試出來的重量偏大時,增加該數(shù)值。
  178. //如果測試出來的重量偏小時,減小改數(shù)值。
  179. //該數(shù)值一般在4.0-5.0之間。因傳感器不同而定。
  180. //+0.05是為了四舍五入百分位
  181.                 Buzzer = 1;                                //關(guān)閉警報
  182.         }
  183. //        else if(HX711_Buffer < Weight_Maopi - 30)
  184. //        {
  185. //                Buzzer = 0;                                //負(fù)重量報警
  186. //        }
  187. //        else if(HX711_Buffer > Weight_Maopi + 24970)                //大于5Kg的最大量程,報警      
  188. //        {
  189. //                Buzzer = 0;
  190. //        }

  191.         if(Weight_Shiwu > 5000 || HX711_Buffer < Weight_Maopi - 30)
  192.         {
  193.                 Buzzer = 0;      
  194.         }
  195.         else
  196.         {
  197.                 Buzzer = 1;
  198.         }

  199.       
  200. }

  201. //****************************************************
  202. //獲取毛皮重量
  203. //****************************************************
  204. void Get_Maopi()
  205. {
  206.         HX711_Buffer = HX711_Read();
  207.         Weight_Maopi = HX711_Buffer/100;               
  208. }

  209. //****************************************************
  210. //MS延時函數(shù)(12M晶振下測試)
  211. //****************************************************
  212. void Delay_ms(unsigned int n)
  213. {
  214.         unsigned int  i,j;
  215.         for(i=0;i<n;i++)
  216.                 for(j=0;j<123;j++);
  217. }


復(fù)制代碼







回復(fù)

使用道具 舉報

ID:245053 發(fā)表于 2018-7-17 19:36 | 顯示全部樓層
Delay_ms這個函數(shù)在編譯時無法獲取其原型。
要么把Delay_ms函數(shù)體放在調(diào)用它的函數(shù)前面,要么在前面添加writecmd()函數(shù)的原型聲明。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表