新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 簡易中斷計時器

        簡易中斷計時器

        作者: 時間:2016-11-24 來源:網絡 收藏
        #include "config.h "

        #defineuintunsigned int
        #defineucharunsignedchar
        #defineulongunsignedlong

        本文引用地址:http://www.104case.com/article/201611/320666.htm

        intnum;// 顯示數字值
        int xms = 0;//毫秒計數變量


        void timer0() interrupt 1 // 數字1為中斷號,每種中斷對應一個中斷號
        {
        TH0 = 0xfc;//重要!!第一次計數滿后會從0開始計數,應該在中斷程序中重設計數初值
        TL0 = 0x65;
        xms++;
        if(xms == 1000){
        num++;
        if(num > 9)num = 0;
        P0 = num;
        xms = 0;
        }
        }

        // 定時器0初始化
        void timer0_init()
        {
        TMOD = 0x01;//設定定時器0為工作方式1
        TH0 = 0xfc;//設定計數初值
        TL0 = 0x65;
        EA = 1;//開總中斷
        ET0 = 1;//開定時中斷0
        TR0 = 1;//啟動定時器0,計數滿后執行中斷服務程序timer0()
        }

        //主函數
        void main(void)
        {
        num = 0;
        P0 = num;
        timer0_init();
        for(;;){
        }
        }

        本程序采用數碼管獨立顯示,計數初值由工作方式、晶振頻率、定時時間共同決定。

        定時計數器中斷程序的編寫過程

        1. 工作方式控制字(TMOD)設置

        2. 計數初值的計算并裝入THx、TLx

        3. 中斷允許為ETx、EA的設置,使主機開放中斷

        4. 啟/停TRx的設置#SinaEditor_Temp_FontName



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 佳木斯市| 林西县| 刚察县| 拉萨市| 淮南市| 青浦区| 肃宁县| 青岛市| 察雅县| 苗栗县| 石楼县| 沁源县| 泸定县| 固原市| 昌吉市| 金平| 屯门区| 尉犁县| 贡觉县| 桃江县| 定陶县| 轮台县| 茶陵县| 山西省| 合作市| 万载县| 台中县| 阳谷县| 日照市| 和硕县| 奉化市| 苏尼特右旗| 平远县| 英吉沙县| 永新县| 广汉市| 梓潼县| 汶川县| 观塘区| 班戈县| 康定县|