用單片機的定時器T0計時1秒,實現秒表倒計時的功能。
該過程如下
# include & ltreg 51 . h & gt;
無符號字符代碼tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90 };//* * *楊數碼管段代碼表
無符號字符秒;//第二個倒計時變量
無符號字符t0n//T0中斷計數
sbit k1=p3^2;//定義密鑰
無效延遲()
{
無符號int j;
for(j = 400;j & gt0;j-);
}
Void display()//顯示子例程
{
P2 = 0x 01;
P0 = tab[秒/10];//顯示十位數
delay();
P2 = 0x 02;
P0 = tab[秒% 10];//顯示單位
delay();
}
void main()
{
TMOD = 0x 01;//T0的時序,中斷模式
TH0 = 0x3C//晶振12M,定時50ms。
TL0 = 0xB0
IE = 0x82
while(1)
{
顯示();//調整顯示子程序
If(k1==0)//按鍵。
{
如果(TR0==0)
{
TR0 = 1;//啟動計時器。
秒= 60;//從60秒開始倒計時。
}
其他
TR0 = 0;
while(k 1 = = 0);//等待鍵被釋放
}
}
}
//T0中斷程序
void T0_int()中斷1
{
TH0 = 0x3C
TL0 = 0xB0
t0n++;
if(t0n & gt;=20)//1秒到達
{
t0n = 0;
第二-;//負1秒
if(秒= = 0)TR0 = 0;
}
}