仿真电路图:http://www.51hei.com/bbs/dpj-103626-1.html
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define dat P0
code uchar d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint second=99;
uint sshi,sge;
static char court=0;
void delay(uint number) /*单个LED延时函数*/
{uchar i,j;
for(i=0;i<number;i++)
for(j=0;j<200;j++);
}
void int0() interrupt 1 using 2 /*中断1为内部中断,0为外部中断*/ /*中断服务程序*/
{
TH0=0x5c;
TL0=0xb0;
court++;
}
void main()
{
TMOD=0X01;
TH0=0x5c;
TL0=0xb0;
ET0=1;
// EX0=1;
// EX1=1;
// IT0=1;
// IT1=1; /*开计数器中断*/
EA=1;
TR0=1; /*开定时器*/
while(1) /*中断不能放循环中*/
{
sshi=second/10;
sge=second%10;
dat=d[sge]; /*第一个数码管*/
P2=0x80;
delay(2);
P2=0x00;
dat=d[sshi];
P2=0x40;
delay(2);
P2=0x00;
if(court==20)
{court=0;
second--;
if(second==0)
{second=100;second--;
}
}
}
}
|