新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 從定時器開始說中斷

        從定時器開始說中斷

        作者: 時間:2013-04-10 來源:網絡 收藏

        #i nclude "reg51.h"

        void initTimer(void)

        {

        TMOD=0x1;

        TH0=0xd8;

        TL0=0xf0;

        }

        void timer0(void) interrupt 1

        {

        TH0=0xd8;

        TL0=0xf0;

        //add your code here.

        }

        void main(void)

        {

        initTimer();

        TR0=1;

        ET0=1;

        EA=1;

        while(1);

        }

        上面的代碼是12M晶振下定時10000US的程序,也就是10MS發生一次中斷。initTimer()是初始化函數,設置定時值和中斷的。

        10000US在12M晶振下就是100000個機器周期了,65536-100000=55536=D8F0(十六進制),所以上面就是TH0=0xd8;TL0=0xf0;

        void timer0(void) interrupt 1就是0,我們不需要理會匯編的中斷先,只需要知道當中斷來臨的時候,程序就自動跳到timer0(void)這個函數運行了,運行完后就會回到原來中斷處繼續執行原先的程序。

        interrupt是C51中的關鍵字,后面跟有interrupt的函數都是,那么對應哪個中斷呢?請大家參考:一開始為大家介紹的 Keil Software –Cx51 編譯器用戶手冊 中文完整版,(名字太長了,以后叫KEIL手冊)的第125頁。

        中斷號 中斷地址

        0 0003H

        1 000BH

        2 0013H

        3 001BH

        4 0023H

        5 002BH

        6 0033H

        7 003BH

        8 0043H

        9 004BH

        10 0053H

        11 005BH

        12 0063H



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 久治县| 龙游县| 安丘市| 大关县| 邛崃市| 三门峡市| 内黄县| 台前县| 同德县| 海丰县| 江孜县| 彰武县| 丽水市| 台前县| 老河口市| 虞城县| 茂名市| 古丈县| 治县。| 蒲江县| 花垣县| 上饶市| 永康市| 曲阜市| 密山市| 彩票| 盐源县| 松滋市| 张北县| 玉林市| 沛县| 贞丰县| 保山市| 响水县| 六盘水市| 磐石市| 东源县| 拉萨市| 射阳县| 衡东县| 襄城县|