按下一个按键显示累加计时,按下另一个显示倒计时。我写的程序怎么不可以?#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,miao,fen,shi;
sbit m=P3^0;
sbit n=P3^1;
sbit j=P3^2;
sbit d=P3^3;
uchar flag;
uchar system_mode;
void keyscan();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//¹²Òõ¼«ÊýÂë¹ÜÏÔʾ0-9
uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xeb,0xed,0xfd,0x87,0xff,0xef};//´øСÊýµã0-9ÏÔʾ
void display(uchar miao,uchar fen,uchar shi);
void delay(uint z);
void init();
void main()
{
init();//³õʼ»¯×Ó³ÌÐò
// miao=59;
// shi=99;
// fen=59;
if(d==0)
{
delay(2);
if(d==0)
{
system_mode=1;
miao=59;
shi=99;
fen=59;
while(!d);
}
}
if(j==0)
{
miao=0;
shi=0;
fen=0;
system_mode=2;
while(!j);
}
while(1)
{
display(miao,fen,shi);
}
}
void timer0() interrupt 1 //¶¨Ê±¼ÆʱÆ÷ÖжÏ
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
aa++;
switch(system_mode)
{
case 1:
if(aa==20) //ÖжÏ20´ÎΪ1s,Ãë¼Ó1
{
miao--;
aa=0;
if(miao==0)
{
fen--; // miaoΪ0, ·Ö¼õ1£¬,Ãë±ä³É59
miao=59;
if(fen==0)
{
shi--; // ·ÖΪ0,ʱ¼õ1,·ÖΪ59
fen=59;
if(shi==0) shi=0;//СʱΪ0
}
}
}
break;
case 2:
if(aa==20) //ÖжÏ20´ÎΪ1s,Ãë¼Ó1
{
miao++;
aa=0;
if(miao==60)
{
fen++; // Âú60S, ·Ö¼Ó1,ÃëÇå0
miao=0;
if(fen==60)
{
shi++; // ·ÖÂú60,ʱ¼Ó1,·ÖÇå0
fen=0;
if(shi==24) shi=0; //СʱÂú
}
}
}
break;
}
能不能给修改一下?谢谢!!
追答我没实验板,原理上这样是正确的
void main()
{
init();
while(1)
{
if(d==0)
{
delay(2);
if(d==0)
{
system_mode=1;
miao=59;
shi=99;
fen=59;
while(!d);
}
}
if(j==0)
{
miao=0;
shi=0;
fen=0;
system_mode=2;
while(!j);
}
display(miao,fen,shi);
}
}