这个程序的定时器是怎么用的
#include<reg51.h> sbit P0_0=P0^0; //个位数字
sbit P0_1=P0^1; //十位数字
void delay(int k); //Tab为数码管显示值?存入一个数组内
unsigned char ge,shi,num,count;
unsigned char code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void main()
{
TMOD=0x1; //T0,工作方式1 这个为什么是0x1?
TH0=0xb1; //20ms定时 这个为什么是0xb1?
TL0=0xe0; 这个为什么是0xe0?
TR0=1; //开启T0定时器
ET0=1; //允许T0定时器中断
EA=1; //开启总中断允许
P2=Tab[0];P0_0=0;P0_1=0;//显示00
num=0; //被显示的数置0
while(1) //一直调用显示?等待T0中断修改显示数据
{
shi=num/10; //取出十位数
ge=num%10; //取出个位数
P0_0=1;P0_1=1; //关闭显示
P2=Tab[shi]; //P2口送出十位数据显示代码
P0_0=0; //打开十位显示
delay(100); //延时
P0_0=1; //关闭显示
P2=Tab[ge]; //P2口送出个位数据显示代码
P0_1=0; //打开个位显示
delay(100); //延时
P0_1=1; //关闭个位显示
}
}
void time0(void) interrupt 1
{
TL0=0xe0;
count++; //计数值+1
if(count==10) //加到50次即1秒
{ count=0;
num++; //显示数据+1
if(num==20)
{ num=0; }
}
}
void delay(int k)
{
while(k--);
}