#include
#include
#define uchar unsigned char
#define uint unsigned int
bit OK;
sbit speak=P2^0;
sbit start=P3^1;
sbit end=P3^6;
sbit add=P3^4;
sbit sub=P3^5;
sbit S1=P2^1;
sbit S2=P2^3;
sbit S3=P2^5;
sbit S4=P2^7;
uchar Q_T=20,H_T=30,qt,ht;
uchar a=11,b=11,c=11,d=11,n,m=0,k;
uchar code dis_7[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0x00,0x80};
void delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++);
for(j=0;j<120;j++);
}
void nose()
{
speak=0;
delay1ms(500);
speak=1;
}
void display()
{
P0=dis_7[a];
S1=0;
delay1ms(5);
S1=1;
P0=dis_7[11];
S2=0;
delay1ms(5);
S2=1;
P0=dis_7[b];
S3=0;
delay1ms(5);
S3=1;
P0=dis_7[c];
S4=0;
delay1ms(5);
S4=1;
}
void false()
{
if(P1!=0xff)
{
if(P1==0xf7)
{
m=1;
}
if(P1==0xfb)
{
m=2;
}
if(P1==0xfd)
{
m=3;
}
if(P1==0xfe)
{
m=4;
}
if(P1==0xef)
{
m=5;
}
if(P1==0xdf)
{
m=6;
}
if(P1==0xbf)
{
m=7;
}
if(P1==0x7f)
{
m=8;
}
n=0;
while(end==1)
{
if(n<6)
{
a=10;b=10;c=10;
display();
speak=1;
}
if(n>=6)
{
a=m;b=11;c=11;
display();
speak=0;
}
if(n==20)
{
n=0;
}
}
speak=1;m=0;
a=10;b=10;c=10;
}
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
EX0=1;
EX1=1;
OK=0;
speak=1;
TR0=1;
while(1)
{
display();
while(start==1)
{
false();
display();
if(start==0)
{
delay1ms(2);
while(start==0);
nose();
OK=1;
TR0=0;
qt=Q_T;
n=0;
while(qt>0&&end==1&&OK==1&&P1==0xff)
{
TR0=1;
a=10;
b=qt/10;
c=qt%10;
display();
speak=1;
if(n>20)
{
n=0;
qt--;
}
if(qt<=5)
{
if(n<7)
{
speak=1;
}
if(n>7)
{
speak=0;
}
}
if(qt==0)
{
a=10;b=10;c=10;d=10;OK=0;speak=1;m=0;n=0;
}
if(end==0)
{
a=10;b=10;c=10;d=10;OK=0;speak=1;m=0;n=0;
}
if(P1!=0xff)
{
k=P1;
nose();
if(k==0xf7)
{
m=1;
}
if(k==0xfb)
{
m=2;
}
if(k==0xfd)
{
m=3;
}
if(k==0xfe)
{
m=4;
}
if(k==0xef)
{
m=5;
}
if(k==0xdf)
{
m=6;
}
if(k==0xbf)
{
m=7;
}
if(k==0x7f)
{
m=8;
}
n=0;
ht=H_T;
while(end==1&&ht>0)
{
TR0=1;
a=m;
b=ht/10;
c=ht%10;
display();
speak=1;
if(n==20)
{
n=0;
ht--;
}
if(ht<=5)
{
if(n<7)
{
speak=1;
}
if(n>7)
{
speak=0;
}
}
}
}
{
a=10;b=10;c=10;d=10;OK=0;speak=1;m=0;n=0;
}
}
}
}
}
void time_intt0(void) interrupt 1
{
TH0=0x3c;TL0=0xb0;
n++;
}
void time_intt2(void) interrupt 0
{
while(end==1)
{
if(add==0)
{
delay1ms(2);
while(add==0);
if(Q_T>=99)
{
Q_T=0;
}
else
{
Q_T++;
}
}
if(sub==0)
{
delay1ms(2);
while(sub==0);
if(Q_T<=0)
{
Q_T=99;
}
else
{
Q_T--;
}
}
a=10;b=Q_T/10;c=Q_T%10;
display();
}
a=10;b=10;c=10;
display();
}
void time_intt3(void) interrupt 2
{
while(end==1)
{
delay1ms(2);
while(add==0);
if(H_T>=99)
{
H_T=0;
}
else
{
H_T++;
}
}
if(sub==0)
{
delay1ms(2);
while(sub==0);
if(H_T<=0)
{
H_T=99;
}
else
{
H_T--;
}
}
a=10;b=H_T/10;c=H_T%10;
display();
}
a=10;b=10;c=10;
display();
}
花括号不匹配,你if else用的太多了,我帮你改了一下,麻烦结贴采纳,谢谢!
#include <STC15F2K60S2.H>
#define uchar unsigned char
#define uint unsigned int
bit OK;
sbit speak = P2 ^ 0;
sbit start = P3 ^ 1;
sbit end = P3 ^ 6;
sbit add = P3 ^ 4;
sbit sub = P3 ^ 5;
sbit S1 = P2 ^ 1;
sbit S2 = P2 ^ 3;
sbit S3 = P2 ^ 5;
sbit S4 = P2 ^ 7;
uchar Q_T = 20, H_T = 30, qt, ht;
uchar a = 11, b = 11, c = 11, d = 11, n, m = 0, k;
uchar code dis_7[] = { 0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7,0x00,0x80 };
void delay1ms(uint t)
{
uint i, j;
for (i = 0; i < t; i++);
for (j = 0; j < 120; j++);
}
void nose()
{
speak = 0;
delay1ms(500);
speak = 1;
}
void display()
{
P0 = dis_7[a];
S1 = 0;
delay1ms(5);
S1 = 1;
P0 = dis_7[11];
S2 = 0;
delay1ms(5);
S2 = 1;
P0 = dis_7[b];
S3 = 0;
delay1ms(5);
S3 = 1;
P0 = dis_7[c];
S4 = 0;
delay1ms(5);
S4 = 1;
}
void false()
{
if (P1 != 0xff)
{
if (P1 == 0xf7)
{
m = 1;
}
if (P1 == 0xfb)
{
m = 2;
}
if (P1 == 0xfd)
{
m = 3;
}
if (P1 == 0xfe)
{
m = 4;
}
if (P1 == 0xef)
{
m = 5;
}
if (P1 == 0xdf)
{
m = 6;
}
if (P1 == 0xbf)
{
m = 7;
}
if (P1 == 0x7f)
{
m = 8;
}
n = 0;
while (end == 1)
{
if (n < 6)
{
a = 10; b = 10; c = 10;
display();
speak = 1;
}
if (n >= 6)
{
a = m; b = 11; c = 11;
display();
speak = 0;
}
if (n == 20)
{
n = 0;
}
}
speak = 1; m = 0;
a = 10; b = 10; c = 10;
}
}
main()
{
TMOD = 0x11;
TH0 = 0x3c;
TL0 = 0xb0;
EA = 1;
ET0 = 1;
EX0 = 1;
EX1 = 1;
OK = 0;
speak = 1;
TR0 = 1;
while (1)
{
display();
while (start == 1)
{
false();
display();
if (start == 0)
{
delay1ms(2);
while (start == 0);
nose();
OK = 1;
TR0 = 0;
qt = Q_T;
n = 0;
while (qt > 0 && end == 1 && OK == 1 && P1 == 0xff)
{
TR0 = 1;
a = 10;
b = qt / 10;
c = qt % 10;
display();
speak = 1;
if (n > 20)
{
n = 0;
qt--;
}
if (qt <= 5)
{
if (n < 7)
{
speak = 1;
}
if (n > 7)
{
speak = 0;
}
}
if (qt == 0)
{
a = 10; b = 10; c = 10; d = 10; OK = 0; speak = 1; m = 0; n = 0;
}
if (end == 0)
{
a = 10; b = 10; c = 10; d = 10; OK = 0; speak = 1; m = 0; n = 0;
}
if (P1 != 0xff)
{
k = P1;
nose();
if (k == 0xf7)
{
m = 1;
}
if (k == 0xfb)
{
m = 2;
}
if (k == 0xfd)
{
m = 3;
}
if (k == 0xfe)
{
m = 4;
}
if (k == 0xef)
{
m = 5;
}
if (k == 0xdf)
{
m = 6;
}
if (k == 0xbf)
{
m = 7;
}
if (k == 0x7f)
{
m = 8;
}
n = 0;
ht = H_T;
while (end == 1 && ht > 0)
{
TR0 = 1;
a = m;
b = ht / 10;
c = ht % 10;
display();
speak = 1;
if (n == 20)
{
n = 0;
ht--;
}
if (ht <= 5)
{
if (n < 7)
{
speak = 1;
}
if (n > 7)
{
speak = 0;
}
}
}
}
{
a = 10; b = 10; c = 10; d = 10; OK = 0; speak = 1; m = 0; n = 0;
}
}
}
}
}
}
void time_intt0() interrupt 1
{
TH0 = 0x3c; TL0 = 0xb0;
n++;
}
void time_intt2(void) interrupt 0
{
while (end == 1)
{
if (add == 0)
{
delay1ms(2);
while (add == 0);
if (Q_T >= 99)
{
Q_T = 0;
}
else
{
Q_T++;
}
}
if (sub == 0)
{
delay1ms(2);
while (sub == 0);
if (Q_T <= 0)
{
Q_T = 99;
}
else
{
Q_T--;
}
}
a = 10; b = Q_T / 10; c = Q_T % 10;
display();
}
a = 10; b = 10; c = 10;
display();
}
void time_intt3(void) interrupt 2
{
while (end == 1)
{
delay1ms(2);
while (add == 0);
if (H_T >= 99)
{
H_T = 0;
}
else
{
H_T++;
}
}
if (sub == 0)
{
delay1ms(2);
while (sub == 0);
if (H_T <= 0)
{
H_T = 99;
}
else
{
H_T--;
}
}
a = 10; b = H_T / 10; c = H_T % 10;
display();
a = 10; b = 10; c = 10;
display();
}
把变量定义放到函数最前面
或者是你的花括号不匹配