⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 1.将LED模块的CSLED接8088地址的200H。 2.编译原文件
💻 TXT
📖 第 1 页 / 共 2 页
字号:
CSLED EQU 200H	        ;LED输出端口
CSC1  EQU CSLED			;列1~8  273     左半屏
CSC2  EQU CSLED+1H		;列9~16 273     右半屏
CSR1  EQU CSLED+2H		;行1~8  374    上半屏
CSR2  EQU CSLED+3H		;行9~16 374    下半屏
Z8279    EQU       239H   ;控口
D8279    EQU       238H   ;数口
LEDFEQ   EQU       99H  ;扫描频率
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
data segment    ;定义数据段
	fade dw ?   ;一个字显示停留多长时间
	shift dw ?  ;每个字地址相对基地址的偏移量
	shift2 dw ?
    shift3 dw ?
    shift4 dw ?
	base dw ?   ;每个汉字的地址
	key db ?
data ends
stack segment
sta dw 50 dup(?)    
top equ length sta
stack ends
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
	push cs
	pop ds
;;;;;;;;;;;8279(按键检测)主程序
	 MOV   DX,Z8279
	 MOV   AL,0D1H
	 OUT   DX,AL                  ;清FIFO寄存器
	 MOV   AL,LEDFEQ
	 OUT   DX,AL
 WAIIT:
 MOV   DX,Z8279                 
 NOP
 NOP
 nop
 
	 IN     AL,DX                ;从控口读数据
	 AND 	AL,0FH
	 JZ     WAIIT                 ;无键按下则等待
 	 MOV    AL,0fH               ;写 读FIFO RAM命令字
	 OUT    DX,AL
	 MOV    DX,D8279             ;读入FIFO RAM内容
	 IN     AL,DX
	 NOP              
 	 LEA    BX,LED
	 XLAT
	 MOV    DX,D8279          
	 OUT    DX,AL               ;将AL中内容写到数码管上
 	 mov    key,AL
	                            ; 调子程序
	 cmp    key,06H
	 jne    p2
	 CAll   proc1               ;翻屏显示汉字
p2:
	 cmp    key,5BH
	 jne    p3
	 CALL   proc2              

p3:  
     cmp    key,4FH
	 jne    p4
	 CALL   proc3 
p4:	 
     cmp    key,66H
	 jne    p5
	 CALL   proc4

p5:  
	 MOV    DX,Z8279              ;清FIFO RAM寄存器
	 MOV    AL,0C3H
	 OUT    DX,AL
	 
	 CALL   DELAY

    JMP    WAIIT                  ;等待下一次键输入 
LED  DB     3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
     DB     5EH,79H,71H	 
;-----------------------------Proc1-BEGIN----------------------------------
proc1 proc NEAR
	mov     shift,0               ;变量初始化必须放在push cs与pop ds之后才有效
redo:
	mov     fade,01FFh
	MOV 	AL,00H		      ;关闭列
	MOV 	DX,CSC1
	OUT 	DX,AL
	MOV 	DX,CSC2
	OUT 	DX,AL
	MOV 	AL,0FFH	          ;关闭行
	MOV 	DX,CSR1
	OUT 	DX,AL
	MOV 	DX,CSR2
	OUT 	DX,AL
D:
	MOV CX,08H
	MOV AH,01H	             ;每次为单行扫描
	lea bx,HZ
	Add bx,Shift
	mov base,bx
	MOV SI,base	             ;此处设定所要显示的字符
DISP1_1:	
	MOV AL,[SI]
	not al
	MOV DX,CSR1
	OUT DX,AL
	INC SI
	MOV AL,[SI]
	not al
	MOV DX,CSR2
	OUT DX,AL		
	MOV DX,CSC1
	MOV AL,AH
	OUT DX,AL
	SHL AH,1
	INC SI
	CALL DELAY	
	MOV AL,00H	              ;在设置下一列值之前关闭行扫描,以消除扫描之间的闪烁
	OUT DX,AL
	LOOP DISP1_1	
	MOV CX,08H
	MOV AH,01H	              ;每次为单行扫描	
	lea bx,HZ
	Add bx,Shift
	mov base,bx
	add base,16
	MOV SI,base	              ;此处设定所要显示的字符
DISP1_2:
	MOV AL,[SI]
	not al
	MOV 	DX,CSR1
	OUT DX,AL	
	INC SI
	MOV AL,[SI]
	not al
	MOV 	DX,CSR2
	OUT DX,AL	
	MOV 	DX,CSC2
	MOV AL,AH
	OUT DX,AL
	SHL AH,1
	INC SI
	CALL DELAY	
	MOV AL,00H	               ;在设置下一列值之前关闭行扫描,以消除扫描之间的闪烁
	OUT DX,AL
	LOOP DISP1_2
		dec fade
		jz   out1
	JMP D
	out1:
	add shift,32
	cmp shift,352
	  jne not64
       	mov shift,0
	jmp  end_p1
not64:
    jmp redo
end_p1:    
RET
proc1 ENDP    	
;-----------------------------Proc2-BEGIN----------------------------------
proc2 proc NEAR
	mov     shift2,0               ;变量初始化必须放在push cs与pop ds之后才有效
redo2:
	mov     fade,01FFh
	MOV 	AL,00H		      ;关闭列
	MOV 	DX,CSC1
	OUT 	DX,AL
	MOV 	DX,CSC2
	OUT 	DX,AL
	MOV 	AL,0FFH	          ;关闭行
	MOV 	DX,CSR1
	OUT 	DX,AL
	MOV 	DX,CSR2
	OUT 	DX,AL
D2:
	MOV CX,08H
	MOV AH,01H	             ;每次为单行扫描
	lea bx,HZ2
	Add bx,Shift2
	mov base,bx
	MOV SI,base	             ;此处设定所要显示的字符
DISP2_1:	
	MOV AL,[SI]
	not al
	MOV DX,CSR1
	OUT DX,AL
	INC SI
	MOV AL,[SI]
	not al
	MOV DX,CSR2
	OUT DX,AL		
	MOV DX,CSC1
	MOV AL,AH
	OUT DX,AL
	SHL AH,1
	INC SI
	CALL DELAY	
	MOV AL,00H	              ;在设置下一列值之前关闭行扫描,以消除扫描之间的闪烁
	OUT DX,AL
	LOOP DISP2_1	
	MOV CX,08H
	MOV AH,01H	              ;每次为单行扫描	
	lea bx,HZ2
	Add bx,Shift2
	mov base,bx
	add base,16
	MOV SI,base	              ;此处设定所要显示的字符
DISP2_2:
	MOV AL,[SI]
	not al
	MOV 	DX,CSR1
	OUT DX,AL	
	INC SI
	MOV AL,[SI]
	not al
	MOV 	DX,CSR2
	OUT DX,AL	
	MOV 	DX,CSC2
	MOV AL,AH
	OUT DX,AL
	SHL AH,1
	INC SI
	CALL DELAY	
	MOV AL,00H	               ;在设置下一列值之前关闭行扫描,以消除扫描之间的闪烁
	OUT DX,AL
	LOOP DISP2_2
		dec fade
		jz   out2
	JMP D2
	out2:
	add shift2,32
	cmp shift2,128
	  jne not128
       	mov shift2,0
	jmp  end_p2
not128:
    jmp redo2
end_p2:    
RET
proc2 ENDP    	
;-----------------------------Proc3-BEGIN----------------------------------
proc3 proc NEAR
	mov     shift3,0               ;变量初始化必须放在push cs与pop ds之后才有效
redo3:
	mov     fade,01FFh
	MOV 	AL,00H		      ;关闭列
	MOV 	DX,CSC1
	OUT 	DX,AL
	MOV 	DX,CSC2
	OUT 	DX,AL
	MOV 	AL,0FFH	          ;关闭行
	MOV 	DX,CSR1
	OUT 	DX,AL
	MOV 	DX,CSR2
	OUT 	DX,AL
D3:
	MOV CX,08H
	MOV AH,01H	             ;每次为单行扫描
	lea bx,HZ3
	Add bx,Shift3
	mov base,bx
	MOV SI,base	             ;此处设定所要显示的字符
DISP3_1:	
	MOV AL,[SI]
	not al
	MOV DX,CSR1
	OUT DX,AL
	INC SI
	MOV AL,[SI]
	not al
	MOV DX,CSR2
	OUT DX,AL		
	MOV DX,CSC1
	MOV AL,AH
	OUT DX,AL
	SHL AH,1
	INC SI
	CALL DELAY	
	MOV AL,00H	              ;在设置下一列值之前关闭行扫描,以消除扫描之间的闪烁
	OUT DX,AL
	LOOP DISP3_1	
	MOV CX,08H
	MOV AH,01H	              ;每次为单行扫描	
	lea bx,HZ3
	Add bx,Shift3
	mov base,bx
	add base,16
	MOV SI,base	              ;此处设定所要显示的字符
DISP3_2:
	MOV AL,[SI]
	not al
	MOV 	DX,CSR1
	OUT DX,AL	
	INC SI
	MOV AL,[SI]
	not al
	MOV 	DX,CSR2
	OUT DX,AL	
	MOV 	DX,CSC2
	MOV AL,AH
	OUT DX,AL
	SHL AH,1
	INC SI
	CALL DELAY	
	MOV AL,00H	               ;在设置下一列值之前关闭行扫描,以消除扫描之间的闪烁
	OUT DX,AL
	LOOP DISP3_2
		dec fade
		jz   out3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -