51单片机定时器数码管60秒倒计时

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#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[i];
Latch2=1;
Latch2=0;

DataPort=Temp[i];
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--;
}


}

相关文档
最新文档