满意答案
tfds6596
2013.10.20
采纳率:59% 等级:11
已帮助:12899人
//12M晶振。2位共阳数码管,P0为段码,P2.2、P2.3位控
// 三个按键:开始 P2.0 暂停 P2.1 清零 P2.2
#include
#define uchar unsigned char
sbit P20=P2^0;
sbit P21=P2^1;
sbit KS=P2^5;
sbit KP=P2^6;
sbit KC=P2^7;
int ge,shi;
uchar code tab[ ]={0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90,};
void delay_ms(unsigned int ms) //1ms延时
{
uchar a;
while(ms--)
for(a=123;a>0;a--);
}
void display();
void t0intinit( ) //定时器T0初始化
{
TMOD=0x01;
TH0=0x3c;//50ms定时
TL0=0xb0;
EA=1;
ET0=1;
}
void Timer0Interrupt(void) interrupt 1 //定时器T0中断 方式1
{
uchar time;
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20) //20X50ms=1s
{
time=0;
ge++;
}
}
void main()
{
t0intinit( );
while(1)
{
display( );
while(!KS)
{ display( );
if(KS)
TR0=1;
}
while(!KP)
{
display();
if(KP)
TR0=0;
}
while(!KC)
{
display( );
if(KC)
TR0=0;
shi=0;
ge=0;
}
if(ge==10)
{
ge=0;
shi++;
}
if(shi==9)
{
shi=0;
}
}
}
void display( )
{
P20=1;
P0=tab[ge];
delay_ms(1);
P20=0;
P21=1;
P0=tab[shi];
delay_ms(1);
P21=0;
}
00分享举报