找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

keil編譯錯(cuò)誤missing';' before'i'

  [復(fù)制鏈接]
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
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

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

  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總線,準(zhǔn)備發(fā)送數(shù)據(jù)
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

變量i是uchar(無符號(hào)字符型的),當(dāng)執(zhí)行i--后,i < 0,屬于變量類型錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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