2.1.1 硬件電路與工作原理
1. 硬件電路
硬件電路如圖2.1所示,AT89S51是MCS-51系列單片機(jī)中的一種,通常采用40腳DIP封裝,1腳~8腳是4個并行輸入/輸出端口(P0口、P1口、P2口、P3口)中的一個,稱為P1口,8條口線用P1。0~P1。7表示,這8個引腳均可帶最大20mA灌電流負(fù)載,可以直接驅(qū)動發(fā)光二極管,圖示電路中D0~D7為8只發(fā)光二極管,RP1為排阻,第一腳為排阻的公共端,各經(jīng)300Ω電阻限流后接在+5V電源與P1端口之間。S1~S4為按鍵,接在12~15腳之間,它是單片機(jī)P3口的幾根I/O口線。

圖2.1
2. 工作原理
從圖上可以看出,當(dāng)P1.0~P1.7中某個引腳輸出低電平時,則發(fā)光二極管上有電流流過,發(fā)光二極管發(fā)光,否則,當(dāng)對應(yīng)引腳為高電平時,發(fā)光二極管上無電流流過,發(fā)光二極管熄滅。S1~S4由于按鍵一端接地,當(dāng)按鍵按下時,對應(yīng)的引腳被拉成低電平。單片機(jī)通過查詢這幾根口線的高低電平狀態(tài),就知道對應(yīng)的按鍵是否按下。
2.1.2 控制程序
1. 主程序流程圖

圖2.2
2. 控制程序
ORG 0000H
LJMP MAIN
ORG 0003H
CLR 20H.0 ;清除按鍵標(biāo)志
RETI ;中斷返回
ORG 000BH
LJMP DELAY ;25ms延時中斷服務(wù)程序
MAIN: SETB 20H.0 ;初始化按鍵標(biāo)志
MOV TMOD,#01H ;初始化定時計數(shù)器T0
MOV TL0,#00H ;
MOV TH0,#4CH ;
MOV B,#20 ;定時中斷次數(shù)初始化
SETB IT0 ;設(shè)置外部中斷的響應(yīng)方式
SETB EA ; 中斷系統(tǒng)初始化
SETB EX0 ;
SETB ET0 ;
SETB PX0 ;
MOV P1,#00H ;P1口狀態(tài)初始化
SETB TR0 ;啟動定時器T0
BEGIN: JB 20H.0,SHOW;判斷是否按鍵
MOV B,#250 ;是,延時5秒保持現(xiàn)有狀態(tài)
CJNE B,#00,$ ; 延時時間是否到了?沒到,等待
MOV A,P1 ;到了狀態(tài)翻轉(zhuǎn)
CPL A ;
MOV P1,A ;
SJMP BEGIN ; 循環(huán)原過程
DELAY: MOV TL0,#00H ; 定時中斷服務(wù)程序
MOV TH0,#4CH
DJNZ B,LOOP
MOV B,#20
LOOP: RETI
END
【小貼士】: 任務(wù)中假設(shè)單片機(jī)外接的石英晶體振蕩器的頻率為11.0592MHz,定時器、中斷的使用我們將在核心模塊的單元五中講解,各種指令及ORG、END等偽指令將在核心模塊的單元三、四中詳細(xì)講解。
2.1.3 源程序的編輯、編譯、下載
打開“偉福”模擬仿真軟件進(jìn)行程序的編輯、編譯。
打開“ISP下載軟件”將目標(biāo)文件下載到ISP-4實驗開發(fā)板上的AT89S51單片機(jī)芯片,觀察程序運行結(jié)果。
