📄 key.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL2
Fri Feb 20 23:38:31 2009
1 processor 16F877A
2 opt pw 79
3 psect __Z49231UD_,global,delta=1
4 psect strings,global,class=STRING,delta=2
5 psect const1,local,class=CONST,delta=2
6 psect text3,local,class=CODE,delta=2
7 psect text7,local,class=CODE,delta=2
8 psect text9,local,class=CODE,delta=2
9 psect intcode,global,class=CODE,delta=2
10 psect intsave_0,global,ovrld,class=COMBANK,spa
+ ce=1,delta=1
11 psect intret,global,class=CODE,delta=2
12 psect intentry,global,class=CODE,delta=2
13 psect intsave,global,class=BANK0,space=1,delta
+ =1
14 psect rbss_0,global,class=BANK0,space=1,delta=
+ 1
15 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
16 0000
17 0000
18 0000
19 0000
20 0000
21 0000
22 0000
23 0000
24 0000
25 0000
26
27 psect const1
28 0032 0782 addwf 2
29 0033 _table
30 0033 3430 retlw 48
31 0034 3431 retlw 49
32 0035 3432 retlw 50
33 0036 3433 retlw 51
34 0037 3434 retlw 52
35 0038 3435 retlw 53
36 0039 3436 retlw 54
37 003A 3437 retlw 55
38 003B 3438 retlw 56
39 003C 3439 retlw 57
40
41 psect text3
42 077D _lcd_disp
43 ; _address assigned to ?a_lcd_disp+0
44 0000 _lcd_disp$address set ?a_lcd_disp
45 ;_address stored from w
46 077D 0183 clrf 3 ;select bank 0
47 077E 00A3 movwf ?a_lcd_disp
48 ;KEY.C: 62: lcd_command_writedata(0x00,address)
+ ;
49 077F 00A4 movwf ?_lcd_command_writedata
50 0780 3000 movlw 0
51 0781 2797 fcall _lcd_command_writedata
52 ;KEY.C: 63: lcd_command_writedata(0xff,disp_dat
+ a);
53 0782 0822 movf ?_lcd_disp,w
54 0783 00A4 movwf ?_lcd_command_writedata
55 0784 30FF movlw -1
56 0785 2F97 ljmp _lcd_command_writedata
57 ;KEY.C: 28: unsigned char lcd_busy(void)
58 ;KEY.C: 29: {
59 0786 _lcd_busy
60 ; _temp assigned to ?a_lcd_busy+0
61 0000 _lcd_busy$temp set ?a_lcd_busy
62 ;KEY.C: 30: unsigned char temp;
63 0786 30FF movlw -1
64 0787 0183 clrf 3 ;select bank 0
65 0788 0087 movwf 7 ;volatile
66 ;KEY.C: 33: RS = 0;
67 0789 1009 bcf 9,0
68 ;KEY.C: 34: RW = 1;
69 078A 1489 bsf 9,1
70 ;KEY.C: 35: E = 1;
71 078B 1509 bsf 9,2
72 ;KEY.C: 36: TRISC = 0xff;
73 078C 1683 bsf 3,5
74 078D 0087 movwf 7 ;volatile
75 ;KEY.C: 37: temp = PORTC;
76 078E 1283 bcf 3,5
77 078F 0807 movf 7,w ;volatile
78 0790 00A6 movwf ?a_lcd_busy
79 ;KEY.C: 38: TRISC = 0x00;
80 0791 1683 bsf 3,5
81 0792 0187 clrf 7 ;volatile
82 ;KEY.C: 39: E = 0;
83 0793 1283 bcf 3,5
84 0794 1109 bcf 9,2
85 ;KEY.C: 40: return (temp);
86 0795 0826 movf ?a_lcd_busy,w
87 ;KEY.C: 41: }
88 0796 0008 return
89 ;KEY.C: 43: void lcd_command_writedata(unsigned
+ char check,unsigned char data)
90 ;KEY.C: 44: {
91 ; param _data assigned to ?_lcd_command_w
+ ritedata+0
92 0000 _lcd_command_writedata$data set ?_lcd_command_w
+ ritedata
93 0797 _lcd_command_writedata
94 ; _check assigned to ?a_lcd_command_writedata+0
95 0000 _lcd_command_writedata$check set ?a_lcd_command
+ _writedata
96 ;_check stored from w
97 0797 0183 clrf 3 ;select bank 0
98 0798 00A5 movwf ?a_lcd_command_writedata
99 ;KEY.C: 45: if (check == 0x00)
100 0799 08A5 movf ?a_lcd_command_writedata
101 079A 1D03 btfss 3,2
102 079B 2F9E goto l8
103 ;KEY.C: 46: {
104 079C 1009 bcf 9,0
105 ;KEY.C: 48: }
106 079D 2F9F goto l9
107 079E l8
108 ;KEY.C: 50: {
109 079E 1409 bsf 9,0
110 079F l9
111 ;KEY.C: 52: }
112 ;KEY.C: 53: RW = 0;
113 079F 1089 bcf 9,1
114 ;KEY.C: 54: PORTC = data;
115 07A0 0824 movf ?_lcd_command_writedata,w
116 07A1 0087 movwf 7 ;volatile
117 ;KEY.C: 55: E = 1;
118 07A2 1509 bsf 9,2
119 ;KEY.C: 56: E = 0;
120 07A3 1109 bcf 9,2
121 ;KEY.C: 57: while (lcd_busy() & 0x80);
122 07A4 l10
123 07A4 2786 fcall _lcd_busy
124 07A5 00F0 movwf btemp
125 07A6 1FF0 btfss btemp,7
126 07A7 0008 return
127 07A8 2FA4 goto l10
128 ;KEY.C: 66: void lcd_init(void)
129 ;KEY.C: 67: {
130 07A9 _lcd_init
131 ;KEY.C: 68: lcd_command_writedata(0x00,0x01);
132 07A9 0183 clrf 3 ;select bank 0
133 07AA 01A4 clrf ?_lcd_command_writedata
134 07AB 0AA4 incf ?_lcd_command_writedata
135 07AC 3000 movlw 0
136 07AD 2797 fcall _lcd_command_writedata
137 ;KEY.C: 69: lcd_command_writedata(0x00,0x38);
138 07AE 3038 movlw 56
139 07AF 00A4 movwf ?_lcd_command_writedata
140 07B0 3000 movlw 0
141 07B1 2797 fcall _lcd_command_writedata
142 ;KEY.C: 70: lcd_command_writedata(0x00,0x0e);
143 07B2 300E movlw 14
144 07B3 00A4 movwf ?_lcd_command_writedata
145 07B4 3000 movlw 0
146 07B5 2797 fcall _lcd_command_writedata
147 ;KEY.C: 71: lcd_command_writedata(0x00,0x06);
148 07B6 3006 movlw 6
149 07B7 00A4 movwf ?_lcd_command_writedata
150 07B8 3000 movlw 0
151 07B9 2F97 ljmp _lcd_command_writedata
152 ;KEY.C: 83: void rb_init(void)
153 ;KEY.C: 84: {
154 07BA _rb_init
155 ;KEY.C: 85: TRISB = 0xf0;
156 07BA 30F0 movlw -16
157 07BB 1683 bsf 3,5
158 07BC 1303 bcf 3,6 ;carry unused
159 07BD 0086 movwf 6 ;volatile
160 ;KEY.C: 86: OPTION = 0x7f;
161 07BE 307F movlw 127
162 07BF 0081 movwf 1
163 ;KEY.C: 87: RBIF = 0;
164 07C0 100B bcf 11,0
165 ;KEY.C: 88: PORTB = 0x00;
166 07C1 1283 bcf 3,5
167 07C2 0186 clrf 6 ;volatile
168 ;KEY.C: 89: RBIE = 1;
169 07C3 158B bsf 11,3
170 ;KEY.C: 90: PORTB = PORTB;
171 07C4 0806 movf 6,w ;volatile
172 07C5 0086 movwf 6 ;volatile
173 ;KEY.C: 91: }
174 07C6 0008 return
175 07C7 _delay
176 ; _i assigned to ?a_delay+0
177 0000 _delay$i set ?a_delay
178 ;KEY.C: 22: unsigned int i;
179 07C7 3099 movlw 153
180 07C8 0183 clrf 3 ;select bank 0
181 07C9 00A7 movwf ?a_delay
182 07CA 3019 movlw 25
183 07CB 00A8 movwf ?a_delay+1
184 07CC l5
185 ;KEY.C: 25: }
186 07CC 30FF movlw -1
187 07CD 07A7 addwf ?a_delay
188 07CE 1C03 btfss 3,0
189 07CF 03A8 decf ?a_delay+1
190 07D0 0828 movf ?a_delay+1,w
191 07D1 0427 iorwf ?a_delay,w
192 07D2 1903 btfsc 3,2
193 07D3 0008 return
194 07D4 2FCC goto l5
195 ;KEY.C: 74: void system_init(void)
196 ;KEY.C: 75: {
197 07D5 _system_init
198 ;KEY.C: 76: delay();
199 07D5 27C7 fcall _delay
200 ;KEY.C: 77: INTCON = 0x00;
201 07D6 018B clrf 11 ;volatile
202 ;KEY.C: 78: ADCON1 = 0x07;
203 07D7 3007 movlw 7
204 07D8 1683 bsf 3,5
205 07D9 009F movwf 31 ;volatile
206 ;KEY.C: 79: TRISC = 0x00;
207 07DA 0187 clrf 7 ;volatile
208 ;KEY.C: 80: TRISE = 0x00;
209 07DB 0189 clrf 9 ;volatile
210 ;KEY.C: 81: }
211 07DC 1283 bcf 3,5
212 07DD 0008 return
213 ;KEY.C: 106: void main(void)
214 ;KEY.C: 107: {
215 07DE _main
216 ;KEY.C: 108: delay();
217 07DE 27C7 fcall _delay
218 ;KEY.C: 109: system_init();
219 07DF 27D5 120A 118A fcall _system_init
220 ;KEY.C: 110: rb_init();
221 07E2 27BA fcall _rb_init
222 ;KEY.C: 111: lcd_init();
223 07E3 27A9 120A 118A fcall _lcd_init
224 ;KEY.C: 112: TMR2ON = 1;
225 07E6 1512 bsf 18,2
226 ;KEY.C: 113: (GIE = 1);
227 07E7 178B bsf 11,7
228 07E8 l24
229 ;KEY.C: 114: while(1)
230 ;KEY.C: 115: {
231 07E8 0821 movf _temp,w ;volatile
232 07E9 1903 btfsc 3,2
233 07EA 2FE8 goto l24
234 ;KEY.C: 117: {
235 07EB 3000 movlw _table shr (0+8)
236 07EC 008A movwf 10
237 07ED 0821 movf _temp,w ;volatile
238 07EE 2032 call ((_table+-1)& (0+2047))| (($)& (0+-2048))
239 07EF 00A0 movwf _data ;volatile
240 ;KEY.C: 119: lcd_disp(0x85,data);
241 07F0 0820 movf _data,w ;volatile
242 07F1 00A2 movwf ?_lcd_disp
243 07F2 3085 movlw -123
244 07F3 120A 118A 277D fcall _lcd_disp
+ 120A 118A
245 ;KEY.C: 120: lcd_disp(0xcf,0xfe);
246 07F8 30FE movlw -2
247 07F9 00A2 movwf ?_lcd_disp
248 07FA 30CF movlw -49
249 07FB 277D 120A 118A fcall _lcd_disp
250 ;KEY.C: 121: temp = 0;
251 07FE 01A1 clrf _temp ;volatile
252 ;KEY.C: 122: }
253 07FF 2FE8 goto l24
254
255 psect text7
256 ;KEY.C: 93: void key_serve(void)
257 ;KEY.C: 94: {
258 0766 _key_serve
259 ;KEY.C: 95: PORTB = 0xfb;
260 0766 30FB movlw -5
261 0767 0183 clrf 3 ;select bank 0
262 0768 0086 movwf 6 ;volatile
263 ;KEY.C: 96: if (RB4 == 0) temp = 5;
264 0769 1A06 btfsc 6,4
265 076A 2F6D goto l18
266 076B 3005 movlw 5
267 076C 00A1 movwf _temp ;volatile
268 076D l18
269 ;KEY.C: 97: if (RB5 == 0) temp = 6;
270 076D 1A86 btfsc 6,5
271 076E 2F71 goto l19
272 076F 3006 movlw 6
273 0770 00A1 movwf _temp ;volatile
274 0771 l19
275 ;KEY.C: 98: PORTB = 0xf7;
276 0771 30F7 movlw -9
277 0772 0086 movwf 6 ;volatile
278 ;KEY.C: 99: if (RB4 == 0) temp = 7;
279 0773 1A06 btfsc 6,4
280 0774 2F77 goto l20
281 0775 3007 movlw 7
282 0776 00A1 movwf _temp ;volatile
283 0777 l20
284 ;KEY.C: 100: if (RB5 == 0) temp = 8;
285 0777 1A86 btfsc 6,5
286 0778 2F7B goto l21
287 0779 3008 movlw 8
288 077A 00A1 movwf _temp ;volatile
289 077B l21
290 ;KEY.C: 101: PORTB = 0x00;
291 077B 0186 clrf 6 ;volatile
292 ;KEY.C: 102: }
293 077C 0008 return
294
295 psect intcode
296 ;KEY.C: 127: void interrupt rb_interrupt(void)
297 ;KEY.C: 128: {
298 000B _rb_interrupt
299 000B int_func
300 ;KEY.C: 129: delay();
301 000B 120A 118A 27C7 fcall _delay
+ 120A 118A
302 ;KEY.C: 130: if((RB4 == 0) || (RB5 == 0))
303 0010 1E06 btfss 6,4
304 0011 2814 goto u110
305 0012 1A86 btfsc 6,5
306 0013 2819 goto l28
307 0014 u110
308 ;KEY.C: 131: {
309 0014 120A 118A 2766 fcall _key_serve
+ 120A 118A
310 0019 l28
311 ;KEY.C: 133: }
312 0019 0806 movf 6,w ;volatile
313 001A 0086 movwf 6 ;volatile
314 ;KEY.C: 135: RBIF = 0;
315 001B 100B bcf 11,0
316
317 psect intsave_0
318 0071 saved_w
319 0071 ds 1
320
321 psect intret
322 001C 082A movf saved_pclath,w
323 001D 008A movwf 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -