📄 keyboardscan1.asm
字号:
;********************************************************************************
;********************************************************************************
;* 描述: *
;* 矩阵键盘数码管显示键值 *
;* *
;* 矩阵键盘定义: *
;* P1.0-P1.3为列线,P1.4-P1.7为行线 *
;* *
;* *
;********************************************************************************
// RELAY EQU P1.3
// BEEP EQU P3.3
;------------------------------------------------------
ORG 0000H
JMP MAIN
;------------------------------------------------------
MAIN: MOV P1,#0FE
END
//LOOP1:
// CALL KEY_IN
// CALL KEY_PLAER
// JMP LOOP1
;-----------------------------------------------------
//KEY_IN: MOV P1,#0F0H ;置列线为0,行线为1
// MOV A,P1
// ANL A,#0F0H
// MOV B,A
// MOV P1,#0FH ;置列线为1,行线为0
// MOV A,P1
// ANL A,#0FH
// ORL A,B ;高四位与低四位重新组合
// CJNE A,#0FFH,KEY_IN1 ;0FFH为末按键
// RET
//KEY_IN1: MOV B,A
// MOV DPTR,#KEYTABLE
// MOV R3,#0FFH ;
//KEY_IN2: INC R3
// MOV A,R3
// MOVC A,@A+DPTR
// CJNE A,B,KEY_IN3
// MOV A,R3 ;找到,取顺序码
// MOV 30H,A
// CALL BEEP_BL
// RET
//KEY_IN3: CJNE A,#0FFH,KEY_IN2 ;末完,继续查
// RET ;0FFH为结束码
;----------------------------------------------
;蜂鸣器响一声子程序
;----------------------------------------------
//BEEP_BL:
// MOV R6,#100
// BL1: CALL DEX1
// CPL BEEP
// DJNZ R6,BL1
// MOV R5,#25
// CALL DELAY
// RET
// DEX1: MOV R7,#180
// DEX2: NOP
// DJNZ R7,DEX2
// RET
//DELAY: ;延时R5×10MS
// MOV R6,#50
//DELAY1: MOV R7,#100
// DJNZ R7,$
// DJNZ R6,DELAY1
// DJNZ R5,DELAY
// RET
;-----------------------------------------------------
//KEYTABLE:
// DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 顺序码
// DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9,
// DB 0BBH,0B7H,07EH,07DH,07BH ;A,B,C,D,E,
// DB 077H,0FFH ;F 0FF为结束码
;-----------------------------------------------------
;键值显示子程序
;使用一个数码管显示
;-----------------------------------------------------
//KEY_PLAER:
//
// MOV A,30H
// MOV DPTR,#TAB ;取段码表地址
// MOVC A,@A+DPTR ;查显示数据对应段码
// MOV P0,A ;段码放入P0口
// mov P2,#0f8h ;第一个数码管亮
// RET
;-----------------------------------------------------
//TAB:
// DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
// DB 80H,90H,88h,83h,0c6h,0a1h,86h,8eh
;-----------------------------------------------------
// END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -