📄 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 + -