找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机程序编译出现一大堆错误,怎样解决?

[复制链接]
跳转到指定楼层
楼主
ID:143767 发表于 2020-8-11 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序里面错的地方是我从别的程序移植过来的,想请大家帮我分析一下错在哪里,怎样解决,谢谢!
单片机源程序如下:
  1. #include<reg52.h>

  2. //宏定义
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define Data_ADC0809 P0                   //定义P0口为Data_ADC0809
  6. //sbit PARSER = P2^0;                              //串并行控制位
  7. //sbit BYTE = P2^1;                                //高低字节控制位
  8. //sbit RC = P2^4;                                  //读取转换控制位
  9. //sbit BUSY = P2^2;                                                                 //忙状态位

  10. //函数声明
  11. extern uchar ADC0809();

  12. sbit ST=P2^0;
  13. sbit EOC=P2^1;
  14. sbit OE=P2^2;

  15. sbit ADDR_A = P3^5;                              //低位地址控制位
  16. sbit ADDR_B = P3^6;                              //低位地址控制位
  17. sbit ADDR_C = P3^7;                                                                 //高位地址控制位

  18. void ConfigUART(unsigned int baud);              //串行口配置函数
  19. void ConfigTimer0();                             //定时器0配置函数
  20. void SendData(unsigned char ch);                 //字符发送函数
  21. void SendString(char *s);                        //字符串发送函数
  22. void GetVoltage();                               //ADC电压获取函数
  23. unsigned int Linear(double v);                   //线性插值函数,参数v为实测电压
  24. void DataProcess();                              //数据处理函数
  25. void LedBufRefresh();                            //数码管显示缓冲区刷新函数
  26. void UartSend();                                                                 //串口数据发送函数
  27. void delay(uint t);

  28. unsigned char voltage[] = {'0','.','0','0','0',0};
  29. unsigned char time_used[] = {'0','0','0',0};
  30. unsigned char percentage[] = {'0','0','0',0};
  31. unsigned long j,time_used_value,result,percentage_value,voltage_value;
  32. unsigned int code time_sample[21]={0,18,36,54,72,90,108,126,144,162,180,198,216,234,252,270,288,306,324,342,360};
  33. double code voltage_sample[21]={4.35,4.24,4.135,4.005,3.92,3.889,3.858,3.826,3.8,3.78,3.762,3.743,3.725,3.705,3.686,3.667,3.65,3.628,3.492,3.05,2};

  34. //共阳数码管显示字符转换表
  35. unsigned char code LedChar[] = {
  36.         0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
  37.     0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
  38. };
  39. //数码管显示缓冲区,初值0x00确保启动时都不亮
  40. unsigned char LedBuff[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  41. void main()
  42. {
  43.         ConfigUART(9600);                            //配置串行口工作模式及参数
  44.         ConfigTimer0();                              //配置定时器0用于数码管刷新
  45.         EA = 1;                                      //打开总中断
  46.         while(1)
  47.         {
  48.                    //正常模式
  49.                 if(Mode==0)
  50.                 {
  51.                         //读取AD值
  52.                         temp=ADC0809();

  53. }
  54.                 GetVoltage();                            //获取ADC电压值
  55.                 DataProcess();                           //数据处理
  56.                 LedBufRefresh();                         //显示缓冲区刷新
  57.                 UartSend();                              //串口发送
  58.                 for(j=0;j<30000;j++);                    //延时读取
  59.         }
  60. }
  61. /* 数据处理函数 */
  62. void DataProcess()
  63. {
  64.         /* 计算电压值 */
  65.         voltage_value = (unsigned long)(((double)result * 10 / 32767) * 1000 + 0.5);
  66.         /* 电压值数组 */
  67.         voltage[4] = '0' + voltage_value % 10;
  68.         voltage[3] = '0' + (voltage_value /10) % 10;
  69.         voltage[2] = '0' + (voltage_value /100) % 10;
  70.         voltage[0] = '0' + (voltage_value /1000) % 10;        
  71.         /* 剩余用时数组 */
  72.         time_used_value =  Linear((double)result * 10 / 32767);
  73.         time_used[2] = '0' + time_used_value % 10;
  74.         time_used[1] = '0' + (time_used_value / 10) % 10;
  75.         time_used[0] = '0' + (time_used_value / 100) % 10;
  76.         /* 百分比数组 */
  77.         percentage_value =
  78.         (unsigned long)((double)(180000 - time_used_value * 500) / 168000 * 100 + 0.5);//改过数据
  79.         percentage[2] = '0' + percentage_value % 10;
  80.         percentage[1] = '0' + (percentage_value / 10) % 10;
  81.         percentage[0] = '0' + (percentage_value / 100) % 10;
  82.         if((percentage_value / 100) % 10)            //处理百分比最高位
  83.         {
  84.                 percentage[0] = '0' + (percentage_value / 100) % 10;
  85.         }
  86.         else
  87.         {
  88.                 percentage[0] = ' ';
  89.         }
  90. }
  91. /* 线性插值函数,参数v为实测电压,返回插值时间结果 */
  92. unsigned int Linear(double v)
  93. {
  94.         unsigned int i,t1,t2,t;
  95.         double v1,v2;
  96.         if(v >= 4.35)                                //大于最大电压
  97.         {
  98.                 t = 0;
  99.                 return t;
  100.         }
  101.         if(v <= 2)                                   //小于最小电压
  102.         {
  103.                 t = 360;
  104.                 return t;
  105.         }
  106.         for(i=0; i<21; i++)                          //遍历插值范围
  107.         {
  108.                 if(voltage_sample[i] < v)
  109.                 {
  110.                         v1 = voltage_sample[i-1];
  111.                         v2 = voltage_sample[i];
  112.                         t1 = time_sample[i-1];
  113.                         t2 = time_sample[i];
  114.                         t = t2 - (v - v2) * (double)(t2 - t1) / (v1 - v2);
  115.                         break;                               //计算插值结果t
  116.                 }
  117.                 else if(voltage_sample[i] == v)
  118.                 {
  119.                         t = time_sample[i];                  //恰好取采样值
  120.                         break;
  121.                 }
  122.         }
  123.         return t;
  124. }
  125. /* ADC电压获取函数 */
  126. void GetVoltage()

  127. uchar ADC0809()
  128. {
  129.         uchar temp_=0x00;
  130.         //初始化高阻太
  131.         OE=0;
  132.         //转化初始化
  133.         ST=0;
  134.         //开始转换
  135.         ST=1;
  136.         ST=0;
  137.         //外部中断等待AD转换结束
  138.         while(EOC==0)
  139.         //读取转换的AD值
  140.         OE=1;
  141.         temp_=Data_ADC0809;
  142.         OE=0;
  143.         return temp_;
  144. }



  145. /* 定时器0中断服务函数 */
  146. void InterruptTimer0() interrupt 1
  147. {
  148.         static unsigned char i = 0;                  //动态扫描的索引
  149.     TH0 = 0xFC;                                  //重新加载初值
  150.     TL0 = 0x67;
  151.                                                  //以下代码完成数码管动态扫描刷新
  152.     P1 = 0x00;                                                                    //显示消隐
  153.     switch(i)                                    //动态扫描
  154.     {
  155.         case 0: ADDR_C = 0; ADDR_B = 0; ADDR_A = 0; i++; P1=LedBuff[0]; break;
  156.         case 1: ADDR_C = 0; ADDR_B = 0; ADDR_A = 1; i++; P1=LedBuff[1]; break;
  157.         case 2: ADDR_C = 0; ADDR_B = 1; ADDR_A = 0; i++; P1=LedBuff[2]; break;
  158.         case 3: ADDR_C = 0; ADDR_B = 1; ADDR_A = 1; i++; P1=LedBuff[3]; break;
  159.                 case 4: ADDR_C = 1; ADDR_B = 0; ADDR_A = 0; i++; P1=LedBuff[4]; break;
  160.         case 5: ADDR_C = 1; ADDR_B = 0; ADDR_A = 1; i++; P1=LedBuff[5]; break;
  161.         case 6: ADDR_C = 1; ADDR_B = 1; ADDR_A = 0; i=0; P1=LedBuff[6]; break;
  162.         //case 7: ADDR_C = 1; ADDR_B = 1; ADDR_A = 1; i=0; P1=LedBuff[7]; break;
  163.                 //保留最低为数码管不使用
  164.         default: break;
  165.     }
  166. }
  167. /* 数码管显示缓冲区刷新函数 */
  168. void LedBufRefresh()
  169. {
  170.         LedBuff[6] = ~LedChar[percentage_value % 10];
  171.         LedBuff[5] = ~LedChar[(percentage_value / 10) % 10];
  172.         if((percentage_value / 100) % 10)                           //百分比最高位处理
  173.         {
  174.                 LedBuff[4] = ~LedChar[(percentage_value / 100) % 10];   //为1则显示
  175.         }
  176.         else
  177.         {
  178.                 LedBuff[4] = 0;                                         //否则不显示
  179.         }
  180.         LedBuff[3] = ~LedChar[voltage_value % 10];
  181.         LedBuff[2] = ~LedChar[(voltage_value /10) % 10];
  182.         LedBuff[1] = ~LedChar[(voltage_value /100) % 10];           
  183.         LedBuff[0] = ~(LedChar[(voltage_value /1000) % 10] & 0x7F); //最高位小数点处理
  184. }
  185. void UartSend()
  186. {
  187.         SendString("当前电压:");
  188.         SendString(voltage);
  189.         SendString("V");
  190. //        SendString("    已用时间:");
  191. //        SendString(time_used);
  192. //        SendString("Min");
  193.         SendString("    剩余电量:");
  194.         SendString(percentage);
  195.         SendString("%\r\n");
  196. }
  197. /* 串口配置函数,baud-通信波特率 */
  198. void ConfigUART(unsigned int baud)
  199. {
  200.     SCON  = 0x50;                                //配置串口为模式1
  201.     TMOD &= 0x0F;                                //清零T1的控制位
  202.     TMOD |= 0x20;                                //配置T1为模式2
  203.     TH1 = 256 - (11059200/12/32)/baud;           //计算T1重载值
  204.     TL1 = TH1;                                   //初值等于重载值
  205.     ET1 = 0;                                     //禁止T1中断
  206.     ES  = 1;                                     //使能串口中断
  207.     TR1 = 1;                                     //启动T1
  208. }
  209. /* 定时器0配置函数 */
  210. void ConfigTimer0()
  211. {
  212.     TMOD &= 0xF0;                                //清零T0的控制位
  213.         TMOD |= 0x01;                                //设置T0为模式1
  214.     TH0  = 0xFC;                                 //为T0赋初值0xFC67,定时1ms
  215.     TL0  = 0x67;
  216.         ET0  = 1;                                    //使能T0中断
  217.     TR0  = 1;                                    //启动T0
  218. }
  219. /* UART中断服务函数 */
  220. void InterruptUART() interrupt 4
  221. {
  222.     if(RI)                                       //接收到字节
  223.     {
  224.         RI = 0;                                  //清零接收中断标志位
  225.     }
  226.     if(TI)                                       //字节发送完毕
  227.     {
  228.         TI = 0;                                  //清零发送中断标志位
  229.     }
  230. }
  231. /* UART字符发送函数 */
  232. void SendData(unsigned char ch)
  233. {
  234.     SBUF = ch;                                   //启动发送
  235.         while(!TI);                                  //等待结束
  236. }
  237. /* UART字符串发送函数 */
  238. void SendString(unsigned char *s)
  239. {
  240.     while(*s)                                    //循环发送
  241.     {
  242.         SendData(*s++);
  243.     }
  244. }
复制代码



编译后报错如下:
Build target 'Target 1'
compiling main.c...
MAIN.C(57): error C202: 'Mode': undefined identifier
MAIN.C(60): error C202: 'temp': undefined identifier
MAIN.C(138): error C132: 'ADC0809': not in formal parameter list
MAIN.C(138): error C141: syntax error near '{'
MAIN.C(139): error C244: 'temp_': can't initialize, bad type or class
MAIN.C(139): error C132: 'temp_': not in formal parameter list
MAIN.C(141): error C244: 'OE': can't initialize, bad type or class
MAIN.C(141): error C132: 'OE': not in formal parameter list
MAIN.C(143): error C244: 'ST': can't initialize, bad type or class
MAIN.C(143): error C132: 'ST': not in formal parameter list
MAIN.C(145): error C244: 'ST': can't initialize, bad type or class
MAIN.C(145): error C132: 'ST': not in formal parameter list
MAIN.C(146): error C244: 'ST': can't initialize, bad type or class
MAIN.C(146): error C132: 'ST': not in formal parameter list
MAIN.C(148): error C141: syntax error near 'while'
MAIN.C(148): error C141: syntax error near '==', expected ')'
MAIN.C(150): error C231: 'OE': redefinition
MAIN.C(150): error C231: 'OE': redefinition
MAIN.C(151): error C247: non-address/-constant initializer
MAIN.C(152): error C279: 'OE': multiple initialization
MAIN.C(152): error C231: 'OE': redefinition
MAIN.C(152): error C231: 'OE': redefinition
MAIN.C(153): error C141: syntax error near 'return'
MAIN.C(154): error C141: syntax error near '}'
Target not created

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

使用道具 举报

沙发
ID:165455 发表于 2020-8-11 16:25 | 只看该作者
直接根据错误提示改就好了。你的error都是“未定义”,“重复定义”,“类型出错”这种。很容易排查的
回复

使用道具 举报

板凳
ID:654028 发表于 2020-8-11 17:24 | 只看该作者
没有声明变量。要定义变量。134行少了分号等等,总之双击错误去定位,然后去改,很容易的,这是基本的错误。
回复

使用道具 举报

地板
ID:143767 发表于 2020-8-12 10:15 | 只看该作者

程序经过改错就剩下一个地方有问题,不知怎样解决,求高手指点,谢谢
#include<reg52.h>
#define Data_ADC0809 P0                   //定义P0口为Data_ADC0809

//ADC0809
sbit ST=P2^0;
sbit EOC=P2^1;
sbit OE=P2^2;

sbit ADDR_A = P3^5;                              //低位地址控制位
sbit ADDR_B = P3^6;                              //低位地址控制位
sbit ADDR_C = P3^7;                                                                 //高位地址控制位

//函数声明
extern uchar ADC0809();

void ConfigUART(unsigned int baud);              //串行口配置函数
void ConfigTimer0();                             //定时器0配置函数
void SendData(unsigned char ch);                 //字符发送函数
void SendString(char *s);                        //字符串发送函数
//void GetVoltage();                               //ADC电压获取函数
unsigned int Linear(double v);                   //线性插值函数,参数v为实测电压
void DataProcess();                              //数据处理函数
void LedBufRefresh();                            //数码管显示缓冲区刷新函数
void UartSend();                                                                 //串口数据发送函数

uhar temp=0;

unsigned char voltage[] = {'0','.','0','0','0',0};
unsigned char time_used[] = {'0','0','0',0};
unsigned char percentage[] = {'0','0','0',0};
unsigned long j,time_used_value,result,percentage_value,voltage_value;
unsigned int code time_sample[21]={0,18,36,54,72,90,108,126,144,162,180,198,216,234,252,270,288,306,324,342,360};
double code voltage_sample[21]={4.35,4.24,4.135,4.005,3.92,3.889,3.858,3.826,3.8,3.78,3.762,3.743,3.725,3.705,3.686,3.667,3.65,3.628,3.492,3.05,2};

//共阳数码管显示字符转换表
unsigned char code LedChar[] = {
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
//数码管显示缓冲区,初值0x00确保启动时都不亮
unsigned char LedBuff[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void main()
{
        ConfigUART(9600);                            //配置串行口工作模式及参数
        ConfigTimer0();                              //配置定时器0用于数码管刷新
        EA = 1;                                      //打开总中断
        while(1)
        {
                //GetVoltage();                            //获取ADC电压值
                        //读取AD值
                temp=ADC0809();
                DataProcess();                           //数据处理
                LedBufRefresh();                         //显示缓冲区刷新
                UartSend();                              //串口发送
                for(j=0;j<30000;j++);                    //延时读取
        }
}
/* 数据处理函数 */
void DataProcess()
{
        /* 计算电压值 */
        voltage_value = (unsigned long)(((double)result * 10 / 32767) * 1000 + 0.5);
        /* 电压值数组 */
        voltage[4] = '0' + voltage_value % 10;
        voltage[3] = '0' + (voltage_value /10) % 10;
        voltage[2] = '0' + (voltage_value /100) % 10;
        voltage[0] = '0' + (voltage_value /1000) % 10;       
        /* 剩余用时数组 */
        time_used_value =  Linear((double)result * 10 / 32767);
        time_used[2] = '0' + time_used_value % 10;
        time_used[1] = '0' + (time_used_value / 10) % 10;
        time_used[0] = '0' + (time_used_value / 100) % 10;
        /* 百分比数组 */
        percentage_value =
        (unsigned long)((double)(180000 - time_used_value * 500) / 168000 * 100 + 0.5);
        percentage[2] = '0' + percentage_value % 10;
        percentage[1] = '0' + (percentage_value / 10) % 10;
        percentage[0] = '0' + (percentage_value / 100) % 10;
        if((percentage_value / 100) % 10)            //处理百分比最高位
        {
                percentage[0] = '0' + (percentage_value / 100) % 10;
        }
        else
        {
                percentage[0] = ' ';
        }
}
/* 线性插值函数,参数v为实测电压,返回插值时间结果 */
unsigned int Linear(double v)
{
        unsigned int i,t1,t2,t;
        double v1,v2;
        if(v >= 4.35)                                //大于最大电压
        {
                t = 0;
                return t;
        }
        if(v <= 2)                                   //小于最小电压
        {
                t = 360;
                return t;
        }
        for(i=0; i<21; i++)                          //遍历插值范围
        {
                if(voltage_sample[i] < v)
                {
                        v1 = voltage_sample[i-1];
                        v2 = voltage_sample[i];
                        t1 = time_sample[i-1];
                        t2 = time_sample[i];
                        t = t2 - (v - v2) * (double)(t2 - t1) / (v1 - v2);
                        break;                               //计算插值结果t
                }
                else if(voltage_sample[i] == v)
                {
                        t = time_sample[i];                  //恰好取采样值
                        break;
                }
        }
        return t;
}
/* ADC电压获取函数 */

//ADC0809读取信息
uchar ADC0809()
{
uchar temp_=0x00;
        //初始化高阻太
        OE=0;
        //转化初始化
        ST=0;
        //开始转换
        ST=1;
        ST=0;
        //外部中断等待AD转换结束
        while(EOC==0)
        //读取转换的AD值
        OE=1;
        temp_=Data_ADC0809;
        OE=0;
        return temp_;
}

/* 定时器0中断服务函数 */
void InterruptTimer0() interrupt 1
{
        static unsigned char i = 0;                  //动态扫描的索引
    TH0 = 0xFC;                                  //重新加载初值
    TL0 = 0x67;
                                                 //以下代码完成数码管动态扫描刷新
    P1 = 0x00;                                                                    //显示消隐
    switch(i)                                    //动态扫描
    {
        case 0: ADDR_C = 0; ADDR_B = 0; ADDR_A = 0; i++; P1=LedBuff[0]; break;
        case 1: ADDR_C = 0; ADDR_B = 0; ADDR_A = 1; i++; P1=LedBuff[1]; break;
        case 2: ADDR_C = 0; ADDR_B = 1; ADDR_A = 0; i++; P1=LedBuff[2]; break;
        case 3: ADDR_C = 0; ADDR_B = 1; ADDR_A = 1; i++; P1=LedBuff[3]; break;
                case 4: ADDR_C = 1; ADDR_B = 0; ADDR_A = 0; i++; P1=LedBuff[4]; break;
        case 5: ADDR_C = 1; ADDR_B = 0; ADDR_A = 1; i++; P1=LedBuff[5]; break;
        case 6: ADDR_C = 1; ADDR_B = 1; ADDR_A = 0; i=0; P1=LedBuff[6]; break;
        //case 7: ADDR_C = 1; ADDR_B = 1; ADDR_A = 1; i=0; P1=LedBuff[7]; break;
                //保留最低为数码管不使用
        default: break;
    }
}
/* 数码管显示缓冲区刷新函数 */
void LedBufRefresh()
{
        LedBuff[6] = ~LedChar[percentage_value % 10];
        LedBuff[5] = ~LedChar[(percentage_value / 10) % 10];
        if((percentage_value / 100) % 10)                           //百分比最高位处理
        {
                LedBuff[4] = ~LedChar[(percentage_value / 100) % 10];   //为1则显示
        }
        else
        {
                LedBuff[4] = 0;                                         //否则不显示
        }
        LedBuff[3] = ~LedChar[voltage_value % 10];
        LedBuff[2] = ~LedChar[(voltage_value /10) % 10];
        LedBuff[1] = ~LedChar[(voltage_value /100) % 10];           
        LedBuff[0] = ~(LedChar[(voltage_value /1000) % 10] & 0x7F); //最高位小数点处理
}
void UartSend()
{
        SendString("当前电压:");
        SendString(voltage);
        SendString("V");
//        SendString("    已用时间:");
//        SendString(time_used);
//        SendString("Min");
        SendString("    剩余电量:");
        SendString(percentage);
        SendString("%\r\n");
}
/* 串口配置函数,baud-通信波特率 */
void ConfigUART(unsigned int baud)
{
    SCON  = 0x50;                                //配置串口为模式1
    TMOD &= 0x0F;                                //清零T1的控制位
    TMOD |= 0x20;                                //配置T1为模式2
    TH1 = 256 - (11059200/12/32)/baud;           //计算T1重载值
    TL1 = TH1;                                   //初值等于重载值
    ET1 = 0;                                     //禁止T1中断
    ES  = 1;                                     //使能串口中断
    TR1 = 1;                                     //启动T1
}
/* 定时器0配置函数 */
void ConfigTimer0()
{
    TMOD &= 0xF0;                                //清零T0的控制位
        TMOD |= 0x01;                                //设置T0为模式1
    TH0  = 0xFC;                                 //为T0赋初值0xFC67,定时1ms
    TL0  = 0x67;
        ET0  = 1;                                    //使能T0中断
    TR0  = 1;                                    //启动T0
}
/* UART中断服务函数 */
void InterruptUART() interrupt 4
{
    if(RI)                                       //接收到字节
    {
        RI = 0;                                  //清零接收中断标志位
    }
    if(TI)                                       //字节发送完毕
    {
        TI = 0;                                  //清零发送中断标志位
    }
}
/* UART字符发送函数 */
void SendData(unsigned char ch)
{
    SBUF = ch;                                   //启动发送
        while(!TI);                                  //等待结束
}
/* UART字符串发送函数 */
void SendString(unsigned char *s)
{
    while(*s)                                    //循环发送
    {
        SendData(*s++);
    }
}


报错信息:
Build target 'Target 1'
compiling main.c...
MAIN.C(14): error C129: missing ';' before 'ADC0809'
Target not created


回复

使用道具 举报

5#
ID:810978 发表于 2020-8-12 10:37 | 只看该作者
建议检查错误的常用单词还是要记一下的 对修改错误很有帮助
回复

使用道具 举报

6#
ID:143767 发表于 2020-8-12 17:45 | 只看该作者
就是查不出所以才求助各位的,谢谢提醒
回复

使用道具 举报

7#
ID:105449 发表于 2020-8-13 15:57 | 只看该作者
依提示修改,注意在输入代码前一定要切换到英文输入模式,否则会报syntax error,特别是在没切换的时候输了空格,一时不知问题出在哪里。
回复

使用道具 举报

8#
ID:814007 发表于 2020-8-13 23:26 | 只看该作者
dj3365191 发表于 2020-8-12 10:15
程序经过改错就剩下一个地方有问题,不知怎样解决,求高手指点,谢谢
#include
#define Data_ADC0809 P ...

在#include<reg52.h>下面添加#define uchar unsigned char
回复

使用道具 举报

9#
ID:143767 发表于 2020-8-14 16:36 | 只看该作者
菜中菜 发表于 2020-8-13 23:26
在#include下面添加#define uchar unsigned char

谢谢指点,加入以后出现如下错误信息:
Build target 'Target 1'
compiling main.c...
MAIN.C(29): error C129: missing ';' before 'temp'
Target not created
回复

使用道具 举报

10#
ID:155507 发表于 2020-8-15 14:33 | 只看该作者
你这里错了
uhar temp=0;

改成这样:
unsigned char temp=0;

回复

使用道具 举报

11#
ID:744327 发表于 2020-8-15 15:18 | 只看该作者
uhar temp=0;没有定义,需要加这一条语句 #define uchar unsigned char
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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