單片機控制系統中實(shí)現DMA數據傳送的方法
3.2.1 初始化
單片機控制系統開(kāi)機后,首先要對8155和8237初始化。
8155初始化。8155只有1個(gè)狀態(tài)寄存器,通過(guò)對地址3F00H賦值,即可設定PB口和PC口為輸出口,用于為6264提供地址;PA口為雙向輸入輸出口,作為6264的數據口,存數據時(shí),3F00H的值為0DH;取數據時(shí),3F00H的值為0CH。
8237初始化。將8155的PC5位置0,2片4066組成的門(mén)控電路使8237處于非DMA狀態(tài)。此時(shí),8237的端口讀寫(xiě)控制線(xiàn)與單片機的讀寫(xiě)線(xiàn)分別接通。通過(guò)對地址5F00H~5FFFH(8237的內部寄存器端口地址)的設定,完成8237的初始化。
針對單片機控制系統的特點(diǎn),通常初始化8237的內容包括:
(1)決定DMA的工作通道;
(2)數據按成組方式傳送;
(3)確定訪(fǎng)存首地址及地址的增減變化;
(4)傳送字節數;
(5)確定請求信號和應答信號的有效電平;
(6)屏蔽。
系統完成初始化之后即進(jìn)入正常工作狀態(tài)。若有DMA請求,即可進(jìn)行DMA傳送過(guò)程。
(1)8237接收到DMA請求信號DREQ后,輸出“總線(xiàn)”請求信號HOLD,引起單片機中斷,中斷響應程序包括:解除8237的屏蔽功能;保持P2.6、P2.5置0,使能6264、8237;
P2.7置1,使8155空閑;6264脫離單片機控制。
8155的PC5由0變1;門(mén)控電路使8237的存儲器讀寫(xiě)線(xiàn)與6264的讀寫(xiě)線(xiàn)接通,完成DMA通道的連接。同時(shí),8155的PC5作為CPU對DMA請求的回應,啟動(dòng)了DMA傳送過(guò)程。
(2)8237輸出DACK回答信號,開(kāi)始DMA傳送。
(3)傳送結束,8237輸出信號,單片機檢測到2次中斷的發(fā)生,使8155的PC5置0,恢復控制系統的原有工作狀態(tài)。同時(shí)為下次DMA傳送作好了準備,并通知外設本次DMA傳送結束。
4 結 論
通過(guò)存儲器擴展,在僅占用單片機幾十個(gè)存儲空間和一個(gè)中斷源的情況下,實(shí)現了單片機控制系統的數據DMA傳送,保證了單片機能在DMA傳送期間的正常工作。實(shí)踐證明,該系統可方便用于信號的高速采集,并可作為單片機控制系統與軟盤(pán)驅動(dòng)器的接口。
[參考文獻]
[1] 朱長(cháng)清.單片機與CRT顯示器的接口[J].電子技術(shù),2000(2).
[2] 閻慧娟,張金烈.微型計算機接口技術(shù)[M].中國人事出版社,1994.
[3] 何立民.單片機應用系統設計[M].北京航空航天大學(xué)出版社,1990.
[4] 趙依軍,胡戎.單片微機接口技術(shù)[M].人民郵電出版社,1989.
評論