找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

keil编译错误missing';' before'i'

查看数: 8682 | 评论数: 24 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-5-23 13:31

正文摘要:

missing';' before'i' 大神们那里出问题

回复

ID:390775 发表于 2018-9-4 18:26
你把 uchar i   ;
改为  uchar   i;  //把逗号“;”  与 ‘i’  中间不要有空格试下

ID:338412 发表于 2018-5-25 21:59
i定义附初值为0,本身就小于200,改成大于200,i++,
ID:338398 发表于 2018-5-25 21:28
这个for语句一般不直接写在定义函数下面的,而且你这个for函数是个死循环,0开始减的话永远到不了200啊,如果函数是为了延时的话可以写一个delay函数
ID:331292 发表于 2018-5-25 21:03
uchar预定义了吗?改成int试一试
ID:331292 发表于 2018-5-25 20:48
你把uchar改为int试一试。
ID:338273 发表于 2018-5-25 19:11
uchar 没有定义,define unsigned char uchar
ID:338264 发表于 2018-5-25 18:21
写一个这样的延时函数void delay (int x) { int i,j; for (i=0;i<x;i++)  for(j=0;j<600;j++); },然后直接调用函数。
ID:338264 发表于 2018-5-25 18:20
写一个像这样的函数void delay (int x) { int i,j; for (i=0;i<x;i++)  for(j=0;j<600;j++); },然后在主程里面调用
ID:338264 发表于 2018-5-25 18:18
这个for循环没有写在一个延时函数里面比如void delay(){for(i=0;<200;i--);}。
ID:338204 发表于 2018-5-25 17:02
应该是for(i=0;i<200;i++);
ID:141132 发表于 2018-5-25 11:38
根据错误提示来看,你 uchar i ;这个语句后面缺了一个分号,要知道分号必须紧贴最后一个字符,改成下面这样应该就没问题了 uchar i;
ID:337790 发表于 2018-5-25 08:37

这个for语句一般不直接写在定义函数下面的,而且你这个for函数是个死循环,0开始减的话永远到不了200啊,如果函数是为了延时的话可以写一个delay函数
ID:268016 发表于 2018-5-25 07:42
uchar变量 i=0 后i-- 结果i=0xff ,是255,不是负数,不存在变量类型错误之说

评分

参与人数 1黑币 +8 收起 理由
hedianzi + 8 赞一个!

查看全部评分

ID:168295 发表于 2018-5-25 02:41
angmall 发表于 2018-5-24 23:45
你写漏了
应该位于delay()延时子程序中。

变量i是uchar(无符号字符型的),当执行i--后,i < 0,属于变量类型错误
ID:168295 发表于 2018-5-25 02:37
uchar是无符号字符型变量类型错误 i--后i < 0,属于
ID:328769 发表于 2018-5-25 01:51
对,。那个肯定是延时函数。你抄low了
ID:155507 发表于 2018-5-24 23:45
你写漏了
应该位于delay()延时子程序中。

  1. #include <reg51.h>
  2. #include "AT24C02.h"
  3. sbit AT24C02_SDA = P3^6;        //定义数据线
  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总线,准备发送数据
复制代码

ID:268016 发表于 2018-5-24 20:26
我认为程序段的位置确实不对,应该位于某个子程序中。但死循环,我觉得不是,是可以执行一次的。执行一次后就脱离循环了。

评分

参与人数 1黑币 +8 收起 理由
hedianzi + 8 回帖助人的奖励!

查看全部评分

ID:331575 发表于 2018-5-24 18:29
for函数放置位置不对
ID:337301 发表于 2018-5-24 14:46
这个程序段的位置不对,应该写在一个子程序里面
ID:307829 发表于 2018-5-24 10:26
这个for语句一般不直接写在定义函数下面的,而且你这个for函数是个死循环,0开始减的话永远到不了200啊,如果函数是为了延时的话可以写一个delay函数
ID:295783 发表于 2018-5-24 09:17
你这段程序加的位置不对
可以写成子函数
希望对你有帮助
ID:296970 发表于 2018-5-23 20:50
你这for是死循环吗
ID:319344 发表于 2018-5-23 19:28
有问题,如果你这个for循环是实现延时,那肯定需要调用啊,调用的话你不是写的子函数,也不是放在main内,你把它写成子函数问题就解决了

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

Powered by 单片机教程网

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