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

📄 jianpan1.asm

📁 4*4键盘扫描
💻 ASM
字号:
ORG 0000H
LJMP MAIN ;用到了去抖动,wait做去抖动延时,delay做显示延时
ORG 0100H
MAIN:	 MOV P1,#10H;8155初始化,A输入a,b,c,d;B输出驱动数码管;C输出,检测
         MOV DPTR,#0100H
         MOV A,#0EH
         MOVX @DPTR,A
ROW:     MOV DPTR,#0103H;检测是否有键入
         MOV A,#00H
         MOVX @DPTR,A
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW1;有键入
         MOV DPTR,#0102H;无键入,输出0
         MOV A,#00H
         MOVX @DPTR,A
         LJMP ROW
ROW1:    MOV DPTR,#0103H;检测第一行
         MOV A,#0EH
         MOVX @DPTR,A
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW11;有键入
ROW2:    MOV DPTR,#0103H
         MOV A,#0DH
         MOVX @DPTR,A
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW22;有键入
ROW3:    MOV DPTR,#0103H
         MOV A,#0BH
         MOVX @DPTR,A
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,LROW33;有键入
ROW4:    MOV DPTR,#0103H
         MOV A,#07H
         MOVX @DPTR,A
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,LROW44;有键入
         LJMP ROW
LROW33:	LJMP ROW33
LROW44:LJMP ROW44 
ROW11:   LCALL WAIT;去抖动,确定
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW111;有
         LJMP ROW2
ROW111:  PUSH ACC
         LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW2;有
DISPLAY1:POP ACC
         JB ACC.0,NO12
NO11:    MOV DPTR,#0102H
         MOV A,#06H
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW2
NO12:    JB ACC.1,NO13
         MOV DPTR,#0102H
         MOV A,#5BH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW2
NO13:    JB ACC.2,NO14
         MOV DPTR,#0102H
         MOV A,#4FH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW2
NO14:    MOV DPTR,#0102H
         MOV A,#77H
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW2
ROW22:   LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW222
         LJMP ROW3
ROW222:  PUSH ACC
         LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,LROW3
DISPLAY2:POP ACC
         JB ACC.0,NO22
NO21:    MOV DPTR,#0102H
         MOV A,#66H
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW3
NO22:    JB ACC.1,NO23
         MOV DPTR,#0102H
         MOV A,#6DH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW3
NO23:    JB ACC.2,NO24
         MOV DPTR,#0102H
         MOV A,#7DH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW3
NO24:    MOV DPTR,#0102H
         MOV A,#7CH
         MOVX @DPTR,A
         ACALL DELAY
LROW3:   LJMP ROW3
ROW33:   LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW333
         LJMP ROW4
ROW333:  PUSH ACC
         LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,LROW4
DISPLAY3:POP ACC
         JB ACC.0,NO32
NO31:    MOV DPTR,#0102H
         MOV A,#07H
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW4
NO32:    JB ACC.1,NO33
         MOV DPTR,#0102H
         MOV A,#7FH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW4
NO33:    JB ACC.2,NO34
         MOV DPTR,#0102H
         MOV A,#6FH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW4
NO34:    MOV DPTR,#0102H
         MOV A,#4CH
         MOVX @DPTR,A
         ACALL DELAY
LROW4:   LJMP ROW4
ROW44:   LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,ROW444
         LJMP ROW
ROW444:  PUSH ACC
         LCALL WAIT
         MOV DPTR,#0101H
         MOVX A,@DPTR
         CJNE A,#0FH,LROW
DISPLAY4:POP ACC
         JB ACC.0,NO42
NO41:    MOV DPTR,#0102H
         MOV A,#40H
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW
NO42:    JB ACC.1,NO43
         MOV DPTR,#0102H
         MOV A,#3FH
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW
NO43:    JB ACC.2,NO44
         MOV DPTR,#0102H
         MOV A,#04H
         MOVX @DPTR,A
         ACALL DELAY
         LJMP ROW
NO44:    MOV DPTR,#0102H
         MOV A,#5EH
         MOVX @DPTR,A
         ACALL DELAY
LROW:    LJMP ROW
DELAY:   MOV R0,#0FFH
DELAY1:  MOV R1,#0FFH
         DJNZ R1,$
         DJNZ R0,DELAY1
         RET
WAIT:   MOV R0,#05H
WAIT1:  MOV R1,#0FFH
         DJNZ R1,$
         DJNZ R0,WAIT1
         RET
         END

⌨️ 快捷键说明

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