📄 1602lcd.lst
字号:
HI-TECH Software PICC Macro Assembler V9.60PL1
Fri Aug 01 14:26:12 2008
1 processor 16F877A
2 opt pw 79
3 psect strings,global,class=STRING,delta=2
4 psect const1,local,class=CONST,delta=2
5 psect text0,local,class=CODE,delta=2
6 psect text1,local,class=CODE,delta=2
7 psect text2,local,class=CODE,delta=2
8 psect text3,local,class=CODE,delta=2
9 psect text4,local,class=CODE,delta=2
10 psect text5,local,class=CODE,delta=2
11 psect text6,local,class=CODE,delta=2
12 psect text7,local,class=CODE,delta=2
13 psect text8,local,class=CODE,delta=2
14 psect text9,local,class=CODE,delta=2
15 psect rbit_0,global,bit,class=BANK0,space=1,de
+ lta=1
16 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
17 0000
18 0000
19 0000
20 0000
21 0000
22 0000
23 0000
24 0000
25 0000
26 0000
27
28 psect const1
29 0022 0782 addwf 2
30 0023 _int2charLCD
31 0023 3430 retlw 48
32 0024 3431 retlw 49
33 0025 3432 retlw 50
34 0026 3433 retlw 51
35 0027 3434 retlw 52
36 0028 3435 retlw 53
37 0029 3436 retlw 54
38 002A 3437 retlw 55
39 002B 3438 retlw 56
40 002C 3439 retlw 57
41 002D 3420 retlw 32
42 002E 3400 retlw 0
43
44 psect text0
45 05F3 _delay_us
46 ; _k assigned to ?a_delay_us+0
47 0000 _delay_us$k set ?a_delay_us
48 ;_k stored from w
49 05F3 0183 clrf 3 ;select bank 0
50 05F4 00B7 movwf ?a_delay_us
51 ;1602lcd.c: 6: void delay_us(unsigned char k)
52 05F5 l2
53 ;1602lcd.c: 10: {
54 05F5 1283 bcf 3,5
55 05F6 1303 bcf 3,6 ;carry unused
56 05F7 03B7 decf ?a_delay_us
57 05F8 0F37 incfsz ?a_delay_us,w
58 05F9 2DF5 goto l2
59 05FA 0008 return
60
61 psect text1
62 0668 _delay_ms
63 ; _k assigned to ?a_delay_ms+0
64 0000 _delay_ms$k set ?a_delay_ms
65 ; _i assigned to ?a_delay_ms+1
66 0000 _delay_ms$i set ?a_delay_ms+1
67 ;_k stored from w
68 0668 0183 clrf 3 ;select bank 0
69 0669 00A7 movwf ?a_delay_ms
70 ;1602lcd.c: 14: void delay_ms(unsigned char k)
71 066A 2E7A goto l6
72 066B l7
73 ;1602lcd.c: 17: { for(i=0;i<256;i++);
74 066B 01A8 clrf ?a_delay_ms+1
75 066C l9
76 066C 0AA8 incf ?a_delay_ms+1
77 066D 0828 movf ?a_delay_ms+1,w
78 066E 00A9 movwf ?a_delay_ms+2
79 066F 01AA clrf ?a_delay_ms+3
80 0670 082A movf ?a_delay_ms+3,w
81 0671 3A80 xorlw 128
82 0672 00F4 movwf btemp
83 0673 3081 movlw 129
84 0674 0274 subwf btemp,w
85 0675 3000 movlw 0
86 ;set bank bits for f2813+0
87 0676 1903 btfsc 3,2
88 0677 0229 subwf ?a_delay_ms+2,w
89 0678 1C03 btfss 3,0
90 0679 2E6C goto l9
91 067A l6
92 067A 1283 bcf 3,5
93 067B 1303 bcf 3,6 ;carry unused
94 067C 03A7 decf ?a_delay_ms
95 067D 0F27 incfsz ?a_delay_ms,w
96 067E 2E6B goto l7
97 067F 0008 return
98
99 psect text2
100 05FB _lcd_bz
101 ;1602lcd.c: 20: bit lcd_bz()
102 05FB 0183 clrf 3 ;select bank 0
103 05FC 1009 bcf 9,0
104 ;1602lcd.c: 24: RE1=1;
105 05FD 1489 bsf 9,1
106 ;1602lcd.c: 25: RE2=1;
107 05FE 1509 bsf 9,2
108 ;1602lcd.c: 26: TRISC = 0Xff;
109 05FF 30FF movlw -1
110 0600 1683 bsf 3,5
111 0601 0087 movwf 7 ;volatile
112 ;1602lcd.c: 27: delay_us(100);
113 0602 3064 movlw 100
114 0603 25F3 call _delay_us
115 ;1602lcd.c: 28: result = (bit)(PORTC&0x80);
116 0604 1020 bcf F535/(0+8),F535& (0+7)
117 ;1602lcd.c: 29: RE2=0;
118 0605 1109 bcf 9,2
119 ;1602lcd.c: 30: return result;
120 0606 1003 bcf 3,0
121 0607 1820 btfsc F535/(0+8),F535& (0+7)
122 0608 1403 bsf 3,0
123 ;1602lcd.c: 31: }
124 0609 0008 return ;W free
125 ; param _command assigned to ?_write_LCD_
+ command+0
126 0000 _write_LCD_command$command set ?_write_LCD_comm
+ and
127
128 psect text3
129 061A _write_LCD_command
130 ;1602lcd.c: 32: void write_LCD_command(unsigned
+ command)
131 061A l14
132 061A 25FB call _lcd_bz
133 061B 1803 btfsc 3,0
134 061C 2E1A goto l14
135 ;1602lcd.c: 35: RE1=0;
136 061D 1089 bcf 9,1
137 ;1602lcd.c: 36: RE0=0;
138 061E 1009 bcf 9,0
139 ;1602lcd.c: 37: RE2=0;
140 061F 1109 bcf 9,2
141 ;1602lcd.c: 38: TRISC=0X00;
142 0620 1683 bsf 3,5
143 0621 0187 clrf 7 ;volatile
144 ;1602lcd.c: 39: PORTC=command;
145 0622 1283 bcf 3,5
146 0623 082B movf ?_write_LCD_command,w
147 0624 0087 movwf 7 ;volatile
148 ;1602lcd.c: 40: delay_us(100);
149 0625 3064 movlw 100
150 0626 25F3 call _delay_us
151 ;1602lcd.c: 41: RE2=1;
152 0627 1509 bsf 9,2
153 ;1602lcd.c: 42: delay_us(100);
154 0628 3064 movlw 100
155 0629 25F3 call _delay_us
156 ;1602lcd.c: 43: RE2=0;
157 062A 1109 bcf 9,2
158 ;1602lcd.c: 45: }
159 062B 0008 return ;W free
160
161 psect text4
162 062C _write_LCD_data
163 ;1602lcd.c: 47: void write_LCD_data(unsigned LC
+ Ddata)
164 062C l18
165 062C 25FB call _lcd_bz
166 062D 1803 btfsc 3,0
167 062E 2E2C goto l18
168 ;1602lcd.c: 50: RE1=0;
169 062F 1089 bcf 9,1
170 ;1602lcd.c: 51: RE0=1;
171 0630 1409 bsf 9,0
172 ;1602lcd.c: 52: RE2=1;
173 0631 1509 bsf 9,2
174 ;1602lcd.c: 53: TRISC=0X00;
175 0632 1683 bsf 3,5
176 0633 0187 clrf 7 ;volatile
177 ;1602lcd.c: 54: PORTC=LCDdata;
178 0634 1283 bcf 3,5
179 0635 0835 movf ?_write_LCD_data,w
180 0636 0087 movwf 7 ;volatile
181 ;1602lcd.c: 55: delay_us(100);
182 0637 3064 movlw 100
183 0638 25F3 call _delay_us
184 ;1602lcd.c: 56: RE2=1;
185 0639 1509 bsf 9,2
186 ;1602lcd.c: 57: delay_us(100);
187 063A 3064 movlw 100
188 063B 25F3 call _delay_us
189 ;1602lcd.c: 58: RE2=0;
190 063C 1109 bcf 9,2
191 ;1602lcd.c: 59: }
192 063D 0008 return ;W free
193
194 psect text5
195 063E _init_LCD
196 ;1602lcd.c: 60: void init_LCD(void)
197 063E 3038 movlw 56
198 063F 0183 clrf 3 ;select bank 0
199 0640 00AB movwf ?_write_LCD_command
200 0641 01AC clrf ?_write_LCD_command+1
201 0642 261A call _write_LCD_command
202 ;1602lcd.c: 63: delay_us(10);
203 0643 300A movlw 10
204 0644 25F3 call _delay_us
205 ;1602lcd.c: 64: write_LCD_command(0x0d);
206 0645 300D movlw 13
207 0646 00AB movwf ?_write_LCD_command
208 0647 01AC clrf ?_write_LCD_command+1
209 0648 261A call _write_LCD_command
210 ;1602lcd.c: 65: delay_us(10);
211 0649 300A movlw 10
212 064A 25F3 call _delay_us
213 ;1602lcd.c: 66: write_LCD_command(0x06);
214 064B 3006 movlw 6
215 064C 00AB movwf ?_write_LCD_command
216 064D 01AC clrf ?_write_LCD_command+1
217 064E 261A call _write_LCD_command
218 ;1602lcd.c: 67: delay_us(10);
219 064F 300A movlw 10
220 0650 2DF3 goto _delay_us
221
222 psect text6
223 0698 _clear_LCD
224 ;1602lcd.c: 71: void clear_LCD()
225 0698 l23
226 0698 25FB call _lcd_bz
227 0699 1803 btfsc 3,0
228 069A 2E98 goto l23
229 ;1602lcd.c: 74: RE1=0;
230 069B 1089 bcf 9,1
231 ;1602lcd.c: 75: RE0=0;
232 069C 1009 bcf 9,0
233 ;1602lcd.c: 76: RE2=0;
234 069D 1109 bcf 9,2
235 ;1602lcd.c: 77: TRISC=0X00;
236 069E 1683 bsf 3,5
237 069F 0187 clrf 7 ;volatile
238 ;1602lcd.c: 78: PORTC=0x01;
239 06A0 3001 movlw 1
240 06A1 1283 bcf 3,5
241 06A2 0087 movwf 7 ;volatile
242 ;1602lcd.c: 79: delay_ms(256);
243 06A3 3000 movlw 0
244 06A4 2668 call _delay_ms
245 ;1602lcd.c: 80: RE2=1;
246 06A5 1509 bsf 9,2
247 ;1602lcd.c: 81: RE2=0;
248 06A6 1109 bcf 9,2
249 ;1602lcd.c: 83: while(lcd_bz());
250 06A7 l26
251 06A7 25FB call _lcd_bz
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -