📄 key board.lst
字号:
A51 MACRO ASSEMBLER KEY_BOARD 07/27/2006 13:51:02 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Key Board.OBJ
ASSEMBLER INVOKED BY: e:\Program Files\Keil\C51\BIN\A51.EXE Key Board.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
00B0 1 DIN EQU P3.0
00B1 2 CLK EQU P3.1
0030 3 DBUF EQU 30H
0040 4 TEMP EQU 40H
0000 5 ORG 00H
0000 753010 6 MOV 30H,#16 ;数码管显示初始化
0003 1142 7 MAIN: ACALL DISP ;显示
0005 1109 8 ACALL KEY ;计算键值
0007 0103 9 AJMP MAIN
0009 10 KEY: ;计算键码子程序
0009 7590FF 11 MOV P1,#0FFH ;读数前先写1
000C E590 12 MOV A,P1
000E B4FF02 13 CJNE A,#0FFH,K00 ;判断是否有键按下
0011 0109 14 AJMP KEY
0013 1167 15 K00: ACALL DELAY
0015 E590 16 MOV A,P1
0017 B4FF02 17 CJNE A,#0FFH,K01 ;消除按键抖动
001A 0109 18 AJMP KEY
001C 7B08 19 K01: MOV R3,#8
001E 7A00 20 MOV R2,#0
0020 F5F0 21 MOV B,A
0022 90003A 22 MOV DPTR,#K0TAB ;查表比较,计算键值
0025 EA 23 K02: MOV A,R2
0026 93 24 MOVC A,@A+DPTR
0027 B5F009 25 CJNE A,B,K04
002A E590 26 K03: MOV A,P1
002C B4FFFB 27 CJNE A,#0FFH,K03 ;等待按键抬起
002F 1167 28 ACALL DELAY
0031 EA 29 MOV A,R2
0032 22 30 RET
0033 0A 31 K04: INC R2
0034 DBEF 32 DJNZ R3,K02
0036 74FF 33 MOV A,#0FFH
0038 0109 34 AJMP KEY
003A FEFDFBF7 35 K0TAB: DB 0FEH,0FDH,0FBH,0F7H
003E EFDFBF7F 36 DB 0EFH,0DFH,0BFH,07FH
0042 37 DISP: ;数码显示子程序
0042 F530 38 MOV DBUF,A ;键值存入缓存
0044 7830 39 MOV R0,#DBUF
0046 7940 40 MOV R1,#TEMP
41
0048 90005D 42 DP10: MOV DPTR,#SEGTAB
004B E6 43 MOV A,@R0
004C 93 44 MOVC A,@A+DPTR ;根据键值查表取段码
004D F7 45 MOV @R1,A ;暂存段码
004E 7840 46 MOV R0,#TEMP
47
0050 7A08 48 DP12: MOV R2,#8 ;设置移位次数
0052 E6 49 MOV A,@R0
0053 33 50 DP13: RLC A ;段码移位输出
0054 92B0 51 MOV DIN,C
0056 C2B1 52 CLR CLK ;输出移位脉冲
0058 D2B1 53 SETB CLK
005A DAF7 54 DJNZ R2,DP13
005C 22 55 RET
005D 3F065B4F 56 SEGTAB: DB 3FH,06H,5BH,4FH,66H
0061 66
0062 6D7D077F 57 DB 6DH,7DH,07H,7FH,6FH
A51 MACRO ASSEMBLER KEY_BOARD 07/27/2006 13:51:02 PAGE 2
0066 6F
58
0067 7C02 59 DELAY: MOV R4,#02H
0069 7DF8 60 AA1: MOV R5,#0F8H
006B DDFE 61 AA: DJNZ R5,AA
006D DCFA 62 DJNZ R4,AA1
006F 22 63 RET
64 END
A51 MACRO ASSEMBLER KEY_BOARD 07/27/2006 13:51:02 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
AA . . . . . . . . C ADDR 006BH A
AA1. . . . . . . . C ADDR 0069H A
B. . . . . . . . . D ADDR 00F0H A
CLK. . . . . . . . B ADDR 00B0H.1 A
DBUF . . . . . . . N NUMB 0030H A
DELAY. . . . . . . C ADDR 0067H A
DIN. . . . . . . . B ADDR 00B0H.0 A
DISP . . . . . . . C ADDR 0042H A
DP10 . . . . . . . C ADDR 0048H A
DP12 . . . . . . . C ADDR 0050H A
DP13 . . . . . . . C ADDR 0053H A
K00. . . . . . . . C ADDR 0013H A
K01. . . . . . . . C ADDR 001CH A
K02. . . . . . . . C ADDR 0025H A
K03. . . . . . . . C ADDR 002AH A
K04. . . . . . . . C ADDR 0033H A
K0TAB. . . . . . . C ADDR 003AH A
KEY. . . . . . . . C ADDR 0009H A
MAIN . . . . . . . C ADDR 0003H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
SEGTAB . . . . . . C ADDR 005DH A
TEMP . . . . . . . N NUMB 0040H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -