lcd1602.lst
来自「PIC16F877入门程序和仿真原理图」· LST 代码 · 共 673 行 · 第 1/2 页
LST
673 行
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-65018 Mon Apr 6 21:09:59 2009
Licensed to: ONE
1 processor 16F877A
2 opt pw 79
3 psect __Z65018RS_,global,delta=1
4 psect rdata_0,global,class=BANK0,space=1,delta
+ =1
5 psect idata_0,global,class=CODE,delta=2
6 psect text1,local,class=CODE,delta=2
7 psect text5,local,class=CODE,delta=2
8 psect text8,local,class=CODE,delta=2
9 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19 0000
20
21 psect __Z65018RS_
22 0190
23 0190
24
25 psect rdata_0
26 0027 _table
27 0027 ds 1
28 0028 ds 1
29 0029 ds 1
30 002A ds 1
31 002B ds 1
32 002C ds 1
33 002D ds 1
34 002E ds 1
35 002F ds 1
36 0030 ds 1
37 0031 ds 1
38 0032 _table1
39 0032 ds 1
40 0033 ds 1
41 0034 ds 1
42 0035 ds 1
43 0036 ds 1
44 0037 ds 1
45 0038 ds 1
46 0039 ds 1
47 003A ds 1
48 003B ds 1
49 003C _table2
50 003C ds 1
51 003D ds 1
52 003E ds 1
53 003F ds 1
54 0040 ds 1
55 0041 ds 1
56 0042 ds 1
57 0043 ds 1
58 0044 ds 1
59
60 psect idata_0
61 07E2 3479 retlw 121
62 07E3 3469 retlw 105
63 07E4 346E retlw 110
64 07E5 3462 retlw 98
65 07E6 346F retlw 111
66 07E7 3420 retlw 32
67 07E8 346D retlw 109
68 07E9 3461 retlw 97
69 07EA 3464 retlw 100
70 07EB 3465 retlw 101
71 07EC 3400 retlw 0
72 07ED 3450 retlw 80
73 07EE 3449 retlw 73
74 07EF 3443 retlw 67
75 07F0 3431 retlw 49
76 07F1 3436 retlw 54
77 07F2 3466 retlw 102
78 07F3 3438 retlw 56
79 07F4 3437 retlw 55
80 07F5 3437 retlw 55
81 07F6 3400 retlw 0
82 07F7 344C retlw 76
83 07F8 3443 retlw 67
84 07F9 3444 retlw 68
85 07FA 3431 retlw 49
86 07FB 3436 retlw 54
87 07FC 3430 retlw 48
88 07FD 3432 retlw 50
89 07FE 343A retlw 58
90 07FF 3400 retlw 0
91
92 psect text1
93 0720 _delay_a
94 ; _z assigned to ?a_delay_a+0
95 0000 _delay_a$z set ?a_delay_a
96 ; _j assigned to ?a_delay_a+1
97 0000 _delay_a$j set ?a_delay_a+1
98 ; _i assigned to ?a_delay_a+3
99 0000 _delay_a$i set ?a_delay_a+3
100 ;_z stored from w
101 0720 0183 clrf 3 ;select bank 0
102 0721 00A2 movwf ?a_delay_a
103 ;lcd1602.c: 18: unsigned int i,j;
104 0722 00A5 movwf ?a_delay_a+3
105 0723 01A6 clrf ?a_delay_a+4
106 0724 0426 iorwf ?a_delay_a+4,w
107 0725 1903 btfsc 3,2
108 0726 0008 return
109 0727 l3
110 ;lcd1602.c: 20: for(j=110;j>0;j--);
111 0727 306E movlw 110
112 0728 00A3 movwf ?a_delay_a+1
113 0729 01A4 clrf ?a_delay_a+2
114 072A l6
115 072A 08A3 movf ?a_delay_a+1
116 072B 1903 btfsc 3,2
117 072C 03A4 decf ?a_delay_a+2
118 072D 03A3 decf ?a_delay_a+1
119 072E 0824 movf ?a_delay_a+2,w
120 072F 0423 iorwf ?a_delay_a+1,w
121 0730 1D03 btfss 3,2
122 0731 2F2A goto l6
123 0732 08A5 movf ?a_delay_a+3
124 0733 1903 btfsc 3,2
125 0734 03A6 decf ?a_delay_a+4
126 0735 03A5 decf ?a_delay_a+3
127 0736 0826 movf ?a_delay_a+4,w
128 0737 0425 iorwf ?a_delay_a+3,w
129 0738 1903 btfsc 3,2
130 0739 0008 return
131 073A 2F27 goto l3
132 ;lcd1602.c: 26: void write_command(unsigned cha
+ r tempdata)
133 ;lcd1602.c: 27: {
134 073B _write_command
135 ; _tempdata assigned to ?a_write_command+0
136 0000 _write_command$tempdata set ?a_write_command
137 ;_tempdata stored from w
138 073B 0183 clrf 3 ;select bank 0
139 073C 00A1 movwf ?a_write_command
140 ;lcd1602.c: 28: RB1=0;
141 073D 1086 bcf 6,1
142 ;lcd1602.c: 29: RB0=0;
143 073E 1006 bcf 6,0
144 ;lcd1602.c: 30: delay_a(5);
145 073F 3005 movlw 5
146 0740 2720 fcall _delay_a
147 ;lcd1602.c: 31: PORTD=tempdata;
148 0741 0821 movf ?a_write_command,w
149 0742 0088 movwf 8 ;volatile
150 ;lcd1602.c: 32: delay_a(5);
151 0743 3005 movlw 5
152 0744 2720 fcall _delay_a
153 ;lcd1602.c: 33: RB2=1;
154 0745 1506 bsf 6,2
155 ;lcd1602.c: 34: delay_a(5);
156 0746 3005 movlw 5
157 0747 2720 fcall _delay_a
158 ;lcd1602.c: 35: RB2=0;
159 0748 1106 bcf 6,2
160 ;lcd1602.c: 36: }
161 0749 0008 return
162 ;lcd1602.c: 41: void write_data(unsigned char t
+ empdata)
163 ;lcd1602.c: 42: {
164 074A _write_data
165 ; _tempdata assigned to ?a_write_data+0
166 0000 _write_data$tempdata set ?a_write_data
167 ;_tempdata stored from w
168 074A 0183 clrf 3 ;select bank 0
169 074B 00A1 movwf ?a_write_data
170 ;lcd1602.c: 43: RB1=0;
171 074C 1086 bcf 6,1
172 ;lcd1602.c: 44: RB0=1;
173 074D 1406 bsf 6,0
174 ;lcd1602.c: 45: delay_a(5);
175 074E 3005 movlw 5
176 074F 2720 fcall _delay_a
177 ;lcd1602.c: 46: PORTD=tempdata;
178 0750 0821 movf ?a_write_data,w
179 0751 0088 movwf 8 ;volatile
180 ;lcd1602.c: 47: delay_a(5);
181 0752 3005 movlw 5
182 0753 2720 fcall _delay_a
183 ;lcd1602.c: 48: RB2=1;
184 0754 1506 bsf 6,2
185 ;lcd1602.c: 49: delay_a(5);
186 0755 3005 movlw 5
187 0756 2720 fcall _delay_a
188 ;lcd1602.c: 50: RB2=0;
189 0757 1106 bcf 6,2
190 ;lcd1602.c: 51: }
191 0758 0008 return
192 ;lcd1602.c: 76: void zifu_disp()
193 ;lcd1602.c: 77: {
194 0759 _zifu_disp
195 ; _i assigned to ?a_zifu_disp+0
196 0000 _zifu_disp$i set ?a_zifu_disp
197 ;lcd1602.c: 78: unsigned char i;
198 0759 3083 movlw -125
199 075A 273B 120A 118A fcall _write_command
200 ;lcd1602.c: 80: for(i=0;i<10;i++)
201 075D 01A0 clrf ?a_zifu_disp
202 075E l16
203 ;lcd1602.c: 81: {
204 ;lcd1602.c: 82: write_data(table[i]);
205 075E 0820 movf ?a_zifu_disp,w
206 075F 3E27 addlw _table
207 0760 0084 movwf 4
208 0761 1383 bcf 3,7
209 0762 0800 movf 0,w
210 0763 274A 120A 118A fcall _write_data
211 ;lcd1602.c: 83: delay_a(5);
212 0766 3005 movlw 5
213 0767 2720 fcall _delay_a
214 ;lcd1602.c: 84: }
215 0768 0AA0 incf ?a_zifu_disp
216 0769 300A movlw 10
217 076A 0220 subwf ?a_zifu_disp,w
218 076B 1C03 btfss 3,0
219 076C 2F5E goto l16
220 ;lcd1602.c: 85: write_command(0x80+0x40);
221 076D 30C0 movlw -64
222 076E 273B 120A 118A fcall _write_command
223 ;lcd1602.c: 86: {
224 0771 01A0 clrf ?a_zifu_disp
225 0772 l19
226 ;lcd1602.c: 88: {
227 ;lcd1602.c: 89: write_data(table1[i]);
228 0772 0820 movf ?a_zifu_disp,w
229 0773 3E32 addlw _table1
230 0774 0084 movwf 4
231 0775 1383 bcf 3,7
232 0776 0800 movf 0,w
233 0777 274A 120A 118A fcall _write_data
234 ;lcd1602.c: 90: delay_a(5);
235 077A 3005 movlw 5
236 077B 2720 fcall _delay_a
237 ;lcd1602.c: 91: }
238 077C 0AA0 incf ?a_zifu_disp
239 077D 3009 movlw 9
240 077E 0220 subwf ?a_zifu_disp,w
241 077F 1C03 btfss 3,0
242 0780 2F72 goto l19
243 ;lcd1602.c: 92: }
244 0781 30C9 movlw -55
245 0782 273B 120A 118A fcall _write_command
246 ;lcd1602.c: 94: for(i=0;i<7;i++)
247 0785 01A0 clrf ?a_zifu_disp
248 0786 l22
249 ;lcd1602.c: 95: {
250 ;lcd1602.c: 96: write_data(table2[i]);
251 0786 0820 movf ?a_zifu_disp,w
252 0787 3E3C addlw _table2
253 0788 0084 movwf 4
254 0789 1383 bcf 3,7
255 078A 0800 movf 0,w
256 078B 274A 120A 118A fcall _write_data
257 ;lcd1602.c: 97: delay_a(5);
258 078E 3005 movlw 5
259 078F 2720 fcall _delay_a
260 ;lcd1602.c: 98: }
261 0790 0AA0 incf ?a_zifu_disp
262 0791 3007 movlw 7
263 0792 0220 subwf ?a_zifu_disp,w
264 0793 1803 btfsc 3,0
265 0794 0008 return
266 0795 2F86 goto l22
267 ;lcd1602.c: 52: void init_LCD(void)
268 ;lcd1602.c: 53: {
269 0796 _init_LCD
270 ;lcd1602.c: 54: write_command(0x38);
271 0796 3038 movlw 56
272 0797 273B 120A 118A fcall _write_command
273 ;lcd1602.c: 55: write_command(0x0c);
274 079A 300C movlw 12
275 079B 273B 120A 118A fcall _write_command
276 ;lcd1602.c: 56: write_command(0x06);
277 079E 3006 movlw 6
278 079F 2F3B ljmp _write_command
279 07A0 _init_pic
280 ;lcd1602.c: 12: TRISB=0X00;
281 07A0 1683 bsf 3,5
282 07A1 1303 bcf 3,6 ;carry unused
283 07A2 0186 clrf 6 ;volatile
284 ;lcd1602.c: 13: TRISD=0X00;
285 07A3 0188 clrf 8 ;volatile
286 ;lcd1602.c: 14: }
287 07A4 1283 bcf 3,5
288 07A5 0008 return
289 ;lcd1602.c: 101: void main()
290 ;lcd1602.c: 102: {
291 07A6 _main
292 ;lcd1602.c: 103: init_pic();
293 07A6 27A0 fcall _init_pic
294 ;lcd1602.c: 104: init_LCD();
295 07A7 2796 120A 118A fcall _init_LCD
296 07AA l27
297 ;lcd1602.c: 105: while(1)
298 ;lcd1602.c: 106: {
299 07AA 2759 fcall _zifu_disp
300 ;lcd1602.c: 110: }
301 07AB 2FAA goto l27
302
303 psect text5
304 06EA _write_sfm
305 ; _hang assigned to ?a_write_sfm+0
306 0000 _write_sfm$hang set ?a_write_sfm
307 ; _ge assigned to ?a_write_sfm+1
308 0000 _write_sfm$ge set ?a_write_sfm+1
309 ; _shi assigned to ?a_write_sfm+2
310 0000 _write_sfm$shi set ?a_write_sfm+2
311 ;_hang stored from w
312 06EA 0183 clrf 3 ;select bank 0
313 06EB 00A0 movwf ?a_write_sfm
314 ;lcd1602.c: 60: unsigned char shi,ge;
315 06EC 300A movlw 10
316 06ED 00F1 movwf btemp+1
317 06EE 0821 movf ?_write_sfm+1,w
318 06EF 120A 118A 27AC fcall lbdiv
319 06F2 00A2 movwf ?a_write_sfm+2
320 ;lcd1602.c: 62: ge=date%10;
321 06F3 300A movlw 10
322 06F4 00F1 movwf btemp+1
323 06F5 0821 movf ?_write_sfm+1,w
324 06F6 120A 118A 27AC fcall lbmod
+ 120A 118A
325 06FB 0870 movf btemp,w
326 06FC 00A1 movwf ?a_write_sfm+1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?