📄 jzjpds.lst
字号:
A51 MACRO ASSEMBLER JZJPDS 07/31/2008 00:33:29 PAGE 1
MACRO ASSEMBLER A51 V8.00d
OBJECT MODULE PLACED IN JZJPds.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE JZJPds.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
0093 2 RELAY EQU P1.3
00B7 3 BEEP EQU P3.7
4
5
6 ;------------------------------------------------------
7
8 ;------------------------------------------------------
0000 758160 9 MAINa: MOV SP,#60H
0003 753000 10 MOV 30H,#00h ;放键值
0006 753100 11 MOV 31H,#00H ;放第一次扫描键值
0009 753200 12 MOV 32H,#00H ;放第一次扫描键值
000C 13 LOOP1:
000C 1112 14 CALL KEY_IN
000E 118E 15 CALL KEY_PLAER
0010 80FA 16 JMP LOOP1
17 ;-----------------------------------------------------
0012 7590F0 18 KEY_IN: MOV P1,#0F0H ;置列线为0,行线为1
0015 E590 19 MOV A,P1
0017 54F0 20 ANL A,#0F0H
0019 F5F0 21 MOV B,A
001B 75900F 22 MOV P1,#0FH ;置列线为1,行线为0
001E E590 23 MOV A,P1
0020 540F 24 ANL A,#0FH
0022 45F0 25 ORL A,B ;高四位与低四位重新组合
0024 F531 26 MOV 31H,A
0026 B4FF01 27 CJNE A,#0FFH,KEY_IN1 ;0FFH为末按键
0029 22 28 RET
29
002A 30 KEY_IN1:
002A 1174 31 CALL DELAYSM ;键盘扫描延时去抖,重新扫描一次键盘.
002C 7590F0 32 MOV P1,#0F0H ;置列线为0,行线为1
002F E590 33 MOV A,P1
0031 54F0 34 ANL A,#0F0H
0033 F532 35 MOV 32H,A
0035 75900F 36 MOV P1,#0FH ;置列线为1,行线为0
0038 E590 37 MOV A,P1
003A 540F 38 ANL A,#0FH
003C 4532 39 ORL A,32H ;高四位与低四位重新组合
40
003E B531D1 41 CJNE A,31H,KEY_IN ;0FFH为末按键
42
43
0041 F5F0 44 MOV B,A
0043 90007D 45 MOV DPTR,#KEYTABLE
0046 7BFF 46 MOV R3,#0FFH ;
0048 0B 47 KEY_IN2: INC R3
0049 EB 48 MOV A,R3
004A 93 49 MOVC A,@A+DPTR
004B B5F004 50 CJNE A,B,KEY_IN3
004E EB 51 MOV A,R3 ;找到,取顺序码,(A)里面放的是******(键值) ********
004F F530 52 MOV 30H,A
53
54
55
56
57
A51 MACRO ASSEMBLER JZJPDS 07/31/2008 00:33:29 PAGE 2
0051 22 58 RET
0052 B4FFF3 59 KEY_IN3: CJNE A,#0FFH,KEY_IN2 ;末完,继续查
0055 22 60 RET ;0FFH为结束码
61 ;----------------------------------------------
62 ;蜂鸣器响一声子程序
63 ;----------------------------------------------EEP_BL:
0056 7E64 64 BEEP_BL: MOV R6,#100
0058 1163 65 BL1: CALL DEX1
005A B2B7 66 CPL BEEP
005C DEFA 67 DJNZ R6,BL1
005E 7D19 68 MOV R5,#25
0060 1169 69 CALL DELAY
0062 22 70 RET
71
0063 7FB4 72 DEX1: MOV R7,#180
0065 00 73 DEX2: NOP
0066 DFFD 74 DJNZ R7,DEX2
0068 22 75 RET
76
0069 77 DELAY: ;延时R5×10MS
0069 7E32 78 MOV R6,#50
006B 7F64 79 DELAY1: MOV R7,#100
006D DFFE 80 DJNZ R7,$
006F DEFA 81 DJNZ R6,DELAY1
0071 DDF6 82 DJNZ R5,DELAY
0073 22 83 RET
84 ;----------------------------------------------------
0074 85 DELAYSM: ;延时R5×10MS,键盘扫描延时
0074 7E14 86 MOV R6,#20
0076 7FF8 87 DELAY2: MOV R7,#248
0078 DFFE 88 DJNZ R7,$
007A DEFA 89 DJNZ R6,DELAY2
007C 22 90 RET
91
92
93
94 ;-----------------------------------------------------
007D 95 KEYTABLE:
007D EEEDEBE7 96 DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 顺序码
0081 DE
0082 DDDBD7BE 97 DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9,
0086 BD
0087 BBB77E7D 98 DB 0BBH,0B7H,07EH,07DH,07BH ;A,B,C,D,E,
008B 7B
008C 77FF 99 DB 077H,0FFH ;F 0FF为结束码
100 ;-----------------------------------------------------
101 ;键值显示子程序
102 ;使用一个事牍芟允
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -