欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
AT89C51單片機中斷實驗 匯編語言程序
[打印本頁]
作者:
ddddd呃呃呃呃
時間:
2021-7-4 12:53
標題:
AT89C51單片機中斷實驗 匯編語言程序
(1)基于8051內(nèi)核單片機(如at89C51等)進行實驗
(2)模擬有急救車通過的交通燈控制實驗:允許急救車優(yōu)先通過。當有急救車到達時,兩個方向上的紅燈亮(可以發(fā)光二極管模擬),以便讓急救車通過,假定急救車通過路口的時間為10秒,急救車通過后,交通燈恢復中斷前的狀態(tài)。實驗以按鍵開關(guān)為中斷申請,表示有急救車通過。
(3)uvision2/4軟件平臺上編寫、調(diào)試程序。
(4)Proteus軟件平臺上仿真。
本實驗中斷處理程序的應(yīng)用,最主要的地方是如何保護進入中斷前的狀態(tài),使得中斷程序執(zhí)行完畢后能回到交通燈中斷前的狀態(tài)。要保護的地方,除了累加器ACC、標志寄存器PSW外,還要注意:第一是主程序中的延時程序和中斷處理程序中的延時程序不能混用,本實驗給出的程序中,主程序延時用的是R5、R6、R7,中斷延時用的是R3、R4和新的R5。第二,主程序中每執(zhí)行一步經(jīng)74LS273的端口輸出數(shù)據(jù)的操作時,應(yīng)先將所輸出的數(shù)據(jù)保存到一個單元中。因為進入中斷程序后也要執(zhí)行往74LS273端口輸出數(shù)據(jù)的操作,中斷返回時如果沒有恢復中斷前74LS273端口鎖存器的數(shù)據(jù),則顯示往往出錯,回不到中斷前的狀態(tài)。還要注意一點,主程序中往端口輸出數(shù)據(jù)操作要先保存再輸出,例如有如下操作:
MOV A,#0F0H (0)
MOVX @R1,A (1)
MOV SAVE,A (2)
程序如果正好執(zhí)行到(1)時發(fā)生中斷,則轉(zhuǎn)入中斷程序,假設(shè)中斷程序返回主程序前需要執(zhí)行一句MOV A,SAVE指令,由于主程序中沒有執(zhí)行(2),故SAVE中的內(nèi)容實際上是前一次放入的而不是(0)語句中給出的0F0H,顯示出錯,將(1)、(2)兩句順序顛倒一下則沒有問題。發(fā)生中斷時兩方向的紅燈一起亮10秒,然后返回中斷前的狀態(tài)。
圖3.1 主程序框圖
圖3.2 中斷程序框圖
實驗步驟
74LS273的輸出O0~O7接發(fā)光二極管L1~L8,74LS273的片選CS273\接片選信號CS2,此時74LS273的片選地址為CFB0H~CFB7H之間任選。單脈沖輸出端P-接CPU板上的INT0。
實驗數(shù)據(jù)分析及處理
燒錄
程序運行結(jié)果
仿真結(jié)果
NAME T5 //中斷控制實驗
OUTPORT EQU 0CFB0H //端口地址
SAVE EQU 55H //保存從端口cfa0輸出的數(shù)據(jù)
CSEG AT 0000H
LJMP START
CSEG AT 0003H
LJMP INT
CSEG AT 0100H
START: SETB IT0
SETB EX0
SETB EA
MOV A,#11H //置首顯示碼
MOV SAVE,A //保存
ACALL DISP //顯示輸出
ACALL DE3S //延時3秒
LLL: MOV A,#12H //東西路口綠燈亮,南北路口紅燈亮
MOV SAVE,A
ACALL DISP
ACALL DE10S //延時10秒
MOV A,#10H //東西路口綠燈滅
MOV SAVE,A
ACALL DISP
MOV R2,#05H //東西路口黃燈閃爍5次
TTT: MOV A,#14H
MOV SAVE,A
ACALL DISP
ACALL DE02S
MOV A,#10H
MOV SAVE,A
ACALL DISP
ACALL DE02S
DJNZ R2,TTT
MOV A,#11H //紅燈全亮
MOV SAVE,A
ACALL DISP
ACALL DE02S //延時0.2秒
MOV A,#21H //東西路口紅燈亮,南北路口綠燈亮
MOV SAVE, A
ACALL DISP
ACALL DE10S //延時10秒
MOV A,#01H //南北路口綠燈滅
MOV SAVE,A
ACALL DISP
MOV R2,#05H //南北路口黃燈閃爍5次
GGG: MOV A,#41H
MOV SAVE,A
ACALL DISP
ACALL DE02S
MOV A,#01H
MOV SAVE,A
ACALL DISP
ACALL DE02S
DJNZ R2,GGG
MOV A,#11H //紅燈全亮
MOV SAVE,A
ACALL DISP
ACALL DE02S //延時0.2秒
JMP LLL //轉(zhuǎn)LLL循環(huán)
DE10S: MOV R5,#100 //延時10秒
JMP DE1
DE3S: MOV R5,#30 //延時3秒
JMP DE1
DE02S: MOV R5,#02 //延時0.2秒
DE1: MOV R6,#200
DE2: MOV R7,#126
DE3: DJNZ R7,DE3
DJNZ R6,DE2
DJNZ R5,DE1
RET
INT: CLR EA
PUSH ACC //中斷處理
PUSH PSW
MOV A,R5
PUSH ACC
MOV A,#11H //紅燈全亮,綠、黃燈全滅
ACALL DISP
DEL10S: MOV R3,#100 //延時10秒
DEL1: MOV R2,#200
DEL2: MOV R5,#126
DEL3: DJNZ R5,DEL3
DJNZ R4,DEL2
DJNZ R3,DEL1
MOV A,SAVE //取SAVE中保存數(shù)據(jù)輸出到cfa0端口
ACALL DISP
POP ACC //出棧
MOV R5,A
POP PSW
POP ACC
SETB EA //允許外部中斷
RETI
DISP: MOV DPTR,#OUTPORT
CPL A
MOV P1,A
RET
END
以上的Word格式文檔51黑下載地址:
實驗4(1).docx
(348.11 KB, 下載次數(shù): 4)
2021-7-4 12:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1