兩個鍵,button控制開始暫停,button2將 計時歸零。程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段位碼
sbit P3_0=P3^0;
sbit P3_1=P3^1;
bit button=0;//開始暫停按鍵標志
bit button2=0;//計時歸零按鍵標志
bit sacnkey=0;//鍵盤掃描標志位
uint nsec=0;//計數(shù)秒的單位時間
uchar sec=0;//秒位
uchar tsec=0;//十位秒
uchar nscan=0;//計數(shù)掃描鍵盤的單位時間
void delay()
{
uchar i,j;
for(i=0;i<100;i++)for(j=0;j<100;j++);
}
void scan()
{
P3=0xff;
if(P3_0==0)
{
delay();
if(P3_0==0)
button=!button;//改變按鍵標志位
}
if(P3_1==0)
{
delay();
if(P3_1==0)
button2=1;//改變按鍵標志位
}
}
void display()
{
P0=table[sec];//P0顯示秒
// delay();//延時
P1=table[tsec];//P1顯示十秒位
// delay();
}
void time1()interrupt 3
{
TL1=0XB0;
TH1=0X3C;//定時50ms
nsec++;
if(nsec==20)
{
nsec=0;
sec++;
if(sec==10)
{
sec=0;
tsec++;
if(tsec==6)
tsec=0;
}
}
}
void time()interrupt 1
{
TL0=0X18;
TH0=0XFC;
nscan++;
if(nscan==10)
{
scan();
}
}
void main()
{
TMOD=0x11;//,T1工作方式1,T0工作方式1
TL0=0X18;
TH0=0XFC;//T0工作方式1設置初值
TL1=0XB0;
TH1=0X3C;//定時50ms
EA=1;
ET0=1;
ET1=1;
TR0=1;//開中斷
while(1)
{
if(button==1)
TR1=1;
else
TR1=0;
if(button2==1)
{
TR1=0;
sec=0;
tsec=0;
}
display();
}
}
|