📄 lcd_595.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-76266 Fri Nov 7 16:59:38 2008
Licensed to: ONE TWO
1 processor 16F877A
2 opt pw 79
3 psect __Z76266RS_,global,delta=1
4 psect text0,local,class=CODE,delta=2
5 psect text4,local,class=CODE,delta=2
6 psect text5,local,class=CODE,delta=2
7 psect text7,local,class=CODE,delta=2
8 psect text8,local,class=CODE,delta=2
9 psect text9,local,class=CODE,delta=2
10 psect text11,local,class=CODE,delta=2
11 psect text12,local,class=CODE,delta=2
12 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19 0000
20 0000
21 0000
22 0000
23
24 psect __Z76266RS_
25 0190
26 0190
27 0000 _SEND_TO_HC595$console set ?_SEND_TO_HC595
28
29 psect text0
30 05E2 _SEND_TO_HC595
31 ; _data assigned to ?a_SEND_TO_HC595+0
32 0000 _SEND_TO_HC595$data set ?a_SEND_TO_HC595
33 ; _i assigned to ?a_SEND_TO_HC595+1
34 0000 _SEND_TO_HC595$i set ?a_SEND_TO_HC595+1
35 ; _tmp assigned to ?a_SEND_TO_HC595+2
36 0000 _SEND_TO_HC595$tmp set ?a_SEND_TO_HC595+2
37 ;_data stored from w
38 05E2 0183 clrf 3 ;select bank 0
39 05E3 00B8 movwf ?a_SEND_TO_HC595
40 ;lcd_595.c: 38: unsigned char tmp;
41 05E4 1683 bsf 3,5
42 05E5 1108 bcf 8,2
43 ;lcd_595.c: 42: TRISD1 = 0;
44 05E6 1088 bcf 8,1
45 ;lcd_595.c: 43: TRISD0 = 0;
46 05E7 1008 bcf 8,0
47 ;lcd_595.c: 44: RD2 = 1;
48 05E8 1283 bcf 3,5
49 05E9 1508 bsf 8,2
50 ;lcd_595.c: 45: RD1 = 1;
51 05EA 1488 bsf 8,1
52 ;lcd_595.c: 46: RD0 = 1;
53 05EB 1408 bsf 8,0
54 ;lcd_595.c: 48: tmp = console;
55 05EC 0837 movf ?_SEND_TO_HC595,w
56 05ED 00BA movwf ?a_SEND_TO_HC595+2
57 ;lcd_595.c: 49: for(i=0;i<8;++i)
58 05EE 01B9 clrf ?a_SEND_TO_HC595+1
59 05EF l2
60 ;lcd_595.c: 50: {
61 ;lcd_595.c: 51: if((tmp&0x80)==0x80)
62 05EF 1FBA btfss ?a_SEND_TO_HC595+2,7
63 05F0 2DF3 goto l5
64 ;lcd_595.c: 52: {
65 05F1 1408 bsf 8,0
66 ;lcd_595.c: 54: }
67 05F2 2DF4 goto l6
68 05F3 l5
69 ;lcd_595.c: 56: {
70 05F3 1008 bcf 8,0
71 05F4 l6
72 ;lcd_595.c: 58: }
73 ;lcd_595.c: 59: RD2 = 0;
74 05F4 1108 bcf 8,2
75 ;lcd_595.c: 60: RD2 = 1;
76 05F5 1508 bsf 8,2
77 ;lcd_595.c: 61: tmp = tmp << 1;
78 05F6 1003 bcf 3,0
79 05F7 0DBA rlf ?a_SEND_TO_HC595+2
80 ;lcd_595.c: 62: }
81 05F8 0AB9 incf ?a_SEND_TO_HC595+1
82 05F9 3008 movlw 8
83 05FA 0239 subwf ?a_SEND_TO_HC595+1,w
84 05FB 1C03 btfss 3,0
85 05FC 2DEF goto l2
86 ;lcd_595.c: 64: tmp = data;
87 05FD 0838 movf ?a_SEND_TO_HC595,w
88 05FE 00BA movwf ?a_SEND_TO_HC595+2
89 ;lcd_595.c: 65: for(i=0;i<8;++i)
90 05FF 01B9 clrf ?a_SEND_TO_HC595+1
91 0600 l7
92 ;lcd_595.c: 66: {
93 ;lcd_595.c: 67: if((tmp&0x80)==0x80)
94 0600 1FBA btfss ?a_SEND_TO_HC595+2,7
95 0601 2E04 goto l10
96 ;lcd_595.c: 68: {
97 0602 1408 bsf 8,0
98 ;lcd_595.c: 70: }
99 0603 2E05 goto l11
100 0604 l10
101 ;lcd_595.c: 72: {
102 0604 1008 bcf 8,0
103 0605 l11
104 ;lcd_595.c: 74: }
105 ;lcd_595.c: 75: RD2 = 0;
106 0605 1108 bcf 8,2
107 ;lcd_595.c: 76: RD2 = 1;
108 0606 1508 bsf 8,2
109 ;lcd_595.c: 77: tmp = tmp << 1;
110 0607 1003 bcf 3,0
111 0608 0DBA rlf ?a_SEND_TO_HC595+2
112 ;lcd_595.c: 78: }
113 0609 0AB9 incf ?a_SEND_TO_HC595+1
114 060A 3008 movlw 8
115 060B 0239 subwf ?a_SEND_TO_HC595+1,w
116 060C 1C03 btfss 3,0
117 060D 2E00 goto l7
118 ;lcd_595.c: 80: RD1 = 0;
119 060E 1088 bcf 8,1
120 ;lcd_595.c: 81: RD1 = 1;
121 060F 1488 bsf 8,1
122 ;lcd_595.c: 82: RD2 = 1;
123 0610 1508 bsf 8,2
124 ;lcd_595.c: 83: RD0 = 1;
125 0611 1408 bsf 8,0
126 ;lcd_595.c: 84: }
127 0612 0008 return
128 ;lcd_595.c: 88: void lcd_checkbusy(void)
129 ;lcd_595.c: 89: {
130 0613 _lcd_checkbusy
131 ; __dcnt assigned to ?a_lcd_checkbusy+0
132 0000 _lcd_checkbusy$_dcnt set ?a_lcd_checkbusy
133 ;lcd_595.c: 91: { unsigned char _dcnt; _dcnt =
+ (50)/((12*1000L)/(4*1000L))|1; while(--_dcnt !=
+ 0) continue; };
134 0613 3011 movlw 17
135 0614 0183 clrf 3 ;select bank 0
136 0615 00B7 movwf ?a_lcd_checkbusy
137 0616 l13
138 0616 0BB7 decfsz ?a_lcd_checkbusy
139 0617 2E16 goto l13
140 0618 0008 return
141 ;lcd_595.c: 96: void lcd_writecom(unsigned char
+ combyte)
142 ;lcd_595.c: 97: {
143 0619 _lcd_writecom
144 ; _combyte assigned to ?a_lcd_writecom+0
145 0000 _lcd_writecom$combyte set ?a_lcd_writecom
146 ; _lcd_console assigned to ?a_lcd_writecom+1
147 0000 _lcd_writecom$lcd_console set ?a_lcd_writecom+1
148 ; _lcd_com assigned to ?a_lcd_writecom+2
149 0000 _lcd_writecom$lcd_com set ?a_lcd_writecom+2
150 ;_combyte stored from w
151 0619 0183 clrf 3 ;select bank 0
152 061A 00B4 movwf ?a_lcd_writecom
153 ;lcd_595.c: 98: unsigned char lcd_com;
154 061B 2613 fcall _lcd_checkbusy
155 ;lcd_595.c: 101: lcd_com = combyte;
156 061C 0834 movf ?a_lcd_writecom,w
157 061D 00B6 movwf ?a_lcd_writecom+2
158 ;lcd_595.c: 102: lcd_console = 0x00;
159 061E 01B5 clrf ?a_lcd_writecom+1
160 ;lcd_595.c: 105: SEND_TO_HC595(lcd_com,lcd_cons
+ ole);
161 061F 01B7 clrf ?_SEND_TO_HC595
162 0620 25E2 fcall _SEND_TO_HC595
163 ;lcd_595.c: 106: lcd_console = 0x02;
164 0621 3002 movlw 2
165 0622 00B5 movwf ?a_lcd_writecom+1
166 ;lcd_595.c: 109: SEND_TO_HC595(lcd_com,lcd_cons
+ ole);
167 0623 00B7 movwf ?_SEND_TO_HC595
168 0624 0836 movf ?a_lcd_writecom+2,w
169 0625 25E2 fcall _SEND_TO_HC595
170 ;lcd_595.c: 110: lcd_console = 0x00;
171 0626 01B5 clrf ?a_lcd_writecom+1
172 ;lcd_595.c: 113: SEND_TO_HC595(lcd_com,lcd_cons
+ ole);
173 0627 01B7 clrf ?_SEND_TO_HC595
174 0628 0836 movf ?a_lcd_writecom+2,w
175 0629 2DE2 ljmp _SEND_TO_HC595
176 ;lcd_595.c: 118: void lcd_writedata(unsigned ch
+ ar data)
177 ;lcd_595.c: 119: {
178 062A _lcd_writedata
179 ; _data assigned to ?a_lcd_writedata+0
180 0000 _lcd_writedata$data set ?a_lcd_writedata
181 ; _lcd_console assigned to ?a_lcd_writedata+1
182 0000 _lcd_writedata$lcd_console set ?a_lcd_writedata
+ +1
183 ; _lcd_data assigned to ?a_lcd_writedata+2
184 0000 _lcd_writedata$lcd_data set ?a_lcd_writedata+2
185 ;_data stored from w
186 062A 0183 clrf 3 ;select bank 0
187 062B 00B4 movwf ?a_lcd_writedata
188 ;lcd_595.c: 120: unsigned char lcd_data;
189 062C 2613 fcall _lcd_checkbusy
190 ;lcd_595.c: 123: lcd_data = data;
191 062D 0834 movf ?a_lcd_writedata,w
192 062E 00B6 movwf ?a_lcd_writedata+2
193 ;lcd_595.c: 124: lcd_console = 0x08;
194 062F 3008 movlw 8
195 0630 00B5 movwf ?a_lcd_writedata+1
196 ;lcd_595.c: 127: SEND_TO_HC595(lcd_data,lcd_con
+ sole);
197 0631 00B7 movwf ?_SEND_TO_HC595
198 0632 0836 movf ?a_lcd_writedata+2,w
199 0633 25E2 fcall _SEND_TO_HC595
200 ;lcd_595.c: 128: lcd_console = 0x0A;
201 0634 300A movlw 10
202 0635 00B5 movwf ?a_lcd_writedata+1
203 ;lcd_595.c: 131: SEND_TO_HC595(lcd_data,lcd_con
+ sole);
204 0636 00B7 movwf ?_SEND_TO_HC595
205 0637 0836 movf ?a_lcd_writedata+2,w
206 0638 25E2 fcall _SEND_TO_HC595
207 ;lcd_595.c: 132: lcd_console = 0x08;
208 0639 3008 movlw 8
209 063A 00B5 movwf ?a_lcd_writedata+1
210 ;lcd_595.c: 135: SEND_TO_HC595(lcd_data,lcd_con
+ sole);
211 063B 00B7 movwf ?_SEND_TO_HC595
212 063C 0836 movf ?a_lcd_writedata+2,w
213 063D 2DE2 ljmp _SEND_TO_HC595
214 063E _lcd_gotoxy
215 ; _x assigned to ?a_lcd_gotoxy+0
216 0000 _lcd_gotoxy$x set ?a_lcd_gotoxy
217 ; _base_y assigned to ?a_lcd_gotoxy+1
218 0000 _lcd_gotoxy$base_y set ?a_lcd_gotoxy+1
219 ;_x stored from w
220 063E 0183 clrf 3 ;select bank 0
221 063F 00B1 movwf ?a_lcd_gotoxy
222 ;lcd_595.c: 163: unsigned char base_y[2]={0x80,
+ 0xc0};
223 0640 3080 movlw -128
224 0641 00B2 movwf ?a_lcd_gotoxy+1
225 0642 30C0 movlw -64
226 0643 00B3 movwf ?a_lcd_gotoxy+2
227 ;lcd_595.c: 164: lcd_checkbusy();
228 0644 2613 fcall _lcd_checkbusy
229 ;lcd_595.c: 165: lcd_writecom(base_y[y] + x);
230 0645 0830 movf ?_lcd_gotoxy,w
231 0646 3E32 addlw ?a_lcd_gotoxy+1
232 0647 0084 movwf 4
233 0648 1383 bcf 3,7
234 0649 0800 movf 0,w
235 064A 0731 addwf ?a_lcd_gotoxy,w
236 064B 2E19 ljmp _lcd_writecom
237
238 psect text4
239 ;lcd_595.c: 140: void lcd_initial(void)
240 ;lcd_595.c: 141: {
241 0572 _lcd_initial
242 ;lcd_595.c: 142: DelayMs(20);
243 0572 3014 movlw 20
244 0573 120A 118A 2553 fcall _DelayMs
245 ;lcd_595.c: 143: lcd_writecom(0x38);
246 0576 3038 movlw 56
247 0577 120A 118A 2619 fcall _lcd_writecom
248 ;lcd_595.c: 144: lcd_writecom(0x0c);
249 057A 300C movlw 12
250 057B 120A 118A 2619 fcall _lcd_writecom
251 ;lcd_595.c: 145: lcd_writecom(0x06);
252 057E 3006 movlw 6
253 057F 120A 118A 2619 fcall _lcd_writecom
+ 120A 118A
254 ;lcd_595.c: 146: TRISD3 = 0;
255 0584 1683 bsf 3,5
256 0585 1188 bcf 8,3
257 ;lcd_595.c: 147: RD3 = 1;
258 0586 1283 bcf 3,5
259 0587 1588 bsf 8,3
260 ;lcd_595.c: 148: }
261 0588 0008 return
262
263 psect text5
264 ;lcd_595.c: 152: void lcd_clear(void)
265 ;lcd_595.c: 153: {
266 0560 _lcd_clear
267 ;lcd_595.c: 154: lcd_writecom(0x01);
268 0560 3001 movlw 1
269 0561 120A 118A 2619 fcall _lcd_writecom
270 ;lcd_595.c: 155: DelayMs(2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -