新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機中斷小實驗

        單片機中斷小實驗

        作者: 時間:2016-11-23 來源:網絡 收藏
        這兩天一直搞不明白中斷和定時,聽說這東西可以提高CPU的效率,我想應該是很重要的編程方法,所以就在書上找了一個小程序,想從實驗中發現點什么。

        要求是利用定時器T0的方式1,產生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設系統的時鐘頻率為12MHz。

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

        先說程序,如下

        ORG0000H
        LJMPMAIN ;跳轉到主程序
        ORG000BH ;T0的終端入口地址
        LJMPDVT0 ;轉向中斷服務程序
        ORG0100H
        MAIN: MOVTMOD,#01H ;置T0工作于方式1
        MOV TH0,#0D8H
        MOV TL0,#0F0H ;裝入計數初值
        SETBET0;T0開中斷
        SETB EA ;CPU開中斷
        SETB TR0 ;啟動T0
        SJMP $ ;等待中斷
        DVT0: CPL P1.0 ;P1.0取反輸出
        MOV TH0,#0D8H
        MOV TL0,#0F0H ;重新裝入初值
        RETI ;中斷返回
        END

        上面的程序采用的是中斷的方式產生中斷的,計數器每次加1需要花一定的時間,定時器定時就是靠這個時間的積累得到的,89C51有四個寄存器單元TH0,TL0,TH1,TL1是存放計數值的,每個寄存器8位,還有一個寄存器TMOD可以設置工作模式,每種模式計數地范圍不一樣,所具有的功能也不一樣,這個問題以后有空再說一下。

        定時器的控制是通過設置相關的寄存器得到的,主要有兩個TCON 和TMOD

        TCON是控制寄存器,里面有好多中斷標志位,通過對它的設置可以控制單片機的中斷,單片機通過它可以知道系統是不是有中斷產生

        TMOD是工作模式寄存器,它可以控制單片機的工作方式,通過它可以控制單片機的觸發方式以及C/T的切換

        因為本文的思想是采用中斷控制的方式,所以還需要對中斷控制位IE進行設置

        在此再介紹一下KEIL軟件和PROTEUS軟件的聯調

        先看一下keil軟件


        這個軟件是免費的,用起來非常方便,可以支持C語言編程和匯編編程,我們選擇的是匯編編程,在編譯前要建好工程

        編譯的時候,要注意,本軟件最終要生成hex類型的文件以支持仿真,所以要點擊一下target左邊的按鈕,如下圖


        打開之后,就是下面的界面,選擇output選項卡,在creat hex file前面打鉤


        如果程序沒有錯誤,就在工程那個文件夾下面生成了hex文件,好了,程序工作完成了

        下面進入單片機硬件電路的設計(實際中應該是先硬件后軟件,本文忘考慮這點了)

        這是在proteus環境下的電路圖,這是一款非常不錯的仿真軟件(注意要設置一下晶振的振蕩頻率為12MHz)


        我的電路是要在P1.0口輸出脈沖信號,下面是仿真


        效果非常不錯,小有成就感啊

        通過此次設計,可以發現,單片機的中斷是在單片機計數滿之后產生的,那么計數器在這個過程就是一個準確的計時功能,產生中斷,就要進入中斷服務程序,這個程序是由我們自己編寫的,為了脈沖可持續輸出,需要在這個程序中為計數器賦初值,并且取反P1.0,好了,休息一下




        關鍵詞: 單片機中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 明星| 哈尔滨市| 河津市| 衡东县| 七台河市| 波密县| 永嘉县| 铅山县| 龙川县| 广元市| 扎赉特旗| 宁国市| 通山县| 铅山县| 日照市| 海伦市| 襄垣县| 商南县| 富平县| 漳浦县| 翁牛特旗| 南涧| 会昌县| 同江市| 定西市| 犍为县| 兰西县| 平果县| 沁源县| 淅川县| 永胜县| 克东县| 乌兰县| 杭锦后旗| 平舆县| 新龙县| 格尔木市| 耿马| 安平县| 奎屯市| 沧州市|