找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 7989|回復: 24
收起左側

keil編譯錯誤missing';' before'i'

  [復制鏈接]
ID:268064 發(fā)表于 2018-5-23 13:31 | 顯示全部樓層 |閱讀模式
20黑幣
missing';' before'i'
大神們那里出問題

FL4S}69E_WZ)95I0QZL](%6.png
7XK)DD}JF_O)I17U~MWXH4P.png
回復

使用道具 舉報

ID:319344 發(fā)表于 2018-5-23 19:28 | 顯示全部樓層
有問題,如果你這個for循環(huán)是實現(xiàn)延時,那肯定需要調用啊,調用的話你不是寫的子函數(shù),也不是放在main內,你把它寫成子函數(shù)問題就解決了
回復

使用道具 舉報

ID:296970 發(fā)表于 2018-5-23 20:50 | 顯示全部樓層
你這for是死循環(huán)嗎
回復

使用道具 舉報

ID:295783 發(fā)表于 2018-5-24 09:17 | 顯示全部樓層
你這段程序加的位置不對
可以寫成子函數(shù)
希望對你有幫助
回復

使用道具 舉報

ID:307829 發(fā)表于 2018-5-24 10:26 | 顯示全部樓層
這個for語句一般不直接寫在定義函數(shù)下面的,而且你這個for函數(shù)是個死循環(huán),0開始減的話永遠到不了200啊,如果函數(shù)是為了延時的話可以寫一個delay函數(shù)
回復

使用道具 舉報

ID:337301 發(fā)表于 2018-5-24 14:46 | 顯示全部樓層
這個程序段的位置不對,應該寫在一個子程序里面
回復

使用道具 舉報

ID:331575 發(fā)表于 2018-5-24 18:29 來自觸屏版 | 顯示全部樓層
for函數(shù)放置位置不對
回復

使用道具 舉報

ID:268016 發(fā)表于 2018-5-24 20:26 | 顯示全部樓層
我認為程序段的位置確實不對,應該位于某個子程序中。但死循環(huán),我覺得不是,是可以執(zhí)行一次的。執(zhí)行一次后就脫離循環(huán)了。

評分

參與人數(shù) 1黑幣 +8 收起 理由
hedianzi + 8 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:155507 發(fā)表于 2018-5-24 23:45 | 顯示全部樓層
你寫漏了
應該位于delay()延時子程序中。

  1. #include <reg51.h>
  2. #include "AT24C02.h"
  3. sbit AT24C02_SDA = P3^6;        //定義數(shù)據(jù)線
  4. sbit AT24C02_SCL = P3^7;        //定義時鐘線

  5. void delay()
  6. {
  7.         uchar i;
  8.         for(i=0; i<200; i--);
  9. }
  10. void I2C_Start()
  11. {
  12.         AT24C02_SDA = 1;   delay();
  13.         AT24C02_SCL = 1;   delay();
  14.         AT24C02_SDA = 0;   delay();
  15.         AT24C02_SCL = 0;
  16. }                      //鉗位I2C總線,準備發(fā)送數(shù)據(jù)
復制代碼

回復

使用道具 舉報

ID:328769 發(fā)表于 2018-5-25 01:51 來自觸屏版 | 顯示全部樓層
對,。那個肯定是延時函數(shù)。你抄low了
回復

使用道具 舉報

ID:168295 發(fā)表于 2018-5-25 02:37 | 顯示全部樓層
uchar是無符號字符型變量類型錯誤 i--后i < 0,屬于
回復

使用道具 舉報

ID:168295 發(fā)表于 2018-5-25 02:41 | 顯示全部樓層
angmall 發(fā)表于 2018-5-24 23:45
你寫漏了
應該位于delay()延時子程序中。

變量i是uchar(無符號字符型的),當執(zhí)行i--后,i < 0,屬于變量類型錯誤
回復

使用道具 舉報

ID:268016 發(fā)表于 2018-5-25 07:42 | 顯示全部樓層
uchar變量 i=0 后i-- 結果i=0xff ,是255,不是負數(shù),不存在變量類型錯誤之說

評分

參與人數(shù) 1黑幣 +8 收起 理由
hedianzi + 8 贊一個!

查看全部評分

回復

使用道具 舉報

ID:337790 發(fā)表于 2018-5-25 08:37 | 顯示全部樓層

這個for語句一般不直接寫在定義函數(shù)下面的,而且你這個for函數(shù)是個死循環(huán),0開始減的話永遠到不了200啊,如果函數(shù)是為了延時的話可以寫一個delay函數(shù)
回復

使用道具 舉報

ID:141132 發(fā)表于 2018-5-25 11:38 | 顯示全部樓層
根據(jù)錯誤提示來看,你 uchar i ;這個語句后面缺了一個分號,要知道分號必須緊貼最后一個字符,改成下面這樣應該就沒問題了 uchar i;
回復

使用道具 舉報

ID:338204 發(fā)表于 2018-5-25 17:02 | 顯示全部樓層
應該是for(i=0;i<200;i++);
回復

使用道具 舉報

ID:338264 發(fā)表于 2018-5-25 18:18 | 顯示全部樓層
這個for循環(huán)沒有寫在一個延時函數(shù)里面比如void delay(){for(i=0;<200;i--);}。
回復

使用道具 舉報

ID:338264 發(fā)表于 2018-5-25 18:20 | 顯示全部樓層
寫一個像這樣的函數(shù)void delay (int x) { int i,j; for (i=0;i<x;i++)  for(j=0;j<600;j++); },然后在主程里面調用
回復

使用道具 舉報

ID:338264 發(fā)表于 2018-5-25 18:21 | 顯示全部樓層
寫一個這樣的延時函數(shù)void delay (int x) { int i,j; for (i=0;i<x;i++)  for(j=0;j<600;j++); },然后直接調用函數(shù)。
回復

使用道具 舉報

ID:338273 發(fā)表于 2018-5-25 19:11 | 顯示全部樓層
uchar 沒有定義,define unsigned char uchar
回復

使用道具 舉報

ID:331292 發(fā)表于 2018-5-25 20:48 | 顯示全部樓層
你把uchar改為int試一試。
回復

使用道具 舉報

ID:331292 發(fā)表于 2018-5-25 21:03 | 顯示全部樓層
uchar預定義了嗎?改成int試一試
回復

使用道具 舉報

ID:338398 發(fā)表于 2018-5-25 21:28 | 顯示全部樓層
這個for語句一般不直接寫在定義函數(shù)下面的,而且你這個for函數(shù)是個死循環(huán),0開始減的話永遠到不了200啊,如果函數(shù)是為了延時的話可以寫一個delay函數(shù)
回復

使用道具 舉報

ID:338412 發(fā)表于 2018-5-25 21:59 | 顯示全部樓層
i定義附初值為0,本身就小于200,改成大于200,i++,
回復

使用道具 舉報

ID:390775 發(fā)表于 2018-9-4 18:26 | 顯示全部樓層
你把 uchar i   ;
改為  uchar   i;  //把逗號“;”  與 ‘i’  中間不要有空格試下

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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