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