#include <reg52.h>
#define uchar unsigned char
uchar code table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar code table_d[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar time[4] = {0,1,0,0};
uchar cp = 0;
sbit en = P2^5;
void Delay(int m);
void timer0_initialize(void);
void display(uchar *p);
void main(void)
{
uchar i,dpldata[4];
timer0_initialize();
en=1;
while(1)
{
for(i=0;i<4;i++)
{
if(i==1)
{
dpldata[i]=table_d[time[i]];
}
else
{
dpldata[i]=table[time[i]];
}
display(dpldata);
}
}
}
void timer0_initialize(void)
{
EA=0;
TMOD=0X01;
TR0=0;
TL0=0X00;
TH0=0XEE;
PT0=0;
ET0=1;
EA=1;
TR0=1;
}
void timer0_isr() interrupt 1
{
TR0=0;
cp++;
if(cp==200)
{
cp=0;
if((time[3]==0)&&(time[2]||time[1]||time[0]||0))
{
time[3]=9;
if((time[2]==0)&&(time[1]||time[0]||0))
{
time[2]=5;
if((time[1]==0)&&(time[0]||0))
{
time[1]=9;
time[0]--;
}
else
{
time[1]--;
}
}
else
{
time[2]--;
}
}
else if(time[3]!=0)
{
time[3]--;
}
}
timer0_initialize();
}
void display(uchar *p)
{
int i,j=0xFE;
for(i=0;i<4;i++)
{
P2=j;
P0=*p;
Delay(500);
j=(j<<1)|0x01;
if(j==0xEF)
j=0xFE;
p++;
}
}
void Delay(int m)
{
while(--m);
}
uj5u.com熱心網友回復:
https://blog.csdn.net/xianfajushi/article/details/89448933uj5u.com熱心網友回復:
初學者 沒怎么看懂
uj5u.com熱心網友回復:
哪部分不清楚?中斷初始化?
中斷計時?
計時部分?
數碼管顯示?
按鍵?
總的也就這些,按各函式分,也分不出很多來,具體說哪部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/105560.html
標籤:單片機/工控
上一篇:ov7725 高曝光度
