📄 key3a.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-63763 Sat Jun 14 16:35:55 2008
Licensed to: CHENLIYUN
1 processor 16F877A
2 opt pw 79
3 psect __Z63763RS_,global,delta=1
4 psect text2,local,class=CODE,delta=2
5 psect text3,local,class=CODE,delta=2
6 psect text4,local,class=CODE,delta=2
7 psect text5,local,class=CODE,delta=2
8 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19
20 psect __Z63763RS_
21 0190
22 0190
23
24 psect text2
25 ;KEY3A.C: 167: unsigned char is_repeat_key(unsi
+ gned char r_key)
26 ;KEY3A.C: 168: {
27 028B _is_repeat_key
28 ; _r_key assigned to ?a_is_repeat_key+0
29 0000 _is_repeat_key$r_key set ?a_is_repeat_key
30 ;_r_key stored from w
31 028B 0183 clrf 3 ;select bank 0
32 028C 00DC movwf ?a_is_repeat_key
33 ;KEY3A.C: 169: if ((r_key == 0x09)||(r_key == 0
+ x0a)||(r_key == 0x36)||(r_key == 0x37))
34 028D 3A09 xorlw 9
35 028E 1903 btfsc 3,2
36 028F 3401 retlw 1
37 0290 085C movf ?a_is_repeat_key,w
38 0291 3A0A xorlw 10
39 0292 1903 btfsc 3,2
40 0293 3401 retlw 1
41 0294 085C movf ?a_is_repeat_key,w
42 0295 3A36 xorlw 54
43 0296 1903 btfsc 3,2
44 0297 3401 retlw 1
45 0298 085C movf ?a_is_repeat_key,w
46 0299 3A37 xorlw 55
47 029A 1903 btfsc 3,2
48 ;KEY3A.C: 170: {
49 029B 3401 retlw 1
50 ;KEY3A.C: 173: {
51 029C 3400 retlw 0
52 029D _scan_key
53 ;KEY3A.C: 32: PORTB=0xFF;
54 029D 30FF movlw -1
55 029E 0183 clrf 3 ;select bank 0
56 029F 0086 movwf 6 ;volatile
57 ;KEY3A.C: 33: RB2=1;
58 02A0 1506 bsf 6,2
59 ;KEY3A.C: 34: RB1=1;
60 02A1 1486 bsf 6,1
61 ;KEY3A.C: 35: RB0=1;
62 02A2 1406 bsf 6,0
63 ;KEY3A.C: 36: key = 0x00;
64 02A3 01A8 clrf _key
65 ;KEY3A.C: 38: RB2=0;
66 02A4 1106 bcf 6,2
67 ;KEY3A.C: 39: RB1=1;
68 02A5 1486 bsf 6,1
69 ;KEY3A.C: 40: RB0=1;
70 02A6 1406 bsf 6,0
71 ;KEY3A.C: 41: if (RB3==0) key = 0x01;
72 02A7 1986 btfsc 6,3
73 02A8 2AAB goto l2
74 02A9 01A8 clrf _key
75 02AA 0AA8 incf _key
76 02AB l2
77 ;KEY3A.C: 42: if (RB4==0) key = 0X04;
78 02AB 1A06 btfsc 6,4
79 02AC 2AAF goto l3
80 02AD 3004 movlw 4
81 02AE 00A8 movwf _key
82 02AF l3
83 ;KEY3A.C: 43: if (RB5==0) key = 0X07;
84 02AF 1A86 btfsc 6,5
85 02B0 2AB3 goto l4
86 02B1 3007 movlw 7
87 02B2 00A8 movwf _key
88 02B3 l4
89 ;KEY3A.C: 46: RB2=1;
90 02B3 1506 bsf 6,2
91 ;KEY3A.C: 47: RB1=0;
92 02B4 1086 bcf 6,1
93 ;KEY3A.C: 48: RB0=1;
94 02B5 1406 bsf 6,0
95 ;KEY3A.C: 49: if (RB3==0) key = 0X02;
96 02B6 1986 btfsc 6,3
97 02B7 2ABA goto l5
98 02B8 3002 movlw 2
99 02B9 00A8 movwf _key
100 02BA l5
101 ;KEY3A.C: 50: if (RB4==0) key = 0X05;
102 02BA 1A06 btfsc 6,4
103 02BB 2ABE goto l6
104 02BC 3005 movlw 5
105 02BD 00A8 movwf _key
106 02BE l6
107 ;KEY3A.C: 51: if (RB5==0) key = 0x08;
108 02BE 1A86 btfsc 6,5
109 02BF 2AC2 goto l7
110 02C0 3008 movlw 8
111 02C1 00A8 movwf _key
112 02C2 l7
113 ;KEY3A.C: 54: RB2=1;
114 02C2 1506 bsf 6,2
115 ;KEY3A.C: 55: RB1=1;
116 02C3 1486 bsf 6,1
117 ;KEY3A.C: 56: RB0=0;
118 02C4 1006 bcf 6,0
119 ;KEY3A.C: 57: if ( RB3==0) key = 0x03;
120 02C5 1986 btfsc 6,3
121 02C6 2AC9 goto l8
122 02C7 3003 movlw 3
123 02C8 00A8 movwf _key
124 02C9 l8
125 ;KEY3A.C: 58: if ( RB4==0) key = 0x06;
126 02C9 1A06 btfsc 6,4
127 02CA 2ACD goto l9
128 02CB 3006 movlw 6
129 02CC 00A8 movwf _key
130 02CD l9
131 ;KEY3A.C: 59: if ( RB5==0) key = 0X09;
132 02CD 1A86 btfsc 6,5
133 02CE 0008 return
134 02CF 3009 movlw 9
135 02D0 00A8 movwf _key
136 ;KEY3A.C: 62: }
137 02D1 0008 return
138 ;KEY3A.C: 68: void process_panel_key()
139 ;KEY3A.C: 69: {
140 02D2 _process_panel_key
141 ;KEY3A.C: 70: scan_key();
142 02D2 229D fcall _scan_key
143 ;KEY3A.C: 71: switch (scan_key_state)
144 02D3 2B30 goto l13
145 02D4 l14
146 ;KEY3A.C: 72: {
147 ;KEY3A.C: 79: if (key!=0x00)
148 02D4 08A8 movf _key
149 02D5 1903 btfsc 3,2
150 02D6 2ADE goto l15
151 ;KEY3A.C: 81: {
152 02D7 0828 movf _key,w
153 02D8 00A9 movwf _key_bak
154 ;KEY3A.C: 83: shake_cancel_timer = 1;
155 02D9 01AE clrf _shake_cancel_timer
156 02DA 0AAE incf _shake_cancel_timer
157 ;KEY3A.C: 84: scan_key_state = 1;
158 02DB 01AD clrf _scan_key_state
159 02DC 0AAD incf _scan_key_state
160 ;KEY3A.C: 85: }
161 02DD 2ADF goto l17
162 02DE l15
163 ;KEY3A.C: 87: {
164 02DE 01AD clrf _scan_key_state
165 ;KEY3A.C: 90: }
166 02DF l17
167 ;KEY3A.C: 92: case 1:
168 ;KEY3A.C: 93: if (!shake_cancel_timer)
169 02DF 08AE movf _shake_cancel_timer
170 02E0 1D03 btfss 3,2
171 02E1 0008 return
172 ;KEY3A.C: 94: {
173 02E2 0828 movf _key,w
174 02E3 0629 xorwf _key_bak,w
175 02E4 1D03 btfss 3,2
176 02E5 2AEB goto l19
177 ;KEY3A.C: 96: {
178 02E6 3002 movlw 2
179 02E7 00AD movwf _scan_key_state
180 02E8 3064 movlw 100
181 02E9 00A5 movwf _complex_key_timer
182 ;KEY3A.C: 98: }
183 02EA 0008 return
184 02EB l19
185 ;KEY3A.C: 100: {
186 02EB 01AD clrf _scan_key_state
187 ;KEY3A.C: 102: }
188 ;KEY3A.C: 103: }
189 02EC 0008 return
190 02ED l21
191 ;KEY3A.C: 105: case 2:
192 ;KEY3A.C: 106: if (!complex_key_timer)
193 02ED 08A5 movf _complex_key_timer
194 02EE 1D03 btfss 3,2
195 02EF 2B15 goto l22
196 ;KEY3A.C: 107: {
197 02F0 0828 movf _key,w
198 02F1 0629 xorwf _key_bak,w
199 02F2 1D03 btfss 3,2
200 02F3 2B11 goto l23
201 ;KEY3A.C: 109: {
202 02F4 0828 movf _key,w
203 02F5 3A36 xorlw 54
204 02F6 1D03 btfss 3,2
205 02F7 2AFA goto l24
206 ;KEY3A.C: 111: {
207 02F8 3038 movlw 56
208 02F9 2B01 goto L2
209 ;KEY3A.C: 113: }else if (key == 0x37)
210 02FA l24
211 02FA 0828 movf _key,w
212 02FB 3A37 xorlw 55
213 02FC 1D03 btfss 3,2
214 02FD 2B00 goto l26
215 ;KEY3A.C: 114: {
216 02FE 3039 movlw 57
217 02FF 2B01 goto L2
218 ;KEY3A.C: 116: }else
219 0300 l26
220 ;KEY3A.C: 117: {
221 0300 0828 movf _key,w
222 0301 L2
223 0301 00A6 movwf _current_key
224 ;KEY3A.C: 119: }
225 ;KEY3A.C: 121: if (is_repeat_key(key))
226 0302 0828 movf _key,w
227 0303 228B fcall _is_repeat_key
228 0304 3800 iorlw 0
229 0305 1903 btfsc 3,2
230 0306 2B0E goto l28
231 ;KEY3A.C: 122: {
232 0307 0826 movf _current_key,w
233 0308 00AB movwf _repeat_key
234 ;KEY3A.C: 124: scan_key_state = 3;
235 0309 3003 movlw 3
236 030A 00AD movwf _scan_key_state
237 ;KEY3A.C: 125: repeat_key_timer = 20;
238 030B 3014 movlw 20
239 030C 00AC movwf _repeat_key_timer
240 ;KEY3A.C: 126: }else
241 030D 0008 return
242 030E l28
243 ;KEY3A.C: 127: {
244 030E 3004 movlw 4
245 030F 00AD movwf _scan_key_state
246 ;KEY3A.C: 129: }
247 ;KEY3A.C: 130: }else
248 0310 0008 return
249 0311 l23
250 ;KEY3A.C: 131: {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -