📄 004.lst
字号:
A51 MACRO ASSEMBLER 004 08/17/2007 09:13:20 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN 004.OBJ
ASSEMBLER INVOKED BY: e:\Keil\C51\BIN\A51.EXE 004.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
5
6
7
8
9 ;按键行列值表示如下:
10 ;----P1.7---P1.6---P1.5---P1.4-------
11 ;----0----1----2----3----P1.0
12 ;----4----5----6----7----P1.1
13 ;----8----9----A----B----P1.2
14 ;----C----D----E----F----P1.3
15
0000 16 ORG 0000H
0000 0130 17 AJMP MAIN
0030 18 ORG 0030H
0030 19 MAIN:
0030 90013B 20 MOV DPTR,#TAB1 ;将表头位置送入DPT
0033 753000 21 MOV 30H,#00H ;将30显示单元清零
0036 7531FF 22 MOV 31H,#0FFH ;将31显示单元清零
0039 7532FF 23 MOV 32H,#0FFH ;将32显示单元清零
003C 7533FF 24 MOV 33H,#0FFH ;将33显示单元清零
003F 753500 25 MOV 35H,#00H ;将35显示单元清零
0042 26 LOOP:
0042 20D516 27 JB F0,KK1 ;F0若等于一则跳到KK1处
0045 753500 28 MOV 35H,#00H
0048 29 KK2:
30
0048 120079 31 LCALL DISPLAY ;调用显示程序
004B 1200C4 32 LCALL KEY ;调用键盘描程序
004E F4 33 CPL A ;将A的值取反
004F 60F1 34 JZ LOOP ;无键按下则返回
0051 E534 35 MOV A,34H ;有键按下将键值送入ACC
0053 B40A13 36 CJNE A,#0AH,NORP ;若A键未按下则返回到LOOP处
0056 D2D5 37 SETB F0 ;若A键按下则将F0值1
0058 020042 38 LJMP LOOP ;返回LOOP处不断的循环
005B 39 KK1:
005B 0535 40 INC 35H ;将35H向上加一
005D E535 41 MOV A,35H ;将35H中的值送入ACC
005F B40AE6 42 CJNE A,#10,KK2 ;ACC中的值与10相等则跳转至KK2
0062 753500 43 MOV 35H,#00H ;若ACC等于零则将35H清零
0065 B200 44 CPL 00H ;将00H位取反
0067 0148 45 AJMP KK2 ;跳转至KK2处
46
0069 47 NORP:
0069 853233 48 MOV 33H,32H ;将32H显示单元的内容送入33H
006C 853132 49 MOV 32H,31H ;将31H显示单元的内容送入32H
006F 853031 50 MOV 31H,30H ;将30H单元的内容送入31H
0072 E534 51 MOV A,34H ;将键值送入ACC
0074 F530 52 MOV 30H,A ;将ACC的值送入30H
0076 020042 53 LJMP LOOP ;返回主程序循环
0079 54 DISPLAY: ;显示子程序
0079 75A0FF 55 MOV P2,#0FFH ;将P2口置高电平
007C 7F64 56 MOV R7,#100 ;软件计势鞲持
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -