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

📄 gg302.asm

📁 福州大学接口课程全部实验代码。包括inter的芯片8253-5、芯片8255A、芯片DAC0832、芯片ADC0809等。详细批注
💻 ASM
字号:
;gg302.asm
;for 【2.扫描法】键盘工作<8255芯片、3X6键盘>
;2005-05
;p_Sa/lcy

data	SEGMENT
  table DW  0101h,0102h,0104h,0108h,0110h,0120h
        DW  0201h,0202h,0204h,0208h,0210h,0220h
        DW  0401h,0402h,0404h,0408h,0410h,0420h	;高2位列值(横),低2位行值(竖)
    buf DB  '6789AB012345CDEFGP'
   tip0 DB  'let key down(p for over):',0dh,0ah,'$'
   tip1 DB  0dh,0ah,'The End.$'
        PA	EQU	280h
        PB	EQU	281h
        PC	EQU	282h
        PCTL EQU	283h	
data	ENDS
stack0 SEGMENT para stack
        DW	20h	DUP(0)
stack0 ENDS
        
coseg	SEGMENT
        ASSUME CS:coseg,DS:data,SS:stack0
start:  MOV AX, data
        MOV DS, AX
;================MOV-DS-AX==============  
        LEA DX, tip0
        CALL printstr		;提示信息'let key down(p for over):'
 begin1:MOV DX, PCTL
        MOV AL, 10000010b
        OUT DX, AL
        MOV AL, 0
        MOV DX, PA
        OUT DX, AL
     nn:MOV DX, PB
        IN  AL, DX
        AND AL, 07h
        CMP AL, 07h
        JZ	nn
        CALL delay	;延时,消除抖动
        
 begin2:MOV BX, 0306h		;bl送行数,bh送列数
        MOV CL, 01h		;cl起始行号
        MOV AL, 11111110b	;起始扫描码
   lop1:MOV DX, PA
        OUT DX, AL
        ROL AL, 1		;左移al,以待扫描下一行
        MOV AH, AL	;保存下一行扫描码到ah
        INC DX
        IN  AL, DX
        AND AL, 07h
        CMP AL, 07h	;扫描本行列线,是否输入全1,以判断本行是否有键按下
        JNZ lop2		;本行有键按下,跳转出扫描循环
        ROL CL, 1
        MOV AL, AH	;下一行扫描码放入al中
        DEC BL		;扫描完一行,行数减1
        JNZ lop1
        JMP begin2
   lop2:NOT AL
        AND AL, 00000111b
        MOV AH, AL	;列值放入al中
        MOV AL, CL	;行值放入al中
        LEA BX, table
        LEA SI, buf
        MOV CX, 12h
    ls1:CMP AX, [BX]
        JE  ls2		;显示
        ADD BX, 2
        ADD SI, 1
        LOOP ls1
        JMP begin1
    ls2:MOV DL, [SI]
        MOV AH, 2
        INT 21h
        MOV AL, 10000010b
        MOV DX, PCTL
        OUT DX, AL
        MOV AL, 0
        MOV DX, PA
        OUT DX, AL
        INC DX
    ls3:IN  AL, DX
        AND AL, 07h
        CMP AL, 07h
        JNE ls3
        MOV DL, [SI]
        CMP DL, 'P'
        JNE begin1
        LEA DX, tip1
        CALL printstr		;提示信息'The End.'
;================INT-21H================
        MOV AH, 4ch
        INT 21h

delay PROC		;延时子程序,消除抖动
        PUSH CX
        MOV SI, 3
     y0:MOV CX, 0h
     ys:NOP
        LOOP ys
        DEC SI
        JNZ y0
        POP CX 
        RET     
delay ENDP

printstr PROC		;打印字符串子程序
        PUSH AX
        MOV AH, 09h
        INT 21h
        POP AX
        RET
printstr ENDP

coseg	ENDS
        END	start

⌨️ 快捷键说明

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