C51之定時器

/*
名稱: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();     //處理時間信息

    }

}

其他的代碼部分較爲簡單,不是重點。在此就不說了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章