📄 key2d.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-40231 Fri Nov 30 20:36:12 2007
Licensed to: ONE
1 processor 16F877A
2 opt pw 79
3 psect __Z40231RS_,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 intcode,global,class=CODE,delta=2
8 psect intsave_0,global,ovrld,class=COMBANK,spa
+ ce=1,delta=1
9 psect intret,global,class=CODE,delta=2
10 psect intentry,global,class=CODE,delta=2
11 psect intsave,global,class=BANK0,space=1,delta
+ =1
12 psect text6,local,class=CODE,delta=2
13 psect rbss_0,global,class=BANK0,space=1,delta=
+ 1
14 0000
15 0000
16 0000
17 0000
18 0000
19 0000
20 0000
21 0000
22 0000
23 0000
24
25 psect __Z40231RS_
26 0190
27 0190
28
29 psect text2
30 ;KEY2D.C: 174: unsigned char is_repeat_key(unsi
+ gned char r_key)
31 ;KEY2D.C: 175: {
32 074B _is_repeat_key
33 ; _r_key assigned to ?a_is_repeat_key+0
34 0000 _is_repeat_key$r_key set ?a_is_repeat_key
35 ;_r_key stored from w
36 074B 0183 clrf 3 ;select bank 0
37 074C 00AA movwf ?a_is_repeat_key
38 ;KEY2D.C: 176: if ((r_key == 0x09)||(r_key == 0
+ x0a)||(r_key == 0x36)||(r_key == 0x37))
39 074D 3A09 xorlw 9
40 074E 1903 btfsc 3,2
41 074F 3401 retlw 1
42 0750 082A movf ?a_is_repeat_key,w
43 0751 3A0A xorlw 10
44 0752 1903 btfsc 3,2
45 0753 3401 retlw 1
46 0754 082A movf ?a_is_repeat_key,w
47 0755 3A36 xorlw 54
48 0756 1903 btfsc 3,2
49 0757 3401 retlw 1
50 0758 082A movf ?a_is_repeat_key,w
51 0759 3A37 xorlw 55
52 075A 1903 btfsc 3,2
53 ;KEY2D.C: 177: {
54 075B 3401 retlw 1
55 ;KEY2D.C: 180: {
56 075C 3400 retlw 0
57 075D _scan_key
58 ;KEY2D.C: 39: PORTB=0xFF;
59 075D 30FF movlw -1
60 075E 0183 clrf 3 ;select bank 0
61 075F 0086 movwf 6 ;volatile
62 ;KEY2D.C: 40: RB2=1;
63 0760 1506 bsf 6,2
64 ;KEY2D.C: 41: RB1=1;
65 0761 1486 bsf 6,1
66 ;KEY2D.C: 42: RB0=1;
67 0762 1406 bsf 6,0
68 ;KEY2D.C: 43: key = 0x00;
69 0763 01A3 clrf _key
70 ;KEY2D.C: 45: RB2=0;
71 0764 1106 bcf 6,2
72 ;KEY2D.C: 46: RB1=1;
73 0765 1486 bsf 6,1
74 ;KEY2D.C: 47: RB0=1;
75 0766 1406 bsf 6,0
76 ;KEY2D.C: 48: if (RB3==0) key = 0x01;
77 0767 1986 btfsc 6,3
78 0768 2F6B goto l2
79 0769 01A3 clrf _key
80 076A 0AA3 incf _key
81 076B l2
82 ;KEY2D.C: 49: if (RB4==0) key = 0X04;
83 076B 1A06 btfsc 6,4
84 076C 2F6F goto l3
85 076D 3004 movlw 4
86 076E 00A3 movwf _key
87 076F l3
88 ;KEY2D.C: 50: if (RB5==0) key = 0X07;
89 076F 1A86 btfsc 6,5
90 0770 2F73 goto l4
91 0771 3007 movlw 7
92 0772 00A3 movwf _key
93 0773 l4
94 ;KEY2D.C: 53: RB2=1;
95 0773 1506 bsf 6,2
96 ;KEY2D.C: 54: RB1=0;
97 0774 1086 bcf 6,1
98 ;KEY2D.C: 55: RB0=1;
99 0775 1406 bsf 6,0
100 ;KEY2D.C: 56: if (RB3==0) key = 0X02;
101 0776 1986 btfsc 6,3
102 0777 2F7A goto l5
103 0778 3002 movlw 2
104 0779 00A3 movwf _key
105 077A l5
106 ;KEY2D.C: 57: if (RB4==0) key = 0X05;
107 077A 1A06 btfsc 6,4
108 077B 2F7E goto l6
109 077C 3005 movlw 5
110 077D 00A3 movwf _key
111 077E l6
112 ;KEY2D.C: 58: if (RB5==0) key = 0x08;
113 077E 1A86 btfsc 6,5
114 077F 2F82 goto l7
115 0780 3008 movlw 8
116 0781 00A3 movwf _key
117 0782 l7
118 ;KEY2D.C: 61: RB2=1;
119 0782 1506 bsf 6,2
120 ;KEY2D.C: 62: RB1=1;
121 0783 1486 bsf 6,1
122 ;KEY2D.C: 63: RB0=0;
123 0784 1006 bcf 6,0
124 ;KEY2D.C: 64: if ( RB3==0) key = 0x03;
125 0785 1986 btfsc 6,3
126 0786 2F89 goto l8
127 0787 3003 movlw 3
128 0788 00A3 movwf _key
129 0789 l8
130 ;KEY2D.C: 65: if ( RB4==0) key = 0x06;
131 0789 1A06 btfsc 6,4
132 078A 2F8D goto l9
133 078B 3006 movlw 6
134 078C 00A3 movwf _key
135 078D l9
136 ;KEY2D.C: 66: if ( RB5==0) key = 0X09;
137 078D 1A86 btfsc 6,5
138 078E 0008 return
139 078F 3009 movlw 9
140 0790 00A3 movwf _key
141 ;KEY2D.C: 69: }
142 0791 0008 return
143 ;KEY2D.C: 75: void process_panel_key()
144 ;KEY2D.C: 76: {
145 0792 _process_panel_key
146 ;KEY2D.C: 77: scan_key();
147 0792 275D fcall _scan_key
148 ;KEY2D.C: 78: switch (scan_key_state)
149 0793 2FF0 goto l13
150 0794 l14
151 ;KEY2D.C: 79: {
152 ;KEY2D.C: 86: if (key!=0x00)
153 0794 08A3 movf _key
154 0795 1903 btfsc 3,2
155 0796 2F9E goto l15
156 ;KEY2D.C: 88: {
157 0797 0823 movf _key,w
158 0798 00A4 movwf _key_bak
159 ;KEY2D.C: 90: shake_cancel_timer = 1;
160 0799 01A9 clrf _shake_cancel_timer
161 079A 0AA9 incf _shake_cancel_timer
162 ;KEY2D.C: 91: scan_key_state = 1;
163 079B 01A8 clrf _scan_key_state
164 079C 0AA8 incf _scan_key_state
165 ;KEY2D.C: 92: }
166 079D 2F9F goto l17
167 079E l15
168 ;KEY2D.C: 94: {
169 079E 01A8 clrf _scan_key_state
170 ;KEY2D.C: 97: }
171 079F l17
172 ;KEY2D.C: 99: case 1:
173 ;KEY2D.C: 100: if (!shake_cancel_timer)
174 079F 08A9 movf _shake_cancel_timer
175 07A0 1D03 btfss 3,2
176 07A1 0008 return
177 ;KEY2D.C: 101: {
178 07A2 0823 movf _key,w
179 07A3 0624 xorwf _key_bak,w
180 07A4 1D03 btfss 3,2
181 07A5 2FAB goto l19
182 ;KEY2D.C: 103: {
183 07A6 3002 movlw 2
184 07A7 00A8 movwf _scan_key_state
185 07A8 3064 movlw 100
186 07A9 00A0 movwf _complex_key_timer
187 ;KEY2D.C: 105: }
188 07AA 0008 return
189 07AB l19
190 ;KEY2D.C: 107: {
191 07AB 01A8 clrf _scan_key_state
192 ;KEY2D.C: 109: }
193 ;KEY2D.C: 110: }
194 07AC 0008 return
195 07AD l21
196 ;KEY2D.C: 112: case 2:
197 ;KEY2D.C: 113: if (!complex_key_timer)
198 07AD 08A0 movf _complex_key_timer
199 07AE 1D03 btfss 3,2
200 07AF 2FD5 goto l22
201 ;KEY2D.C: 114: {
202 07B0 0823 movf _key,w
203 07B1 0624 xorwf _key_bak,w
204 07B2 1D03 btfss 3,2
205 07B3 2FD1 goto l23
206 ;KEY2D.C: 116: {
207 07B4 0823 movf _key,w
208 07B5 3A36 xorlw 54
209 07B6 1D03 btfss 3,2
210 07B7 2FBA goto l24
211 ;KEY2D.C: 118: {
212 07B8 3038 movlw 56
213 07B9 2FC1 goto L2
214 ;KEY2D.C: 120: }else if (key == 0x37)
215 07BA l24
216 07BA 0823 movf _key,w
217 07BB 3A37 xorlw 55
218 07BC 1D03 btfss 3,2
219 07BD 2FC0 goto l26
220 ;KEY2D.C: 121: {
221 07BE 3039 movlw 57
222 07BF 2FC1 goto L2
223 ;KEY2D.C: 123: }else
224 07C0 l26
225 ;KEY2D.C: 124: {
226 07C0 0823 movf _key,w
227 07C1 L2
228 07C1 00A1 movwf _current_key
229 ;KEY2D.C: 126: }
230 ;KEY2D.C: 128: if (is_repeat_key(key))
231 07C2 0823 movf _key,w
232 07C3 274B fcall _is_repeat_key
233 07C4 3800 iorlw 0
234 07C5 1903 btfsc 3,2
235 07C6 2FCE goto l28
236 ;KEY2D.C: 129: {
237 07C7 0821 movf _current_key,w
238 07C8 00A6 movwf _repeat_key
239 ;KEY2D.C: 131: scan_key_state = 3;
240 07C9 3003 movlw 3
241 07CA 00A8 movwf _scan_key_state
242 ;KEY2D.C: 132: repeat_key_timer = 20;
243 07CB 3014 movlw 20
244 07CC 00A7 movwf _repeat_key_timer
245 ;KEY2D.C: 133: }else
246 07CD 0008 return
247 07CE l28
248 ;KEY2D.C: 134: {
249 07CE 3004 movlw 4
250 07CF 00A8 movwf _scan_key_state
251 ;KEY2D.C: 136: }
252 ;KEY2D.C: 137: }else
253 07D0 0008 return
254 07D1 l23
255 ;KEY2D.C: 138: {
256 07D1 0824 movf _key_bak,w
257 07D2 00A1 movwf _current_key
258 ;KEY2D.C: 140: scan_key_state = 0;
259 07D3 01A8 clrf _scan_key_state
260 ;KEY2D.C: 141: }
261 ;KEY2D.C: 142: }else
262 07D4 0008 return
263 07D5 l22
264 ;KEY2D.C: 143: {
265 07D5 0823 movf _key,w
266 07D6 0624 xorwf _key_bak,w
267 07D7 1903 btfsc 3,2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -