//我编写的一个0-99定时计数器以及PROTUES的仿真线路图,也做了一些注释,你可以对着数据手册看看,希望对你有帮助,其实网上有很多51要单片机的视频教程你可以下载下来学习。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
uchar intnum;
uchar sec;
void init()
{
TMOD=0x01; // 定时器模式选择,选择T0定时器,方式1
TR0=1; //1 打开定时器0
ET0=1; //定时器0中断使能位
EA=1; //使能全局中断
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void time0() interrupt 1 //50ms
{
//TF0=0; //定时器0溢出 ,清楚中断
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
intnum++;//溢出值加1
if(intnum==20)
{
intnum=0;
sec++;
if(sec==100)
{
sec=0;
}
}
}
void disp(uchar num1,uchar num2)
{
P0=table[num1];
P2=table[num2];
}
void main()
{
init();
while(1)
{
uchar a,b;
a=sec/10;
b=sec%10;
disp(a,b);
}
}