标题: error C129: missing ';' before 'useconds' keil中的一个问题 求大神解答疑惑 [打印本页]

作者: 、南絮    时间: 2017-11-27 00:52
标题: error C129: missing ';' before 'useconds' keil中的一个问题 求大神解答疑惑
有一个错误: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]);}
   }
}      




作者: admin    时间: 2017-11-27 03:37
看这个类似的问题:http://www.51hei.com/bbs/dpj-78666-1.html
作者: HC6800-ES-V2.0    时间: 2017-11-27 08:43
其实没有什么大错,就是打字时不小心吧!
你看你的程序:
#define uchar unsigned char(第二行)
看清楚没?你定义的是uchar
再看你的错误行:unchar useconds;
我是直接复制粘贴的哦!
看清楚没有?再看、再看、看看。。。。看。,。。。。看,看清楚没有?
你定义uchar,用时却写成了unxhar。多了一个字母。
楼上板主给你例子也是那样错的。你看懂没?
作者: xbook_ben    时间: 2017-11-27 08:47
把变量定义到文件的开头去。
作者: 军师祭酒    时间: 2017-11-27 08:49
前面定义  #define uchar unsigned char
应该  uchar useconds;才对吧




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1