8255與單片機(jī)接口實(shí)例
例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í),假設(shè)東西方向先通行,即東西方向?yàn)榫G燈(PA2=1),南北方向?yàn)榧t燈(PA7=1)。顯然,送入8255A口的控制碼為10000100=84H。30秒延時(shí)后黃燈亮,黃燈亮的控制碼為42H。延時(shí)1秒后,南北方向通行,南北方向通行的控制碼為21H。然后延時(shí)30秒依次循環(huán)。具體工作過程如下:
由上述分析可知,只要將8255A口設(shè)置成基本I/O輸出方式,然后將交通燈的控制碼依次輸出到A口,并作30秒或1秒的延時(shí),則可編寫出如下的交通燈控制程序。
(2)流程圖如圖8-19所示
(3)源程序
延時(shí)1秒與30秒子程序由讀者自行編寫。
思考題:
在上題的基礎(chǔ)上,如何編寫在八段顯示管DG1DG0上,能顯示30秒倒計(jì)時(shí)的交通燈程序。
提示:將延時(shí)程序,改為調(diào)用倒計(jì)時(shí)顯示子程序,該子程序的流程圖如圖8-12所示。在圖中用41H單元作為倒計(jì)數(shù)單元,延時(shí)秒數(shù)(30秒或1秒)輸入41H單元中。圖8-13為定時(shí)器T0延時(shí)20ms中斷處理程序,流程圖中內(nèi)容由讀者自已理解,程序也由讀者自己編寫。
編程時(shí)請(qǐng)注意,圖8-20(2)中:(41H)←(41H)-1要用十進(jìn)制減法運(yùn)算。

編輯:admin 最后修改時(shí)間:2018-05-08