8255與單片機接口實例
例1 從8255B口輸入8位數(shù)據(jù),然后從8255A口輸出。
解:設(shè)置8255A口為基本I/O輸出方式,8255B口為基本I/O輸入方式。先從8255B口輸入8位數(shù)據(jù)到累加器A,然后將累加器中的8位數(shù)據(jù)輸出到8255A口,重復(fù)上述過程。
例2 編寫交通燈控制程序。用8255A口的PA7、PA6、PA5控制南北方向的紅、黃、綠燈,用8255A口的PA0、PA1、PA2控制東西方向的紅、黃、綠燈,如圖8-11所示。控制方式為:東西方向通行30秒后,黃燈亮1秒,再南北方向通行30秒后,黃燈亮1秒,按上述方式不斷循環(huán)。
<?XML:NAMESPACE PREFIX = O />
解:(1)分析:
開始時,假設(shè)東西方向先通行,即東西方向為綠燈(PA2=1),南北方向為紅燈(PA7=1)。顯然,送入8255A口的控制碼為10000100=84H。30秒延時后黃燈亮,黃燈亮的控制碼為42H。延時1秒后,南北方向通行,南北方向通行的控制碼為21H。然后延時30秒依次循環(huán)。具體工作過程如下:
由上述分析可知,只要將8255A口設(shè)置成基本I/O輸出方式,然后將交通燈的控制碼依次輸出到A口,并作30秒或1秒的延時,則可編寫出如下的交通燈控制程序。
(2)流程圖如圖8-19所示
(3)源程序
延時1秒與30秒子程序由讀者自行編寫。
思考題:
在上題的基礎(chǔ)上,如何編寫在八段顯示管DG1DG0上,能顯示30秒倒計時的交通燈程序。
提示:將延時程序,改為調(diào)用倒計時顯示子程序,該子程序的流程圖如圖8-12所示。在圖中用41H單元作為倒計數(shù)單元,延時秒數(shù)(30秒或1秒)輸入41H單元中。圖8-13為定時器T0延時20ms中斷處理程序,流程圖中內(nèi)容由讀者自已理解,程序也由讀者自己編寫。
編程時請注意,圖8-20(2)中:(41H)←(41H)-1要用十進制減法運算。
編輯:admin 最后修改時間:2018-05-08