/*
名稱:C51之定時器
說明: 對於C51單片機來說,其內部有2個定時器,分別是T0和T1。它輸入的時鐘源是固定的,就是晶振輸送的。當然它還可以作爲計數器,統計外部輸入的脈衝信號。
這個實驗是定時器中斷實驗。對於定時器中斷,這是屬於中斷的一種。使用它也需要配置先前所屬的相關寄存器。不同的是,關於定時器中斷,還需要配置一些其他與定時器相關的寄存器,如定時器方式寄存器(TMOD)、計數器TH、TL等。要注意一點的是,C51單片機的定時器可以工作在中斷方式,也可以工作在查詢方式。在本實驗中,使用定時器0(C51有兩個定時器),採用中斷方式進行精確時間的顯示。
*/
//定時器0中斷初始化
void Interrupt_tint()
{
EA = 1; //開啓總中斷
ET0 = 1; //定時器0中斷允許
TMOD = 0x02; //定時器0選擇工作模式2:8位的自動裝載模式
TH0 = 256 - 200; //賦初值,計數200,晶振12Mhz,溢出計時0.2ms
TL0 = 256 - 200;
TR0 = 1; //開啓定時器0中斷
}
//中斷服務函數
void time0() interrupt 1
{
static long val = 0;
if(++val >= 5000 ) //計數5000次,正好1s
{
val = 0; //計數歸零
DealTime(); //處理時間信息
}
}
其他的代碼部分較爲簡單,不是重點。在此就不說了。