za_ck 2023-04-12 20:57 采纳率: 0%
浏览 20

keil5对代码进行编译时出现错误,目的是为了利用51单片机制作可调时钟和闹钟



```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar dd[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//??????
uchar shi=9,fen=59,miao=55; //?????
uchar shi1=10,fen1=5,miao1=0;//?????
 
uchar yi,er,san,si,wu,liu,qi,ba;
 
uchar count=0;//????
sbit led=P1^0;    //LED??
sbit buzz=P1^1;//???
sbit k1=P1^2; //????
 
sbit k2=P1^3; //?
sbit k3=P1^4; //?
 
sbit k4=P1^5; //?? ?????
sbit k5=P1^6; //?? ?????

sbit k6=P1^7; //ÇåÁã
bit k1_flag=0;
uchar k4_flag=0,k5_flag=0;
uchar num;
void delay1ms()        //@11.0592MHz
{
    unsigned char i, j;
 
    _nop_();
    _nop_();
    _nop_();
    i = 11;
    j = 190;
    do
    {
        while (--j);
    } while (--i);
}

void delayms(uint xms) // ????  ???????
{
    uint m,n;
    for(m=xms;m>0;m--)
        for(n=110;n>0;n--);
}

//???????
void display(uchar yi,uchar er,uchar san,uchar si,uchar wu,uchar liu,uchar qi,uchar ba)
{
  P3=0x01;     //??
  P2=dd[yi]; //??
  delay1ms();
 
  P3=0x02;
  P2=dd[er];
  delay1ms();
 
  P3=0x04;     //??
  P2=dd[san]; //??
  delay1ms();
 
  P3=0x08;
  P2=dd[si];
  delay1ms();
 
   P3=0x10;     //??
  P2=dd[wu]; //??
  delay1ms();
 
  P3=0x20;
  P2=dd[liu];
  delay1ms();
 
   P3=0x40;     //??
  P2=dd[qi]; //??
  delay1ms();
 
  P3=0x80;
  P2=dd[ba];
  delay1ms();
 
}
void soundTime(int time)//???????? ???????????
{

   P1 &= ~(1<<1); // ?P1.1??
   delayms(time);
   P1 |= (1<<1);  // ?P1.1??
}
 
void Timer0Init(void)        //100??@11.0592MHz
{
    TMOD = 0x01;        //???????
    TL0 =(65536-50000)%256;        //??????
    TH0 =(65536-50000)/256;        //??????
    TF0 = 1;        //??TF0??
    TR0 = 1;        //???0????
    EA=1;
    ET0=1;
}
 
void serviceTimer0Init() interrupt 1
{
    TL0 =(65536-50000)%256;        //??????
    TH0 =(65536-50000)/256;    
    count++;
    if(count==20)  //20*50000=1?
    {
    count=0;
    miao++;
    }
    if(miao==60)      //
    {
   miao=0;fen++;
    }
    if(fen==60)      //
    {
   fen=0;shi++;
    }
    if(shi==24)
    {shi=0;}
    if((shi==shi1)&&(fen==fen1)&&(miao==miao1))
    {
     led=~led;buzz=0;
    }
    else 
    {
     buzz=1;led=0;
    }
}
 

void keys()
{
 if(k1==0)
 {
   delay1ms();
   if(k1==0)   //
   {  
       k1_flag=~k1_flag;
    if(k1_flag==0)
    {ET0=1;}
   }while(k1==0);
 }
  
  if(k2==0)
 {
   delay1ms();
   if(k2==0)   //
   {
    if(k4_flag==1)
    {shi++;if(shi==24){shi=0;}}
     if(k4_flag==2)
    {fen++;if(fen==60){fen=0;}}
    if(k4_flag==3)
    {miao++;if(miao==60){miao=0;}}
 
     if(k5_flag==1)
    {shi1++;if(shi1==24){shi1=0;}}
     if(k5_flag==2)
    {fen1++;if(fen1==60){fen1=0;}}
    if(k5_flag==3)
    {miao1++;if(miao1==60){miao1=0;}}
   }while(k2==0);
 }
 
 if(k3==0)
 {
   delay1ms();
   if(k3==0)  // 
   {
       if(k4_flag==1)
    {shi--;if(shi==-1){shi=23;}}
     if(k4_flag==2)
    {fen--;if(fen==-1){fen=59;}}
    if(k4_flag==3)
    {miao--;if(miao==-1){miao=59;}}
 
     if(k5_flag==1)
    {shi1--;if(shi1==-1){shi1=23;}}
     if(k5_flag==2)
    {fen1--;if(fen1==-1){fen1=59;}}
    if(k5_flag==3)
    {miao1--;if(miao1==-1){miao1=59;}}
 
   }while(k3==0);
 }
 
 if(k4==0)
 {
   delay1ms();
   if(k4==0)  // 
   {
   ET0=0;
       if(k1_flag==0)
    {
   k4_flag++;
   if(k4_flag==4)
   {ET0=1;k4_flag=0;}
   }    
   }while(k4==0);
 }
 
 if(k5==0)
 {
   delay1ms();
   if(k5==0)  // 
   {
    ET0=0;
       if(k1_flag==1)
    {
       k5_flag++;
   if(k5_flag==4)
   {k5_flag=0;}    
   }
 
   }while(k5==0);
 }
 if (k6==0)
     { 
    delayms(10); //10ms
    if (k6==0){
        miao=0; 
    while(!k6); //??????????,??????????
    }
}
     
void main()
{
 yi=1,er=2,san=3,si=4,
 wu=5,liu=6,qi=7,ba=8;
  Timer0Init();
  led=0;buzz=1;
  while(1)
   {
   if(k1_flag==0)
      {
        yi=shi/10,er=shi%10,san=10,si=fen/10,
      wu=fen%10,liu=10,qi=miao/10,ba=miao%10;
      }
   else if(k1_flag==1)
    {
      yi=shi1/10,er=shi1%10,san=10,si=fen1/10,
      wu=fen1%10,liu=10,qi=miao1/10,ba=miao1%10;
    }
      keys();
      display(yi,er,san,si,wu,liu,qi,ba);
      soundTime(500);
   }



我用的AT89C52单片机进行仿真,但是以上代码在keil5里面编译失败,显示主函数errorC141:syntax error near 'void',expected'_asm'.我问老师他说注意不要用逗号,我有点懵,不晓得怎么办,以下是Proteus仿真图,请各位大佬教我应该如何更正,很急!!!期末要g了


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/698808303186187.png "#left")
链接:https://pan.baidu.com/s/1C84BuTVvYqKI9Z1ceOWlIA?pwd=a1jn 
提取码:a1jn 



  • 写回答

1条回答 默认 最新

  • 少林and叔叔 2023-04-12 21:41
    关注

    宏定义那里修改下:
    typedef unsigned char uchar
    typedef unsigned int uint。
    宏定义中不能出现空格

    评论

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响
  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块