#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; //?????
}
}
电子时钟.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警告,但就是没有出现需要的现象。加油!慢慢修改积累到一定程度,就可以一眼就看出错误在哪,所以我也还在路上
是的,我想修复这些编译错误。根据错误消息来看,问题似乎出现在函数声明和语法上。请提供电子时钟程序的代码以便我能更好地帮助您解决问题。