?? 14_leddz.asm
字號:
;//*******************************************************************
;文件名: LED點陣顯示 FOR 8088
;接線:對應連接LED點陣模塊的DIN、SCLK、RCLK到8255模塊的PC0、PC1、PC2;
; 連接8255模塊的CS_8255到CPU模塊的200H。
;//********************************************************************
;PC.0——DIN
;PC.1——SCLK
;PC.2——RCLK
;CS_8255——200H
PA8255 EQU 200H ;8255PA口地址
PB8255 EQU 201H ;8255PB口地址
PC8255 EQU 202H ;8255PC口地址
PCTL8255 EQU 203H ;8255控制口地址
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START:
PUSH CS
POP DS
MOV DX,PCTL8255
MOV AL,80H ;設置8255為輸出
OUT DX,AL
MOV AL,04H ;PC2: RCLK置“0”
OUT DX,AL
BEGIN:
MOV CX,050H ;延時常數
DISPLAY:
PUSH CX
MOV AH,0 ; 從0開始
MOV CH,8 ; 8行
WRITE1:
MOV CL,5 ; 1行4個字節
WRITE2:
MOV AL,AH
LEA BX,TAB
XLAT ; 取段碼
CALL OUTDATA
INC AH ; 下一個字節
DEC CL
CMP CL,0
JNZ WRITE2
MOV DX,PCTL8255
MOV AL,05H ; PC2: RCLK置“1”
OUT DX,AL ; 顯示一行
MOV AL,04H ; PC2: RCLK置“0”
OUT DX,AL
DEC CH
CMP CH,0
JNZ WRITE1 ; 下一行
POP CX
LOOP DISPLAY ;重復
MOV CX,0FFFFH ;延時常數
CLEAR0: ;清屏
MOV DX,PCTL8255
MOV AL,04H ; PC2: RCLK置“0”
OUT DX,AL
LOOP CLEAR0
JMP BEGIN ;重復
OUTDATA: ;串行輸出一個字節
PUSH CX
MOV CX,8
MOV DX,PCTL8255
OUTBIT:
RCR AL,1
PUSH AX
JC OUT_1
MOV AL,00H ;PC0: DIN 置“0”
OUT DX,AL
JMP GOTO1
OUT_1:
MOV AL,01H ;PC0: DIN置“1”
OUT DX,AL
GOTO1:
MOV AL,02H ;PC1: SCLK置“0”
OUT DX,AL
MOV AL,03H ;PC1: SCLK置“1”
OUT DX,AL
POP AX
LOOP OUTBIT
POP CX
RET
TAB: ;箭頭
DB 80H,0FFH,0FFH,0FFH,0FFH ;第一行
DB 40H,0FFH,0DFH,0DFH,0FFH ;第二行
DB 20H,0FFH,0BFH,0BFH,0FFH ;第三行
DB 10H,0FFH,001H,001H,0FFH ;第四行
DB 08H,0FFH,0BFH,0BFH,0FFH ;第五行
DB 04H,0FFH,0DFH,0DFH,0FFH ;第六行
DB 02H,0FFH,0FFH,0FFH,0FFH ;第七行
DB 01H,0FFH,0FFH,0FFH,0FFH ;第八行
; 行選/右綠/右紅/左綠/左紅
; 高 / 低 / 低 / 低 / 低
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -