发表于
2008-4-10 2:54:25

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
程序名称:0-99分表
作者:xiesonny
日期:2008-4-10
显示函数:用定时器扫描
功能: 前两位显示分钟,小数点之后,显示秒钟
分钟显示最大值只有99分钟.超过就报警,报警10秒后.复位初始值并关闭显示.
按键第一次按就计时.第二次暂停,第三次继续.第四次回到初始状态.
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
头文件略&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void beep(uchar tone)
{
uint a,b,spfreq;
spfreq=(1000/tone)/2;
for(a=0;a<16;a++)
{
for(b=0;b bz=0;
for(b=0;b bz=1;
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
deta++;
if(deta==20)
{
deta="0";
sec++;
if(sec>=60)
{
sec=0;min++;
}
if(min>=99)
{
beep(70);
if(sec==11)
{
sec=0;min=0;temp=0;TR0=0;TR1=0;P1=0xff;P0=0xff;
}
}
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void data_split()
{
time_group[0]=min/10;
time_group[1]=min%10;
time_group[2]=sec/10;
time_group[3]=sec%10;
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void time1() interrupt 3
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
if(++i>=5)i=0;
P0=0xff;
switch(i)
{
case 0:P1=0xfe;P0=tab[time_group[0]];break;
case 1:P1=0xfd;P0=tab[time_group[1]];break;
case 2:P1=0xfd;P0=0x7f;break;
case 3:P1=0xfb;P0=tab[time_group[2]];break;
case 4:P1=0xf7;P0=tab[time_group[3]];break;
default:break;
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void init()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
EA=1;
ET0=1;
ET1=1;
TR1=1;
key_gnd=0;
sec=58;
min=98;
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void keyset()
{
if(!key)
{
delay(10);
if(!key)
{
while(!key);
temp++;
{
switch (temp)
{
case 1:TR0=1;TR1=1;break;
case 2:TR0=0;break;
case 3:TR0=1;break;
case 4:TR0=0;temp=0;sec=0;min=0;break;
default:break;
}
}
}
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
void main()
{
init();
while(1)
{
keyset();
data_split();
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&