#include <STC12C5A60S2.H>
sbit ENLED = P1^1;
sbit ADDR0 = P2^0;
sbit ADDR1 = P2^1;
sbit ADDR2 = P2^2;
unsigned char code LedChar[] = {
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};//用数组来储存数码管的真值表,
void main()
{
unsigned char cnt = 0;//记录中断次数
unsigned char sec = 0;//记录经过的秒数
ENLED = 0;//使能74CH245
ADDR0 = 0;
ADDR1 = 0;
ADDR2 = 0;//选择数码管
TMOD = 0x01;//设置中断模式为模式1
TH0 = 0x2F;
TL0 = 0xAB;//设置初始值
TR0 = 1;//启动定时器
while(1)
{
if (TF0 == 1)//判断是否溢出
{
TF0 = 0;//溢出后置0
TH0 = 0x2F;
TL0 = 0xAB;//重新定初始值
cnt ++;//计数值自加1
if (cnt>=50)//判断是否到达1秒
{
cnt =0 ;//计数值清零
P0 = LedChar[sec];//当前秒数对应的真值表中的值送到P0口
sec++;//秒数记录自加1
if(sec>=16)//当秒数超过15后,重新从0开始
{
sec = 0;
}
}
}
}
}
|