標題: 想學點知識,麻煩各位了 求幫助 [打印本頁]
作者: 5664645345 時間: 2018-7-12 13:12
標題: 想學點知識,麻煩各位了 求幫助
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
TIME DB 00H,06H
LEDTAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H,38H
COUNT DW 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
;填IR0中斷向量
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ0
ADD AX,2000H
MOV SI,0020H
MOV [SI],AX
MOV AX,0000H
MOV SI,0022H
MOV [SI],AX
CLI
POP DS
IN AL,21H
AND AL,0FEH;清除對IRQ0的中斷
OUT 21H,AL
;填IR2中斷向量
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ2
ADD AX,2000H
MOV SI,0028H
MOV [SI],AX
MOV AX,0000H
MOV SI,002AH
MOV [SI],AX
CLI
POP DS
IN AL,21H
AND AL,0FBH;清除對IRQ2的中斷
OUT 21H,AL
;填IRQ5中斷向量
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ5
ADD AX,2000H
MOV SI,0034H
MOV [SI],AX
MOV AX,0000H
MOV SI,0036H
MOV [SI],AX
CLI
POP DS
IN AL,21H
AND AL,0DFH;清除對IRQ5的中斷
OUT 21H,AL
;填IRQ6中斷向量
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ6
ADD AX,2000H
MOV SI,0038H
MOV [SI],AX
MOV AX,0000H
MOV SI,003AH
MOV [SI],AX
CLI
POP DS
IN AL,21H
AND AL,0BFH;清除對IRQ6的中斷
OUT 21H,AL
;填IRQ7中斷向量
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ7
ADD AX,2000H
MOV SI,003CH
MOV [SI],AX
MOV AX,0000H
MOV SI,003EH
MOV [SI],AX
CLI
POP DS
IN AL,21H
AND AL,7FH;清除對IRQ7的中斷
OUT 21H,AL
;NORMAL表示正常情況下的倒計時
NORMAL:MOV AL,80H ;8255A初始化,A,B口方式0輸出,C口輸出
OUT 63H,AL
MOV AL,0B6H ;8253A初始化,計數器2方式3
OUT 43H,AL
MOV AX,59500
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
MOV COUNT,0
STI
FANS1:MOV AL,0B7H ;FANS1表示主干道綠燈,次干道紅燈。LED顯示60-5秒
OUT 61H,AL
CALL DISP
CMP COUNT,20
JL FANS1
MOV COUNT,0
MOV DI,OFFSET TIME
MOV AL,[DI+1]
CMP AL,00H
JZ A5
MOV AL,[DI]
CMP AL,00H
JZ A6
DEC AL
MOV [DI],AL
JMP FANS1
A5: MOV AL,[DI]
CMP AL,06H
JZ A0
DEC AL
MOV [DI],AL
JMP FANS1
A6: MOV AL,9
MOV [DI],AL
MOV AL,[DI+1]
DEC AL
MOV [DI+1],AL
JMP FANS1
A0: MOV AL,05H
MOV [DI],AL
JMP FANS21
;FANS21和FANS22表示次干道紅燈,主干道隔一秒黃燈亮一次。LED顯示5-1秒,再由1秒跳為45秒
FANS21:MOV AL,9DH ;FANS21表示主干道黃燈,次干道紅燈
OUT 61H,AL
CALL DISP
CMP COUNT,20
JL FANS21
MOV COUNT,0
MOV DI,OFFSET TIME
MOV AL,[DI]
CMP AL,01H
JZ A7
DEC AL
MOV [DI],AL
JMP FANS22
A7: MOV AL,4
MOV [DI+1],AL
MOV AL,5
MOV [DI],AL
JMP FANS3
FANS22:MOV AL,0BFH ;FANS22表示次干道紅燈,主干道不亮燈
OUT 61H,AL
CALL DISP
CMP COUNT,20
JL FANS22
MOV COUNT,0
MOV DI,OFFSET TIME
MOV AL,[DI]
CMP AL,01H
JZ A7
DEC AL
MOV [DI],AL
JMP FANS21
FANS3:MOV AL,7BH ;FANS3表示主干道紅燈,次干道綠燈。LED顯示45-5秒
OUT 61H,AL
CALL DISP
CMP COUNT,20
JL FANS3
MOV COUNT,0
MOV DI,OFFSET TIME
MOV AL,[DI+1]
CMP AL,00H
JZ A8
MOV AL,[DI]
CMP AL,00H
JZ A9
DEC AL
MOV [DI],AL
JMP FANS3
A8: MOV AL,[DI]
CMP AL,06H
JZ A1
DEC AL
MOV [DI],AL
JMP FANS3
A9: MOV AL,9
MOV [DI],AL
MOV AL,[DI+1]
DEC AL
MOV [DI+1],AL
JMP FANS3
A1: MOV AL,05H
MOV [DI],AL
JMP FANS41
;FANS41和FANS42表示主干道紅燈,次干道隔一秒黃燈亮一次。LED顯示5-1秒,再由1秒跳為60秒
FANS41:MOV AL,6EH ;FANS41表示主干道紅燈,次干道黃燈
OUT 61H,AL
CALL DISP
CMP COUNT,20
JL FANS41
MOV COUNT,0
MOV DI,OFFSET TIME
MOV AL,[DI]
CMP AL,01H
JZ A10
DEC AL
MOV [DI],AL
JMP FANS42
A10: MOV AL,6
MOV [DI+1],AL
MOV AL,0
MOV [DI],AL
JMP FANS1
FANS42:MOV AL,7FH ;FANS41表示主干道紅燈,次干道不亮燈
OUT 61H,AL
CALL DISP
CMP COUNT,20
JL FANS42
MOV COUNT,0
MOV DI,OFFSET TIME
MOV AL,[DI]
CMP AL,01H
JZ A10
DEC AL
MOV [DI],AL
JMP FANS41
;以上執行完105秒為一個循環,再跳回FANS1重新開始循環
;以下為遇到特殊情況的中斷
;IRQ0的中斷服務程序
IRQ0: MOV AL,20H ;遇到特殊情況,主干道一直保持通行(綠燈),次干道保持禁止通行(紅燈)狀態;LED顯示'SP'表示'STOP'由按鍵KK1-控制
OUT 20H,AL
L7: STI
MOV DI,OFFSET TIME
MOV AL,5
MOV [DI+1],AL
MOV AL,10
MOV [DI],AL
MOV AL,0B7H
OUT 61H,AL
CALL DISP
JMP L7
IRET
;IRQ2的中斷服務程序
IRQ2: MOV AL,20H ;在午夜車流量較少時,黃燈每隔0.5秒亮一次;LED顯示'LS'表示'LOW SPEED'由按鍵KK2-控制
OUT 20H,AL
STI
MOV DI,OFFSET TIME
MOV AL,11
MOV [DI+1],AL
MOV AL,5
MOV [DI],AL
L3: MOV COUNT,0
L0: MOV AL,0CCH
OUT 61H,AL
CALL DISP
CMP COUNT,10
JL L0
MOV COUNT,0
L1: MOV AL,0FFH
OUT 61H,AL
CALL DISP
CMP COUNT,10
JL L1
JMP L3
IRET
;IRQ5的中斷服務程序
IRQ5: MOV AL,20H ;完成復位從45秒開始進入NORMAL狀態由開關K0控制
OUT 20H,AL
MOV DI,OFFSET TIME
MOV AL,4
MOV [DI+1],AL
MOV AL,5
MOV [DI],AL
MOV AL,88H ;8255A初始化,A,B口方式0輸出,C低四位口輸出,高四位輸入
OUT 63H,AL
MOV AL,0B6H ;8253A初始化,計數器2方式3
OUT 43H,AL
MOV AX,59500
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
MOV COUNT,0
STI
JMP FANS3
IRET
;IRQ6的中斷服務程序
IRQ6: MOV AL,20H ;完成復位從60秒開始進入NORMAL狀態由開關K1控制
OUT 20H,AL
MOV DI,OFFSET TIME
MOV AL,6
MOV [DI+1],AL
MOV AL,0
MOV [DI],AL
JMP NORMAL
IRET
;IRQ7的中斷服務程序
IRQ7: INC COUNT ;由8253的OUT2控制,每隔50ms發一次中斷,讓COUNT值加1
MOV AL,20H
OUT 20H,AL
IRET
;顯示子程序
DISP PROC NEAR
MOV DI,OFFSET TIME
MOV CL,0FEH
ST1: MOV AL,CL
TEST AL,04H ;判斷顯示到第幾位,是否顯示到最高位
JZ ED
OUT 62H,AL ;C口低四位做輸入用于選擇哪個LED亮
ROL AL,01H ;讓下一位LED燈管顯示
MOV CL,AL
MOV AL,[DI]
MOV BX,OFFSET LEDTAL
XLAT
OUT 60H,AL ;A口做輸出用于LED顯示
CALL DELAY
INC DI
JMP ST1
ED: RET ;每個LED都顯示完畢
DISP ENDP
;延時子程序
DELAY PROC NEAR
PUSH CX
MOV CX,2000 ;0.5ms,每0.5ms就切換一次LED燈管的顯示,給人視覺各個LED是同時亮
WAIT: LOOP WAIT
POP CX
RET
DELAY ENDP
CODE ENDS
END START
-
88[]{{83C_CD%SLFEP@RLYJ.png
(138.13 KB, 下載次數: 47)
下載附件
2018-7-12 13:11 上傳
作者: 5664645345 時間: 2018-7-12 13:12
幫我改一下,謝謝大家
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
日韩精品成人在线
|
午夜精品久久久久久久久久久久久
|
美女黄视频网站
|
亚洲在线一区二区
|
福利片在线|
日韩毛片
|
久免费视频
|
国产成人jvid在线播放
|
一级黄色播放
|
午夜影视
|
免费能直接在线观看黄的视频
|
国产高清久久
|
欧美一区视频在线
|
国产精品日韩在线观看一区二区
|
自拍偷拍中文字幕
|
成人免费黄色片
|
久久国产亚洲
|
精国产品一区二区三区四季综
|
一区二区三区四区免费观看
|
婷婷91|
中文字幕 亚洲一区
|
中文字幕一区二区三区四区
|
久草网站
|
在线视频91
|
精品视频在线观看
|
97色在线视频
|
欧美在线一区二区三区
|
欧美国产日韩精品
|
日韩在线精品视频
|
欧美日韩亚洲国产
|
日韩1区2区
|
亚洲国产一区二区三区在线观看
|
夜久久
|
caoporon|
欧美女优在线观看
|
国产精品无码专区在线观看
|
三级av免费
|
亚洲精品日本
|
成年人免费在线视频
|
国产精品一区一区
|
夜夜骚|