#include <AT89X52.h>
#define uint unsigned int
#define uchar unsigned char
void display(uint);
void delay(uint);
uchar code Seg_disp[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uint num;
void init()
{
EA=1;
EX0=1;
ET0=1;
IT0=1;
TMOD=0x01;
TL0=(65536-10000)%256;
TH0=(65536-10000)/256;
TR0=0;
}
void main()
{
init();
while(1)
{
display(num);
}
}
void timer_0() interrupt 1
{
TL0=(65536-1000)%256;
TH0=(65536-1000)/256;
num++;
if(num==10000)num=0;
}
void INT0P() interrupt 0
{
if(F0==0) //F0ÊDZê־룬0´ú±íÊǵÚÒ»´Î°´¼ü£¬1´ú±íµÚ¶þ´Î°´¼ü
{
F0=1;
num=0;
TL0=(65536-1000)%256;
TH0=(65536-1000)/256;
TR0=1; //½«¶¨Ê±Æ÷T0µÄ¿ªÊ¼´ò¿ª
}
else
{
TR0=0;
F0=0;
}
}
void display(uint a)
{
P0=0xff;
P2=0x08;
P0=Seg_disp[a%10];
delay(5);
P0=0xff;
P2=0x04;
P0=Seg_disp[a%100/10];
delay(5);
P0=0xff;
P2=0x02;
P0=Seg_disp[a%1000/100];
delay(5);
P0=0xff;
P2=0x01;
P0=Seg_disp[a/1000];
P0=P0&0x7f;
delay(5);
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
|