|
#include "reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器
typedef unsigned int uint; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char uchar;
uchar datas[3]={0,0,0};
uchar code smgduan[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//顯示0~F的值
uint sec = 0;
uchar i = 0;
uint count = 0;
bit flag = 0;
void Timer0Init()
{
TMOD=0x01;//選擇為定時(shí)器0 模式1,工作方式1,僅用TR0打開啟動(dòng)。
TH0=(-2500)>>8; //給定時(shí)器賦初值,定時(shí)1ms
TL0=(-2500)&0x00ff;
ET0=1;//打開定時(shí)器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時(shí)器
}
void jisuan()
{
datas[0] = sec%10;
datas[1] = sec/10%10;
datas[2] = sec/100%10;
}
void main()
{
Timer0Init(); //定時(shí)器0初始化
while(1)
{
if(flag)
{
sec ++;
jisuan();
flag = 0;
if(sec == 999)
{
sec = 0;
}
}
}
}
void Timer0() interrupt 1
{
TH0=(-2500)>>8; //給定時(shí)器賦初值,定時(shí)2.5ms
TL0=(-2500)&0x00ff;
P0 = 0x00;
P2 = i <<2;
if(i == 1)
P0 = smgduan[datas[i]]|0x80;
else
P0 = smgduan[datas[i]];
i ++;
if(i == 3)
i = 0;
count ++;
if(count == 40)//0.1S
{
count = 0;
flag = 1;
}
}
|
|