📄 pxsjpjs.lst
字号:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 1
MCS-51 Family Cross Assembler A S E M - 5 1 V 1.2
=====================================================
Source File: PXSJPJS.ASM
Object File: PXSJPJS.HEX
List File: PXSJPJS.LST
Line I Addr Code Source
1: N 0000 org 0000h
2: 0000 02 00 30 ljmp main
3: ;***************************;
4: ; 主程序 ;
5: ;***************************;
6: N 0030 org 0030h
7: 0030 main:
8: 0030 75 28 00 mov 28h,#00h ;标记位总清零
9: 0033 75 20 2E mov 20h,#2eh ;显示缓冲低位
10: 0036 75 21 2E mov 21h,#2eh
11: 0039 75 22 2E mov 22h,#2eh
12: 003C 75 23 2F mov 23h,#2fh ;显示缓冲高位(让23单元显示P.)
13: 003F 12 01 70 key: lcall dirv
14: ;-------------------------;
15: ; 读键 ;
16: ;-------------------------;
17: 0042 kl0:
18: 0042 74 0F mov a,#0fh
19: 0044 F5 A0 mov p2,a
20: 0046 E5 A0 mov a,p2 ;p2口低四位为键扫描输入,高四位数出
21: 0048 30 E0 0F jnb acc.0,kl1 ;判断有无键按下
22: 004B 30 E1 0C jnb acc.1,kl1 ;判断有无键按下
23: 004E 30 E2 09 jnb acc.2,kl1 ;判断有无键按下
24: 0051 30 E3 06 jnb acc.3,kl1 ;判断有无键按下
25: 0054 12 01 70 lcall dirv
26: 0057 02 00 42 ljmp kl0 ;无键按下继续
27: 005A 12 01 70 kl1: lcall dirv ;20h单元位0为1处于最高位带小数点显示
28: 005D 74 0F kl12: mov a,#0fh
29: 005F F5 A0 mov p2,a
30: 0061 E5 A0 mov a,p2 ;p2口低四位为键扫描输入,高四位数出
31: 0063 30 E0 11 jnb acc.0,kl2
32: 0066 30 E1 0E jnb acc.1,kl2
33: 0069 30 E2 0B jnb acc.2,kl2
34: 006C 30 E3 08 jnb acc.3,kl2 ;判断有无键按下
35: 006F C2 51 clr 51h ;清除键按下标记:28h单元位1为1则键按下
36: 0071 12 01 70 lcall dirv
37: 0074 02 00 42 ljmp kl0 ;为抖动没键按下继续
38: 0077 30 51 03 kl2: jnb 51h,ke1y ;28h单元位1为1则键按下已经处理过反回
39: 007A 02 00 42 ljmp kl0
40: 007D D2 51 ke1y: setb 51h ;打上键按下标记:28h单元位1为1则键按下
41: 007F 7A EF mov r2,#0efh ;确实有键开始扫描键值
42: 0081 7C 00 mov r4,#00h
43: 0083 pk1: ; mov a,p2 ;p2口低四位为键扫描输入,高四位数出
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0083 EA mov a,r2
45: 0084 F5 A0 mov p2,a
46: 0086 E5 A0 mov a,p2 ;p2口低四位为键扫描输入,高四位数出
47: 0088 79 00 mov r1,#00h ;r1中为键行数
48: 008A 30 E0 15 jnb acc.0,pk20 ;判有无键按下
49: 008D 12 00 B4 lcall kll2
50: 0090 30 E1 0F jnb acc.1,pk20 ;判有无键按下
51: 0093 12 00 B4 lcall kll2
52: 0096 30 E2 09 jnb acc.2,pk20 ;判有无键按下
53: 0099 12 00 B4 lcall kll2
54: 009C 30 E3 03 jnb acc.3,pk20 ;判有无键按下
55: 009F 02 00 A9 ljmp pk2
56: 00A2 74 00 pk20: mov a,#00h
57: 00A4 2C add a,r4
58: 00A5 29 add a,r1
59: 00A6 02 00 BB ljmp pk5 ;扫到键值去散转处理
60: 00A9 0C pk2: inc r4
61: 00AA EA mov a,r2
62: 00AB 30 E7 04 jnb acc.7,pk3 ;判断4个键是否扫描完
63: 00AE 23 rl a
64: 00AF FA mov r2,a
65: 00B0 01 83 ajmp pk1 ;16个键没扫完继续
66: 00B2 01 42 pk3: ajmp kl0 ;16个键全扫完为误动作反回
67:
68: 00B4 F8 kll2: mov r0,a
69: 00B5 E9 mov a,r1
70: 00B6 24 04 add a,#04h ;加一行四个键
71: 00B8 F9 mov r1,a
72: 00B9 E8 mov a,r0
73: 00BA 22 ret
74:
75: ;------------------------------;
76: ; 键状态判断子程序 ;
77: ;------------------------------;
78: 00BB 90 00 C5 pk5: mov dptr,#tb0 ;散转处理
79: 00BE FA mov r2,a
80: 00BF 2A add a,r2
81: 00C0 50 02 jnc pk6
82: 00C2 05 83 inc dph
83: 00C4 73 pk6: jmp @a+dptr
84: 00C5 01 E8 tb0: ajmp k11 ;键7
85: 00C7 01 F1 ajmp k12 ;键8
86: 00C9 01 FA ajmp k13 ;键9
87: 00CB 21 03 ajmp k14 ;键/
88:
89: 00CD 21 06 ajmp k21 ;键4
90: 00CF 21 0F ajmp k22 ;键5
91: 00D1 21 18 ajmp k23 ;键6
92: 00D3 21 21 ajmp k24 ;键x
93:
94: 00D5 21 24 ajmp k31 ;键1
95: 00D7 21 2D ajmp k32 ;键2
96: 00D9 21 36 ajmp k33 ;键3
97: 00DB 21 3F ajmp k34 ;键-
98:
99: 00DD 21 42 ajmp k41 ;键c
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 00DF 21 57 ajmp k42 ;键0
101: 00E1 21 60 ajmp k43 ;键=
102: 00E3 21 63 ajmp k44 ;键+
103:
104: 00E5 02 00 42 ljmp kl0
105:
106: 00E8 k11: ;键7
107: 00E8 12 01 66 lcall zy
108: 00EB 75 20 07 mov 20h,#07h
109: 00EE 02 00 42 ljmp kl0
110: 00F1 k12: ;键8
111: 00F1 12 01 66 lcall zy
112: 00F4 75 20 08 mov 20h,#08h
113: 00F7 02 00 42 ljmp kl0
114: 00FA k13: ;键9
115: 00FA 12 01 66 lcall zy
116: 00FD 75 20 09 mov 20h,#09h
117: 0100 02 00 42 ljmp kl0
118: 0103 k14: ;键/
119: 0103 02 00 42 ljmp kl0
120:
121: 0106 k21: ;键4
122: 0106 12 01 66 lcall zy
123: 0109 75 20 04 mov 20h,#04h
124: 010C 02 00 42 ljmp kl0
125: 010F k22: ;键5
126: 010F 12 01 66 lcall zy
127: 0112 75 20 05 mov 20h,#05h
128: 0115 02 00 42 ljmp kl0
129: 0118 k23: ;键6
130: 0118 12 01 66 lcall zy
131: 011B 75 20 06 mov 20h,#06h
132: 011E 02 00 42 ljmp kl0
133: 0121 k24: ;键x
134: 0121 02 00 42 ljmp kl0
135:
136: 0124 k31: ;键1
137: 0124 12 01 66 lcall zy
138: 0127 75 20 01 mov 20h,#01h
139: 012A 02 00 42 ljmp kl0
140: 012D k32: ;键2
141: 012D 12 01 66 lcall zy
142: 0130 75 20 02 mov 20h,#02h
143: 0133 02 00 42 ljmp kl0
144: 0136 k33: ;键3
145: 0136 12 01 66 lcall zy
146: 0139 75 20 03 mov 20h,#03h
147: 013C 02 00 42 ljmp kl0
148: 013F k34: ;键-
149: 013F 02 00 42 ljmp kl0
150:
151: 0142 k41: ;键c
152: 0142 E5 20 mov a,20h
153: 0144 C3 clr c
154: 0145 94 0A subb a,#0ah
155: 0147 50 09 jnc k410 ;够减》a
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 0149 E5 20 mov a,20h ;不够减《a
157: 014B 24 0A add a,#0ah
158: 014D F5 20 mov 20h,a
159: 014F 02 01 54 ljmp k412
160: 0152 F5 20 k410: mov 20h,a
161: 0154 02 00 42 k412: ljmp kl0
162: 0157 k42: ;键0
163: 0157 12 01 66 lcall zy
164: 015A 75 20 00 mov 20h,#00h
165: 015D 02 00 42 ljmp kl0
166: 0160 k43: ;键=
167: 0160 02 00 42 ljmp kl0
168: 0163 k44: ;键+
169: 0163 02 00 42 ljmp kl0
170: ;***********************;
171: ; 光标左移 ;
172: ;***********************;
173: 0166 85 22 23 zy: mov 23h,22h
174: 0169 85 21 22 mov 22h,21h
175: 016C 85 20 21 mov 21h,20h
176: 016F 22 ret ;退出
177: ;******************;
178: ; 显示 ;
179: ;******************;
180: 0170 dirv:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -