📄 1602key.lst
字号:
A51 MACRO ASSEMBLER 1602KEY 10/02/2006 11:05:08 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN 1602key.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 1602key.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;按压矩阵键盘按钮=液晶1602显示预定字符
2
3 ;按键行列值表示如下:
4 ;----P1.7---P1.6---P1.5---P1.4-------
5 ;----03H----02H----01H----00H----P1.0
6 ;----07H----06H----05H----04H----P1.1
7 ;----0BH----0AH----09H----08H----P1.2
8 ;----0FH----0EH----0DH----0CH----P1.3
9 ;///////////////////////////////////////////
00A0 10 RS EQU P2.0 ;决定要传送的是命令还是数据
00A1 11 RW EQU P2.1 ;决定要读还是写,一般写的时候多.
00A2 12 E EQU P2.2 ;时钟信号
0080 13 SJ EQU P0 ;数据线
0000 14 org 00h
0000 0130 15 ajmp main
0030 16 org 030h
0030 17 main:
0030 758160 18 mov sp,#60h
0033 19 main1:
0033 1200A2 20 lcall delay ;延时一段时间
0036 758038 21 MOV SJ,#38H ;
0039 117F 22 ACALL ENABLE ;写指令38H
003B 758038 23 MOV SJ,#38H ;
003E 117F 24 ACALL ENABLE ;写指令38H
0040 758038 25 MOV SJ,#38H ;
0043 117F 26 ACALL ENABLE ;写指令38H
0045 758038 27 MOV SJ,#38H ;
0048 117F 28 ACALL ENABLE ;写指令38H
004A 758008 29 MOV SJ,#08H ;
004D 117F 30 ACALL ENABLE ;写指令08H
004F 758001 31 MOV SJ,#01H ;
0052 117F 32 ACALL ENABLE ;写指令01H
0054 758006 33 MOV SJ,#06H ;
0057 117F 34 ACALL ENABLE ;写指令06H
0059 75800C 35 MOV SJ,#0cH ;
005C 117F 36 ACALL ENABLE ;写指令0CH
37
005E 90010A 38 mov dptr,#table ;将表头地址送入DPTR
39
0061 1200AB 40 lcall key ;调用键盘描程序
0064 75F002 41 mov b,#02h ;将立即数送入寄存器B
0067 A4 42 mul ab ;将键值与B中的数相乘
0068 F530 43 mov 30h,a ;将相乘后的结果送入30H暂存
006A 93 44 movc a,@a+dptr ;查表并将所查得结果送入ACC中
006B F531 45 mov 31h,a ;将ACC中的数送入31H
006D E530 46 mov a,30h ;送30H中的数至ACC
006F 04 47 inc a ;将ACC中的值加一
0070 93 48 movc a,@a+dptr ;查表并所查到的低半字节送入ACC中
0071 F582 49 mov dpl,a ;将ACC中的值送入数据指针的低8位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -