syntax error near ‘void’ 出错 求高手帮忙,谢谢
文章有点长,功能是显示年、月、日、时间、星期,几个按键转换闹钟、倒计时、秒表等功能。以下是按键扫描程序
编译后syntax error near ‘void’出错,高手看下哪里出错,找了老半天找不到。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define KEY P2
sbit tz=KEY^0;
sbit jia1=KEY^1;
sbit jian1=KEY^2;
sbit miaob=KEY^3;
sbit naoz=KEY^4;
sbit daojs=KEY^5;
sbit zs=KEY^6;
sbit qued=KEY^7;
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
sbit DS1302_CLK = P1^5;
sbit DS1302_IO = P1^6;
sbit DS1302_RST = P1^7;
sbit L1602_RS=P1^0;
sbit L1602_RW=P1^1;
sbit L1602_EN=P1^2;
sbit fmq=P1^3;
char sec,min,hour,day,mon,week,year;
char *tab[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat",};
uchar slect;//调整按键次数变量
uchar bdata b=1;//确定按键变量(秒表模块)
uchar bdata c=1;//确定按键变量(倒计时模块)
uchar flag;//状态变量
char dshour,dsmin,dssec;
uchar count;//循环5ms次数
void Read_key(void)
{
KEY=0xFF;
if(tz==0)//调整状态
{ delay(4);
if(tz==0)
{
delay(10);slect++;
if(flag==2|flag==4)
{if(slect==3) slect=1;}
else
{flag=1;
if(slect==7)slect=1;}
}
}
if(naoz==0)//闹钟状态
{
delay(4);
if(naoz==0)
{
delay(10);flag=2;slect=1;
}
}
if(miaob==0)//秒表状态
{
delay(4);
if(miaob==0){delay(10);flag=3;L1602_Displaystring(2,6,"00:00:00");}
}
if(daojs==0)//倒计时状态
{
delay(4);
if(daojs==0)
{
delay(10);
flag=4;
L1602_Displaystring(2,6,"00:00:00");
slect=1;
}
}
if(slect)//检测按键次数
{
switch(slect)
{ case 1:{
L1602_writecmd(0x80+0x40+13);
L1602_writecmd(0x0f);
if(jia1==0)
{delay(4);
if(jia1==0)
{
delay(10);
sec++;
if(sec==60)sec=0;
L1602_DisplayByte(2, 12, sec / 10 % 10 + 48);
L1602_DisplayByte(2, 13, sec % 10 + 48);
}
}
if(jian1==0)
{delay(4);
if(jian1==0)
{
delay(10);
sec--;
if(sec==-1)sec=59;
L1602_DisplayByte(2, 12, sec / 10 % 10 + 48);
L1602_DisplayByte(2, 13, sec % 10 + 48);
}
}break;
}
case 2:{
L1602_writecmd(0x80+0x40+10);
L1602_writecmd(0x0f);
if(jia1==0)
{delay(4);
if(jia1==0)
{
delay(10);
min++;
if(min==60)min=0;
L1602_DisplayByte(2, 9, min / 10 % 10 + 48);
L1602_DisplayByte(2, 10, min % 10 + 48);
}
}
if(jian1==0)
{delay(4);
if(jian1==0)
{
delay(10);
min--;
if(min==-1)min=59;
L1602_DisplayByte(2, 9, min / 10 % 10 + 48);
L1602_DisplayByte(2, 10, min % 10 + 48);
}
}break;
}
case 3:{
L1602_writecmd(0x80+0x40+7);
L1602_writecmd(0x0f);
if(jia1==0)
{delay(4);
if(jia1==0)
{
delay(10);
hour++;
if(hour==24)hour=0;
L1602_DisplayByte(2, 6, hour / 10 % 10 + 48);
L1602_DisplayByte(2, 7, hour % 10 + 48);
}
}
if(jian1==0)
{delay(4);
if(jian1==0)
{
delay(10);
hour--;
if(hour==-1)hour=23;
L1602_DisplayByte(2, 6, hour / 10 % 10 + 48);
L1602_DisplayByte(2, 7, hour % 10 + 48);
}
}break;
}
case 4:{L1602_writecmd(0x80+15);
L1602_writecmd(0x0f);
if(jia1==0)
{delay(4);
if(jia1==0)
{
delay(10);
day++;
switch(mon)
{case 1:{if(day==32)day=1;break;}
case 2:{
if(year%4==0)
{if(day==30)day=1;}
else
{if(day==29)day=1;}
break;}
case 3:{if(day==32)day=1;break;}
case 4:{if(day==31)day=1;break;}
case 5:{if(day==32)day=1;break;}
case 6:{if(day==31)day=1;break;}
case 7:{if(day==32)day=1;break;}
case 8:{if(day==32)day=1;break;}
case 9:{if(day==31)day=1;break;}
case 0x10:{if(day==32)day=1;break;}
case 0x11:{if(day==31)day=1;break;}
case 0x12:{if(day==32)day=1;break;}
}
L1602_DisplayByte(1,14, day / 10 % 10 + 48);
L1602_DisplayByte(1, 15, day % 10 + 48);
}
}
if(jian1==0)
{delay(4);
if(jian1==0)
{
delay(10);
day--;
switch(mon)
{case 1:{if(day==-1)day=31;break;}
case 2:{
if(year%4==0)
{if(day==-1)day=29;}
else
{if(day==-1)day=29;}
break;}
case 3:{if(day==-1)day=31;break;}
case 4:{if(day==-1)day=30;break;}
case 5:{if(day==-1)day=31;break;}
case 6:{if(day==-1)day=30;break;}
case 7:{if(day==-1)day=31;break;}
case 8:{if(day==-1)day=31;break;}
case 9:{if(day==-1)day=30;break;}
case 0x10:{if(day==-1)day=31;break;}
case 0x11:{if(day==-1)day=30;break;}
case 0x12:{if(day==-1)day=31;break;}
}
L1602_DisplayByte(1,14, day / 10 % 10 + 48);
L1602_DisplayByte(1, 15, day % 10 + 48);
}
}
break;}
case 5:{
L1602_writecmd(0x80+12);
L1602_writecmd(0x0f);
if(jia1==0)
{delay(4);
if(jia1==0)
{
delay(10);
mon++;
if(mon==13)mon=0;
L1602_DisplayByte(1, 11, mon/ 10 % 10 + 48);
L1602_DisplayByte(1, 12, mon % 10 + 48);
}
}
if(jian1==0)
{delay(4);
if(jian1==0)
{
delay(10);
mon--;
if(mon==-1)mon=12;
L1602_DisplayByte(1, 11, mon / 10 % 10 + 48);
L1602_DisplayByte(1, 12,mon % 10 + 48);
}
}break;
}
case 6:{
L1602_writecmd(0x80+9);
L1602_writecmd(0x0f);
if(jia1==0)
{delay(4);
if(jia1==0)
{
delay(10);
year++;
if(year==100)year=0;
L1602_DisplayByte(1, 8, year / 10 % 10 + 48);
L1602_DisplayByte(2, 9, year % 10 + 48);
}
}
if(jian1==0)
{delay(4);
if(jian1==0)
{
delay(10);
year--;
if(year==-1)year=99;
L1602_DisplayByte(1, 8, year / 10 % 10 + 48);
L1602_DisplayByte(1, 9, year % 10 + 48);
}
}break;
}
if(qued==0)
{
delay(4);
if(qued==0)
{
if(flag==1)
{
stop_time(1);
DS1302_writedata(0x8e,0);
DS1302_writedata(0x80,DS1302_dectobcd(sec));
DS1302_writedata(0x82,DS1302_dectobcd(min));
DS1302_writedata(0x84,DS1302_dectobcd(hour));
DS1302_writedata(0x86,DS1302_dectobcd(day));
DS1302_writedata(0x88,DS1302_dectobcd(mon));
DS1302_writedata(0x8c,DS1302_dectobcd(year));
}
if(flag==2)
{
dshour=hour;
dsmin=min;
dssec=sec;
}
if(flag==3)
{
char fen,miao,ms;
b=~b;
if(b==0)TR0=1;
else {TR0=0;count=0;}
if(count==2)
{
count=0;
ms++;
if(ms==100)
{
ms=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
L1602_DisplayByte(2, 6, fen / 10 % 10 + 48);
L1602_DisplayByte(2, 7, fen % 10 + 48);
}
L1602_DisplayByte(2, 9, miao / 10 % 10 + 48);
L1602_DisplayByte(2, 10, miao % 10 + 48);
}
L1602_DisplayByte(2, 12, ms / 10 % 10 + 48);
L1602_DisplayByte(2, 13, ms % 10 + 48);
}
}
if(flag==4)
{
char daojsh,daojsm,daojss;
daojsh=hour;
daojsm=min;
daojss=sec;
c=~c;
if(c==0)TR0=1;
else {TR0=0;count=0;}
if(daojsh==0&daojsm==0&daojss==0){naol();delay(600);}//倒计时到0报警
if(count==200)
{
count=0;
daojss--;
if(daojss==-1)
{
daojss=59;
daojsm--;
if(daojsm==-1)
{
daojsm=59;
hour--;
L1602_DisplayByte(2, 12, daojsh / 10 % 10 + 48);
L1602_DisplayByte(2, 13,daojsh % 10 + 48);
}
L1602_DisplayByte(2, 9, daojsm / 10 % 10 + 48);
L1602_DisplayByte(2, 10, daojsm % 10 + 48);
}
L1602_DisplayByte(2, 12, daojss / 10 % 10 + 48);
L1602_DisplayByte(2, 13, daojss % 10 + 48);
}
}
}
if(zs==0)
{
delay(4);
if(zs==0)
{
flag=0;
TR0=0;
stop_time(0);//时钟继续走
count=0;
DS1302_gettime();
L1602_disptime();
}
}
}
void timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
}
void Main(void)
{
L1602_init();
L1602_Displaystring(1,1,"DAYS 20");
L1602_Displaystring(2,1,"TIME");
DS1302_initset(); //不加就是掉电不影响时钟运行
while(1)
{
DS1302_gettime();//无按键,显示年、月、日、时间、星期
L1602_disptime();
Read_key();
}
}