📄 jp02.lst
字号:
A51 MACRO ASSEMBLER JP02 01/07/2007 11:31:14 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN JP02.OBJ
ASSEMBLER INVOKED BY: C:\Keil7.06\C51\BIN\A51.EXE JP02.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;文件名:JP02.ASM
2 ;程序功能:用矩阵式键盘控制显示器
0000 3 ORG 00H ;
0000 7C00 4 START: MOV R4,#00H ;
0002 7BF7 5 L1: MOV R3,#0F7H ;扫描初值(P3.3=0)
0004 7900 6 MOV R1,#00H ;取码指针
0006 EB 7 L2: MOV A,R3 ;开始扫描
0007 F5B0 8 MOV P3,A ;将扫描值输出至P3
0009 E5B0 9 MOV A,P3 ;读入P3值,判断有无按下
000B FC 10 MOV R4,A ;存入R4,以判断是否放开
000C D3 11 SETB C ;C=1
000D 7D04 12 MOV R5,#04H ;扫描P3.4~P3.7
000F 33 13 L3: RLC A ;将按键值左移一位
0010 500A 14 JNC KEY ; 有键按下C=0,跳至KEY
0012 09 15 INC R1 ;C=1没键按下,指针值加1
0013 DDFA 16 DJNZ R5,L3 ;4列扫描完毕了?
0015 EB 17 MOV A,R3 ;扫描值载入
0016 D3 18 SETB C ;C= RRC A
0017 FB 19 MOV R3,A ;存回扫描寄存器
0018 40EC 20 JC L2 ;C=1,程序转到L2处
001A 80E6 21 JMP L1 ;C=0则4行已扫描完毕
001C 112F 22 KEY: ACALL DELAY ;调延时子程序
001E E5B0 23 D1: MOV A,P3 ;读入P3值
0020 6C 24 XRL A,R4 ;与上次读入值作比较
0021 60FB 25 JZ D1 ;A=0,表示按键未放
0023 E9 26 MOV A,R1 ;按键已放开,指针载入A
0024 1128 27 ACALL DISP ;调用显示子程序
0026 80DA 28 JMP L1 ;
0028 900038 29 DISP: MOV DPTR,#TABLE ;数据指针指到TABLE
002B 93 30 MOVC A,@A+ DPTR ;恢罷ABLE取码
002C F580 31 MOV P0,A ; 输出
002E 22 32 RET ; 子程序返回
002F 7F3C 33 DELAY: MOV R7, #60 ;
0031 7EF8 34 MOV R6, #248 ;
0033 DEFE 35 DLY1: DJNZ R6, $ ;
0035 DFFC 36 DJNZ R7, DLY1 ;
0037 22 37 RET ;
0038 C0F9A4B0 38 TABLE: DB 0C0H, 0F9H, 0A4H,0B0H ;
003C 999282F8 39 DB 99H, 92H, 82H, 0F8H ;
0040 80908883 40 DB 80H, 90H, 88H, 83H ;
0044 C6A1868E 41 DB 0C6H, 0A1H, 86H, 8EH ;
42 END ;
A51 MACRO ASSEMBLER JP02 01/07/2007 11:31:14 PAGE 2
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
D1 . . . . . . . . C ADDR 001EH A
DELAY. . . . . . . C ADDR 002FH A
DISP . . . . . . . C ADDR 0028H A
DLY1 . . . . . . . C ADDR 0033H A
KEY. . . . . . . . C ADDR 001CH A
L1 . . . . . . . . C ADDR 0002H A
L2 . . . . . . . . C ADDR 0006H A
L3 . . . . . . . . C ADDR 000FH A
P0 . . . . . . . . D ADDR 0080H A
P3 . . . . . . . . D ADDR 00B0H A
START. . . . . . . C ADDR 0000H A
TABLE. . . . . . . C ADDR 0038H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -