?? pc8255l.asm
字號:
;FILENAME:PC8255L.ASM;
;內容:交通紅綠燈控制
PAGE 60,78
DATA SEGMENT
PB DB ?
MESS DB' ENTER ANY KEY CAN EXIT TO DOS!', 0DH, 0AH,'$'
DATA ENDS
STACK SEGMENT STACK
DW 5O DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK
START: MOV AX, DATA
MOV DS, AX ;建立DATA段
MOV ES, AX
MOV AH, 09H
MOV DX,OFFSET MESS
INT 21H ;顯示信息
MOV DX, 21BH
MOV AL,82H ;方式0,B口輸入,A,C口輸出
OUT DX, AL
MOV DX,219H
IN AL,DX ;讀B口存PB單元
MOV PB, AL
MOV DX, 21BH
MOV AL,80H ;方式0均輸出
OUT DX, AL
MOV DX,219H
MOV AL, PB
OR AL,0F0H ;置位PB口高4位,滅黃燈
OUT DX, AL
MOV DX, 21AH
MOV AL,0F0H ;4個紅燈亮,4個綠燈滅
OUT DX, AL
CALL DELAY10 ;延遲
LLL : MOV AL, 10100101B ;1,3綠燈亮,2,4紅燈亮
MOV DX, 21AH
OUT DX, AL
CALL DELAY10 ;延遲
CALL DELAY10
OR AL,0F0H ;滅1,3綠燈
OUT DX, AL
MOV CX,0008H ;置計數值8
TTT : MOV DX, 219H
MOV AL,PB ;亮1,3黃燈
AND AL,10101111B
OUT DX, AL
CALL DELAY1 ;延遲短時間
OR AL,01010000B
OUT DX,AL ;滅1,3黃燈
CALL DELAY1 ;延遲短時間
LOOP TTT ;黃燈閃爍8次
MOV DX,21AH
MOV AL,0F0H ;4個紅燈亮,4個綠燈滅
OUT DX, AL
CALL DELAY1 ;延遲
MOV AL,01011010B ;2,4綠燈亮,1,3紅燈亮
OUT DX,AL
CALL DELAY10 ;延遲
CALL DELAY10
OR AL,0F0H ;滅2,4綠燈
OUT DX, AL
MOV CX, 0008H ;8次
GGG: MOV DX, 219H
MOV AL,PB ;亮2,4黃燈
AND AL,01011111B
OUT DX, AL
CALL DELAY1 ;延遲
OR AL,10100000B ;滅2,4黃燈
OUT DX, AL
CALL DELAY1 ;延遲
LOOP GGG ;黃燈閃爍8次
MOV DX, 21AH
MOV AL,0F0H ;4個紅燈亮,4個綠燈滅
OUT DX, AL
CALL DELAY1 ;延遲
MOV AH, 06H
MOV DL,0FFH ;判斷是否有鍵按下,有則轉PPP
INT 21H
JNZ PPP
JMP LLL ;繼續
PPP: MOV AX, 4C00H ;返回DOS
INT 21H
DELAY1 PROC NEAR ;延遲子程序1
PUSH CX
MOV CX, 8000H
CCC: LOOP CCC
POP CX
RET
DELAY1 ENDP
DELAY10 PROC NEAR ;延遲子程序2
PUSH AX
PUSH CX
MOV CX, 0030
UUU: CALL DELAY1
LOOP UUU
POP CX
POP AX
RET
DELAY10 ENDP
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -