#include<reg52.h>
#include"delay.h"
#define DataPort P0
sbit Latch1=P2^2;//段锁存
sbit Latch2=P2^3;//位锁存
unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned char i=0,num=60,j=0;
void Init_
timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-50000)/256; //重新赋值
TL0=(65536-50000)%256;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
main()
{
unsigned char Temp[2];
Init_Timer0();
while(1)
{
Temp[0]=DuanMa[num/10];
Temp[1]=DuanMa[num%10];
DataPort=WeiMa
;
Latch2=1;
Latch2=0;
DataPort=Temp;
Latch1=1;
Latch1=0;
DelayMs(1);
i++;
if(i>=2)
{
i=0;
}
if(num==0xff)
{
num=60;
}
}
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=(65536-50000)/256; //重新赋值
TL0=(65536-50000)%256;
j++;
if(j==20)
{
j=0;
num--;
}
}
一周热门 更多>