找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4364|回复: 4
打印 上一主题 下一主题
收起左侧

error C129: missing ';' before 'useconds' keil中的一个问题 求大神解答疑惑

[复制链接]
跳转到指定楼层
楼主
ID:253996 发表于 2017-11-27 00:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有一个错误:FGCCGCG.C(60): error C129: missing ';' before 'useconds'(红色部分)
之前有一个错误是我未定义“useconds”,于是我在上面加了 “unchar useconds;”
求大神解答疑惑,谢谢!

#include <REG52.H>
#define uchar unsigned char
#define unit unsigned int
sbit DQ = P1^0;
sbit RS = P1^7;
sbit RW = P1^6;
sbit EN = P1^5;
union {
    uchar c[2];
        unit x;
} temp;
uchar flag;
unit cc,cc2;
float cc1;
uchar buff1[13] = {"temperature:"};
uchar buff2[6] = {"+00.0"};
//检查忙函数
void fbusy()
{
    P2 = 0xff;
        RS = 0;
        RW = 1;
        EN = 1;
        EN = 0;
        while((P2 & 0x80))
        {
           EN = 0;
           EN = 1 ;
        }
}
//写命令函数
void wc51r(uchar j)
{
   fbusy();
   EN = 0;
   RS = 0;
   RW = 0;
   EN = 1;
   P2 = j;
   EN = 0;
}
//写数据函数
void wc51ddr(char j)
{
   fbusy();
   EN = 0;
   RS = 1;
   RW = 0;
   EN = 1;
   P2 = j;
   EN = 0;
}
void init()
{
   wc51r(0x01);
   wc51r(0x38);
   wc51r(0x0c);
   wc51r(0x06);
}
unchar useconds;
void delay(uint useconds)
{
   for(; useconds>0; usecond--);
}
uchar ow_reset(void)
{
   uchar presence;
   DQ = 0;
   delay(50);
   DQ = 1;
   delay(3);
   presence = DQ;
   delay(25);
   return(presence);
}
uchar read_byte(void)
{
   uchar i;
   uchar value = 0;
   for (i=8; i>0; i--)
   {
     value >>= 1;
         DQ = 0;
         DQ = 1;
         delay(1);
         if(DQ) value |=0x80;
         delay(6);
        }
        return(value);
}
void write_byte(uchar val)
{
   uchar i;
   for (i=8; i>1; i--)
   {
     DQ = 0 ;
         DQ = val&0x01;
         delay(5);
         DQ=1;
         val = val/2;
   }
   delay(5);
}

void Read_Temperature(void)
{
   ow_reset();
   write_byte(0xCC);
   write_byte(0xBE);
   temp.c[1] = read_byte();
   temp.c[0] = read_byte();
   ow_reset();
   write_byte(0xCC);   
   write_byte(0x44);
   return;
}
void main()
{
   uchar k;
   delay(10);
   EA = 0;
   flag = 0;
   init();
   wc51r(0x80);
   for (k=0; k<13; k++)
   {wc51ddr(buff1[k]);}
   while(1)
   {
     delay(10000);
         Read_Temperature();
         cc = temp.c[0]*256.0 + temp.c[1];
         if  (temp.c [0] > 0xf8)   {flag=1; cc=~cc+1;}
         else flag=0;
         cc1 = cc*0.0625;
         cc2 = cc1*100;
         buff2[1] = cc2/1000 + 0x30;
         if (buff2[1] == 0x30)
             buff2[1] = 0x20;
                 buff2[2] = cc2/100        - (cc2/1000)*10 + 0x30;
                    buff2[4] = cc2/10        - (cc2/1000)*10 + 0x30;
                 if (flag==1)
                 buff2[0] = '-';
     else
             buff2[0] = '+';
     wc51r(0xc5);
         for (k=0; k<6; k++)
         { wc51ddr (buff2[k]);}
   }
}      



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

5#
ID:192235 发表于 2017-11-27 08:49 | 只看该作者
前面定义  #define uchar unsigned char
应该  uchar useconds;才对吧
回复

使用道具 举报

地板
ID:212797 发表于 2017-11-27 08:47 | 只看该作者
把变量定义到文件的开头去。
回复

使用道具 举报

板凳
ID:164602 发表于 2017-11-27 08:43 | 只看该作者
其实没有什么大错,就是打字时不小心吧!
你看你的程序:
#define uchar unsigned char(第二行)
看清楚没?你定义的是uchar
再看你的错误行:unchar useconds;
我是直接复制粘贴的哦!
看清楚没有?再看、再看、看看。。。。看。,。。。。看,看清楚没有?
你定义uchar,用时却写成了unxhar。多了一个字母。
楼上板主给你例子也是那样错的。你看懂没?
回复

使用道具 举报

沙发
ID:1 发表于 2017-11-27 03:37 | 只看该作者
看这个类似的问题:http://www.51hei.com/bbs/dpj-78666-1.html
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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