51单片机电子时钟程序设计


#include<reg51.h>
#define tl 0xba;  //??? tl??? 
#define th 0x3c;   //??? th??? 
 
sbit speaker=P3^5;             //????    ???                
 
unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //????????0-9???
unsigned char count0,second,minit,hour;    //?????
unsigned int second1,minit1,hour1;//?????
 
//timenum1????????????? 
//timenum2????????????? 
//f1??????? 
//f2??????? 
unsigned char timenum1,timenum2,f1,f2;    
unsigned int dsflg;
unsigned char temp;
 
//?????  ??????????? 
void delay(void)
{
    unsigned int i;
    for(i=0;i<100;i++);
}
//50ms 
//????? 
void display(void)
{
    
    P0=led[hour/10]; //p0???? ????,????  
    P2=0xFE;         //??    P2.0 
    delay();          //??
    P2=0xFF;          //???
    
    P0=led[hour%10];   //p0???? ????,???? 
    P2=0xFD;    //P2.1
    delay();
    P2=0xFF;
    
    P0=led[minit/10];   //p0???? ????,???? 
    P2=0xFB;  //P2.2
    delay();
    P2=0xFF;
    
    P0=led[minit%10];   //p0???? ????,???? 
    P2=0xF7;  //P2.3
    delay();
    P2=0xFF;
}
 
//???? 
void keyscan()
{
     unsigned char temp;
      P1=0xfe;     // ?P1.0???? 
      temp=P1;
      temp=temp&0xf0;     //??P1.0?????????
      if(temp!=0xf0)// ????????? 
      {
            delay1(10);   //????????? 
        temp=P1;
        temp=temp&0xf0; //????p1.0????????? 
        if(temp!=0xf0)      //?????? 
        {
              temp=P1;     //?P1???temp 
            switch(temp)
              {
                case 0xee:    //p1.4? 
                    timenum1++;          //??++
                    TR1=0;     //???T1 ,????? 
                    f2=0;     //???????? 
                    if(timenum1==1||timenum2==1)     //??timenum1==1 ??
                    {
                        dsflg=0;    //????? 
                    }
                    if(timenum1==3)     ??timenum1==4 ??         
                    {    
                        TR1=1;     //??T1
                        timenum1=0;      //??????? 
                        dsflg=1;      //????? 
                        f2=1;     //??????
                    }
                    break;
                        
                case 0xde:  //p1.5? 
                    //??? 
                    if(timenum1==1)     //??timenum1==1 ??
                    {
                        hour++;        //??++
                     }
                    if(timenum1==2)     //??timenum1==2 ??
                    {
                           minit++;
                      }
                  //??? 
                    if(timenum2==1)     //??timenum2==1 ??     ??
                      {
                        hour1++;        //??++
                      }
                    if(timenum2==2)     //??timenum2==2 ??    ??
                      {
                           minit1++;
                      }
                     break;
                     
                case 0xbe:     //p1.6? 
                      speaker=1;  //????????????????? 
                    if(timenum1==1)     //??timenum1==1 ??
                      {
                        hour--;        //??-- 
                      }
                    if(timenum1==2)     //??timenum1==2 ??
                      {
                           minit--;    //??-- 
                      }
                     //??? 
                    if(timenum2==1)     //??timenum2==1 ??     ??
                      {
                        hour1--;        //??-- 
                      }
                    if(timenum2==2)     //??timenum2==2 ??    ??
                      {
                           minit1--;
                      }
                     break;
                     
                case 0x7e://p1.7 
                    timenum2++;      //??++
                    f1=0;    //?????? 
                    if(timenum2==1||timenum2==2)    //??timenum2=1???????
                    {
                        dsflg=0;   //????? 
                     }
                    if(timenum2==3)    //??timenum2=3??
                    {
                        timenum2=0;     //??????? 
                        dsflg=1;  //????? 
                        f1=1;     // ?????? 
                    }
                     break;
              }
              
              while(temp!=0xf0)    //???????? 
              {
                temp=P1;
                temp=temp&0xf0;
              }
        }
      }
}
 
//???? ???? 
void Keykonzhi()
{ 
    if(timenum1==1)     //??timenum1==1 ??
    {
        if(hour>23)      //??
        {
            hour=0;
        }
        
        P0=led[hour/10];    //????
        P2=0xFE;     //???? p2.0
        delay();
        P2=0xFF;     
        
        P0=led[hour%10]; //????
        P2=0xFD;     //????  p2.1
        delay();
        P2=0xFF;
    
        
        
    }
    
    if(timenum1==2)     ??timenum1==2 ??  //????????????
    
    {
        if(minit>59)
        {    
            minit=0;
        }
        
        P0=led[minit/10];
        P2=0xFB;   //????  p2.2
        delay();
        P2=0xFF;
        
        P0=led[minit%10];
        P2=0xF7;   //????   p2.3
        delay();
        P2=0xFF;
    }
}
 
//???? 
void almset()
{
    timenum1=0;
    if(timenum2==1)    //??timenum2==1???????
    {
        if(hour1>23)   //??
        {
            hour1=0;
        }
        
        P0=led[hour1/10];//????  ?? 
        P2=0xFE;//p2.0
        delay();
        P2=0xFF;
        
        P0=led[hour1%10];
        P2=0xFD;//p2.1    ???? ?? 
        delay();
        P2=0xFF;
    }
    
    if(timenum2==2)       //??timenum2==2???????  ???????
    {
        if(minit1>59)
        {
            minit1=0;
        }
        
        P0=led[minit1/10];//?????? 
        P2=0xFB; //  p2.2
        delay();
        P2=0xFF;
        
        P0=led[minit1%10];//?????? 
        P2=0xF7;// p2.3
        delay();
        P2=0xFF;
    }
}
 
//???? (???????????)
void almkozi()
{
    if((hour1==hour)&&(minit1==minit)&&(second<4))
    { 
        speaker=0;      //?????,???? 
     }
    if(minit==0&&second<4)   
    {
        //????,???? 
        speaker=0;
    }
    
    if(second>4) //????????? 
    {
          speaker=1;   //????? 
    }
}
 

img

电子时钟.c(60): error C267: 'delay1': requires ANSI-style prototype
电子时钟.c(76): error C141: syntax error near '?', expected '__asm'
电子时钟.c(76): error C141: syntax error near '?', expected 'sizeof'
电子时钟.c(177): error C141: syntax error near '?', expected '__asm'
电子时钟.c(177): error C141: syntax error near '?', expected 'sizeof'

出现以上几个error,希望帮忙修改一下。

代码里,延时函数只有 void delay(void) , 没有 delay1() . 错误提示里 c(60): 表示代码第60行或者此行前后位置有错误,按照提示 76 177 行里有符号错误,对应的去查错。建议把上面代码里的注释 // ????? 都清理下,有可能错误就在这些地方。

电子时钟.c(60): error C267: 'delay1': requires ANSI-style prototype
原因是代码里面的延时是void delay(void),而调用的时候调用的是delay1(10),按照调用修改就将函数名称改为delay1,按照函数修改就将调用时的函数修改为delay(10)
电子时钟.c(76): error C141: syntax error near '?', expected '__asm'
原因是if(timenum1==3) ??timenum1==4 ??,里面的问号
电子时钟.c(76): error C141: syntax error near '?', expected 'sizeof'
电子时钟.c(177): error C141: syntax error near '?', expected '__asm'
原因是
if(timenum1==2) ??timenum1==2 ??,
里面的问号
电子时钟.c(177): error C141: syntax error near '?', expected 'sizeof'
其实这种不难,看着提示修改就可以,难的是,程序运行完0错误0警告,但就是没有出现需要的现象。加油!慢慢修改积累到一定程度,就可以一眼就看出错误在哪,所以我也还在路上

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    是的,我想修复这些编译错误。根据错误消息来看,问题似乎出现在函数声明和语法上。请提供电子时钟程序的代码以便我能更好地帮助您解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^