找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12988|回复: 12
收起左侧

求助大佬,keil出现error c202编译错误 在线感谢

  [复制链接]
ID:492908 发表于 2019-3-18 02:32 | 显示全部楼层 |阅读模式
有大哥可以给我解决下这个问题吗,谢谢大家了
9{2)LQ(ZKZD$7BT24M_ZH)L.png
11I$G`)YWQM6ZO1}{$)(F]7.png
回复

使用道具 举报

ID:277550 发表于 2019-3-18 07:43 | 显示全部楼层
unit未定义吧,,,,,,,到前面检查一下是否定义好了

评分

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

查看全部评分

回复

使用道具 举报

ID:164602 发表于 2019-3-18 07:51 | 显示全部楼层
错误内容是:"MS"没有定义
C语言的基本规则是:先申明后使用。你的ms这个变量没有先申明,后以报错

评分

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

查看全部评分

回复

使用道具 举报

ID:134317 发表于 2019-3-18 07:58 | 显示全部楼层
第40 行while后少分号

评分

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

查看全部评分

回复

使用道具 举报

ID:94031 发表于 2019-3-18 08:36 | 显示全部楼层
我试了没问题,是否介意把整个工程发出来。

评分

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

查看全部评分

回复

使用道具 举报

ID:490426 发表于 2019-3-18 09:10 | 显示全部楼层
将uint换成unsigned int   或者宏定义一下#define  uint  unsigned int

评分

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

查看全部评分

回复

使用道具 举报

ID:234075 发表于 2019-3-18 10:00 | 显示全部楼层
这个问题应该是你在函数初始只定义了uchar,没有定义uint,造成37行的Error 141错误,然后提示40行“ms”未定义的错误;查看你程序的初始部分,是否只有“#define uchar unsigned char”,而没有"#define uint unsigned int"?把后面这一句添上就行了!

评分

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

查看全部评分

回复

使用道具 举报

ID:492967 发表于 2019-3-18 15:10 | 显示全部楼层
没有定义啊   在前面加上 #define uint unsigned int  定义一下

评分

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

查看全部评分

回复

使用道具 举报

ID:492908 发表于 2019-3-18 18:55 | 显示全部楼层
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}
void LCD_Initialize();
void LCD_set_pos(ucgar);
void LCD_write_data(uchar);
void Display_String(uchar*,uchar);
sbit K1=P1^0;
sbit K2=P2^0;
sbit BEEP=P3^0;
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1 ;
sbit LCD_EN=P2^2;
uchar KeyCount=0;
uchar code msg1[]={"Second Watch 0"};
uchar code msg2[]={">>>>        "};
uchar code  prompts[][16]=
{
{"::1---->"},
{"::1---->::2"},
{"::1->2::3-->"},
{"::1->2::3->4"}
};
uchar Time_Buffer[]    ={0,0,0,0} ;
uchar LCD_Dispaly_Buffer[]={"00:00:00:00"};
void Beep()
{
uchar i,j=70;
for(i=0;i<180;i++)
{
  while(--j);BEEP=~BEEP         ;
}
BEEP= 0 ;
}         
void DelayX(uint ms)            
{
uchar i;
while(ms--)for(i=0;i<120;i++);
}
void Show_second()
{
uchar i;
LCD_Set_POS(0x45);        //设置LCD显示起点
for(i=3;i!= 0xff ;i--)
{
  LCD_Display_BUffer[2*i+1]=Time_Buffer[i]/10+'0';
  LCD_Display_BUffer[2*i  ]=Time_Buffer[i]&10+'0';
  LCD_write_Data(LCD_Display_Buffer[2*i+1])        ;
  LCD_write_Data(LCD_Display_Buffer[2*i]);
  LCD_write_Data (':');
  }
}
void Time() interrupt 1 using         0
{
  TH0         =-10000/256;
  TLO    =-10000&256;
  Time_Buffer[0]++;
  if(Time_Buffer[0]==100)
  {
           Time_Buffer[0]=0;Time_Buffe[1]++;
  }
  if(Time_Buffer[1]==60)  
  {
   Time_Buffer[1]=0;Time_Buffer[2]++;
  }
if(Time_Buffer[2]==60)
  {
   Time_Buffer[2]=0;Time_Buffer[3]++;
  }
  if(Time_Buffer[3]==24)
     Time_Buffer[3]        =0;;
}
void main ()
{
uchar i ;
IE=0x82
TMOD=0X01
THO=-10000/256        ;
TLO=-10000%256;
LCD_Initialize();
Display_string(msg1,0x00);
Display_string(msg2,0x40);
while(1)
{
  if(K1==0)
  {
    DelayX(100);
        i=++KeyCount;
        switch(i)
        {
         case1;
         case3;TRO=1;
              Display_string(Prompts[i-1],0);
         case2;
         case4;TRO=0;
              Display_string(Prompts[i-1],0);
                  break;
        default :TRO =0;
              break;
        }
        while (K1==0);  
        Beep();
    }
        else
        if(K2==0)
        {
         TRO=0;
         Keycount ;
         for ( i=0 ;i<4;i++)
         Time_Buffer[i]=0;
         Display_String(msg1,0);
         Beep();
         DelayX(100);
         while(K2==0);  
         }
         show_Second();
         }
}
#include  <reg51.h>
#include  <intrins.h>
#define  uchar  unsigned char        
typedef unsigned char  INT8U;
#define   DelayNOP(){_nop_();_nop_();_nop_();_nop_();}
sbit LCD_RS=P2^0 ;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^2;
bit  LCD_BUSY_Check();
void  LCD_Tnitialize();
void  LCD_Set_Pos(uchar);
void  LCD_Write_Coommand(uchar);
void  LCD_Write_Data(uchar);
void DelayMS(uint  ms)
{
uchar t;
while(ms--)  for  (t=0  ;t<120;t++  );
}
bit LCD_Busy_check()
{
  bit  Result;
  LCD_RS  =0  ;  LCD_RW=1  ;LCD_EN=1;  DelayNOP();
  Resullt = (bit)(P0&0x80);
  LCD_EN=0;
  return   Result;
}
void LCD_write_Command (uchar  cmd)
{
  while (LCD_Busy_Check());
  LCD_RS=0 ;LCD_RW=0 ; LCD_EN=0 ;
  _nop_();  _nop_();
  p0=cmd;  DelayNOP();
  LCD_EN=1 ; DelayNOP();
  LCD_EN=0 ;
}
void  LCD_Write_Data(uchar  str)
{
  while (LCD_Busy_check());
  LCD_RS=1;LCD_RW=0; LCD_EN=0; P0=STR; DelayNOP();
  LCD_EN=1;  DelayNOP();  LCD_EN=0;
}
void LCD_Initialize()
{
DelayMS(5);LCD_Write_Command(0x38);
DelayMS(5);LCD_Write_Command(0x0c);
DelayMS(5);LCD_Write_Command(0x06);
DelayMS(5);LCD_Write_Command(0x01);
DelayMS(5);
}
void LCD_set_Pos(uchar Position)
{
  LCD_Write_Command(Position  0x80);
}
void Display_String(uchar*str, uchar LineNo)
{
  uchar  k;
  LCD_Set_Pos(LineNo);
  for  (k=0 ; k<16;k++)  LCD_write_Data(str[k]);
}
小胖胖的 2019/3/16/周六 18:42:40
for (i=3; i !=0xff;i--)
{
LCD_Display_Buffer[2*i+1]=Time_Buffer[i]/10+'0';
LCD_Display_Buffer[2*i  ]=Time_Buffer[i]&10+'0';
LCD_write_Data(LCD_Display_Buffer[2*i+1])        ;
LCD_write_Data(LCD_Display_Buffer[2*i]);
LCD_write_Data (':');
}
}
void Time() interrupt 1 using         0
{
  TH0         =-10000/256;
  TLO    =-10000&256;
  Time_Buffer[0]++;
  if(Time_Buffer[0]==100)
  {
           Time_Buffer[0]=0;Time_Buffe[1]++;
  }
  if(Time_Buffer[1]==60)  
  {
   Time_Buffer[1]=0;Time_Buffer[2]++;
  }
if(Time_Buffer[2]==60)
  {
   Time_Buffer[2]=0;Time_Buffer[3]++;
  }
  if(Time_Buffer[3]==24)
     Time_Buffer[3]        =0;;
}
void main ()
{
uchar i ;
IE=0x82
TMOD=0X01
THO=-10000/256        ;
TLO=-10000%256;
LCD_Initialize();
Display_string(msg1,0x00);
Display_string(msg2,0x40);
while(1)
{
  if(K1==0)
  {
    DelayX(100);
        i=++KeyCount;
        switch(i)
        {
         case1;
         case3;TRO=1;
              Display_string(Prompts[i-1],0);
         case2;
         case4;TRO=0;
              Display_string(Prompts[i-1],0);
                  break;
        default :TRO =0;
              break;
        }
        while (K1==0);  
        Beep();
    }
        else
        if(K2==0)
        {
         TRO=0;
         Keycount ;
         for ( i=0 ;i<4;i++)
         Time_Buffer[i]=0;
         Display_String(msg1,0);
         Beep();
         DelayX(100);
         while(K2==0);  
         }
         show_Second();
         }
}
#include  <reg51.h>
#include  <intrins.h>
#define  uchar  unsigned char        
typedef unsigned char  INT8U;
#define   DelayNOP(){_nop_();_nop_();_nop_();_nop_();}
sbit LCD_RS=P2^0 ;
sbit LCD_RW=P2^1;
sbit LCD_EN=P2^2;
bit  LCD_BUSY_Check();
void  LCD_Tnitialize();
void  LCD_Set_Pos(uchar);
void  LCD_Write_Coommand(uchar);
void  LCD_Write_Data(uchar);
void DelayMS(uint  ms)
{
uchar t;
while(ms--)  for  (t=0  ;t<120;t++  );
}
bit LCD_Busy_check()
{
  bit  Result;
  LCD_RS  =0  ;  LCD_RW=1  ;LCD_EN=1;  DelayNOP();
  Resullt = (bit)(P0&0x80);
  LCD_EN=0;
  return   Result;
}
void LCD_write_Command (uchar  cmd)
{
  while (LCD_Busy_Check());
  LCD_RS=0 ;LCD_RW=0 ; LCD_EN=0 ;
  _nop_();  _nop_();
  p0=cmd;  DelayNOP();
  LCD_EN=1 ; DelayNOP();
  LCD_EN=0 ;
}
void  LCD_Write_Data(uchar  str)
{
  while (LCD_Busy_check());
  LCD_RS=1;LCD_RW=0; LCD_EN=0; P0=STR; DelayNOP();
  LCD_EN=1;  DelayNOP();  LCD_EN=0;
}
void LCD_Initialize()
{
DelayMS(5);LCD_Write_Command(0x38);
DelayMS(5);LCD_Write_Command(0x0c);
DelayMS(5);LCD_Write_Command(0x06);
DelayMS(5);LCD_Write_Command(0x01);
DelayMS(5);
}
void LCD_set_Pos(uchar Position)
{
  LCD_Write_Command(Position  0x80);
}
void Display_String(uchar*str, uchar LineNo)
{
  uchar  k;
  LCD_Set_Pos(LineNo);
  for  (k=0 ; k<16;k++)  LCD_write_Data(str[k]);
}         

回复

使用道具 举报

ID:339010 发表于 2019-3-18 19:19 | 显示全部楼层
根据错误提示,说明ms附近少了一个)右括号,故需要仔细检查ms附近的代码,使括号匹配即可。

评分

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

查看全部评分

回复

使用道具 举报

ID:94031 发表于 2019-3-19 09:25 | 显示全部楼层
709242699 发表于 2019-3-18 18:55
#include
#include
#define uchar unsigned char

是复制粘贴的原因,那么多main函数?
回复

使用道具 举报

ID:494146 发表于 2019-3-19 18:28 | 显示全部楼层
函数没定义吧
回复

使用道具 举报

ID:453974 发表于 2019-3-19 21:30 | 显示全部楼层
首先是这个void LCD_set_pos(ucgar);应该写成void LCD_set_pos(uchar);,个人觉得里面应该加上变量,但是刚刚改的时候有点问题,不知道什么原因
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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