#include <reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit LED1=P1^0;
sbit wela=P2^6;
sbit dula=P2^7;
//void delayms(uint);
uchar num,shi,num,ge,num1;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71}; //显示0~F的十六进制的数;0 1 2 3 4 5 6 7 8 9
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar shi, uchar ge)
{
dula=1;
P1=0xfe;
dula=0;
wela=1;
P0=table[shi]; //位选
wela=0;
delayms(5);
dula=1;
P1=0xfd;
dula=0;
wela=1;
P0=table[ge];
wela=0;
}
void main()
{
TMOD=0x01;
TH0=(65535-45872)/256; //付初值
TL0=(65535-45872)%256;
EA=1; //打开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0中断
while(1) //等待中断开启
{
display(shi,ge);
}
}
void T0_time() interrupt 1 //方式1
{
TH0=(65535-45872)/256; //付初值
TL0=(65535-45872)%256;
num++;
if(num==20)
{
num=0;
num1++;
if(num1==9)
{
num1=0;
}
shi=num1/10;
ge=shi;
}
}
|