新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種單片機控制的指令轉換器的設計

        一種單片機控制的指令轉換器的設計

        作者: 時間:2012-03-22 來源:網絡 收藏


        2.7 分頻電路

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

        分頻電路由12MHz晶振、74LS14、74LS92計數器(用于12倍分頻)、74LS90計數器(用于10倍分頻)組成,其主要目的是產生 的時鐘信號,供串口擴展芯片8251的 使用,同時產生 的CLK信號,供8251內部時鐘使用。

        2.8 檢測電路

        為了便于維護、管理,本系統了系統自我檢測功能模塊,各由三極管和發光二極管組成的四組檢測電路分別接至89C51的P14~P17,用于指示系統自檢、來自發送裝置的數據接收檢測、發送應答數據至發送裝置的檢測及發送指令數據至指令接收裝置的檢測4種狀態。

        3 軟件

        軟件是信號的關鍵組成部分,本系統采用了KEIL C51集成開發環境。KEIL C51標準C編譯器為89C51微器的軟件開發提供了C語言環境,同時保留了匯編代碼高效、快速的特點。

        3.1 8251初始化編程

        8251是一個可編程的多功能通訊接口,所以在使用時必須對它進行初始化編程,確定它的具體工作方式。例如:規定工作在同步方式還是異步方式、傳送的波特率、字符格式等。初始化編程必須在系統RESET以后,在USART工作以前進行,即USART不論工作于任何方式,都必須經過初始化。本系統中,兩片 8251都進行收發工作。

        對于8251(Ⅰ),收發數據的速率為9600bps,接收器、發送器的時鐘頻率為153.6KHz,所以波特率系數為異步×16,字符長度為8位,無奇偶校驗位,異步方式,一個起始位,一個停止位。8251(Ⅰ)的方式選擇字、命令字分別為#4EH、#37H。

        對于8251(Ⅱ),收發數據的速率為2400bps,接收器、發送器的時鐘頻率為153.6KHz,所以波特率系數為異步×64,字符長度為8位,無奇偶校驗位,異步方式,一個停止位。8251(Ⅱ)的方式選擇字、命令字分別為#4FH、#37H。

        8251(Ⅰ)、8251(Ⅱ)的字和狀態寄存器的地址分別為#1FFFH、#3FFFH,下面以8251(Ⅰ)為例給出初始化編程:
        MOV DPTR,#1FFFH ;送方式
        MOV A,#4EH
        MOV @DPTR,A ;送命令指令
        MOV A,#37H
        MOV @DPTR,A

        3.2 8259A初始化編程

        前面已經提過,由于8259A與89C51的接口信號不能完全兼容,因此必須對89C51輸出的控制信號進行相應的變換后再對8259A進行控制。在軟件方面需要解決的問題是:當CPU進入中斷響應周期,送來第①個 應答負脈沖時,89C51不能接收8259A送來的CALL指令機器碼(兩者CALL指令機器碼不兼容),在中斷程序中將其廢掉,然后在第②、③個 應答負脈沖期間,用2條MOVX A,@R0指令讀出8259A中斷矢量低8位送DPL,高8位送DPH,通過DPTR,再用跳轉指令轉至中斷源對應的中斷服務程序的入口執行,時序圖見圖3-1。

        27.gif

        8259A中斷控制程序包括:初始化主程序,解決89C51中斷初始化和8259A的初始化;中斷服務程序以及為各個中斷源服務的子程序,解決如何從8259A讀入中斷矢量地址并轉中斷處理程序,最后結束中斷并返回,下面給出程序。

        設8259A選擇中斷優先級固定,全嵌套工作方式,因此只需要填寫ICW1、ICW2。IR0設定為邊沿觸發中斷方式。中斷源輸入IR0的中斷矢量為0260H,IR1以及以后的中斷矢量依次加4。

        28.gif



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 油尖旺区| 龙游县| 阿克苏市| 新乡县| 通城县| 新绛县| 井研县| 池州市| 会理县| 南平市| 巴塘县| 赫章县| 满城县| 太原市| 延吉市| 枞阳县| 宁城县| 土默特右旗| 沈阳市| 股票| 册亨县| 广水市| 阳城县| 永善县| 丰顺县| 武乡县| 鹤庆县| 乌拉特前旗| 阿克| 汕尾市| 恭城| 万宁市| 密云县| 青浦区| 六枝特区| 罗城| 高雄县| 密山市| 温州市| 南江县| 镇康县|