📄 lcd_595.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-76266 Wed Jul 30 16:02:02 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 05EF _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 05EF 0183 clrf 3 ;select bank 0
39 05F0 00B2 movwf ?a_SEND_TO_HC595
40 ;lcd_595.c: 38: unsigned char tmp;
41 05F1 1683 bsf 3,5
42 05F2 1108 bcf 8,2
43 ;lcd_595.c: 42: TRISD1 = 0;
44 05F3 1088 bcf 8,1
45 ;lcd_595.c: 43: TRISD0 = 0;
46 05F4 1008 bcf 8,0
47 ;lcd_595.c: 44: RD2 = 1;
48 05F5 1283 bcf 3,5
49 05F6 1508 bsf 8,2
50 ;lcd_595.c: 45: RD1 = 1;
51 05F7 1488 bsf 8,1
52 ;lcd_595.c: 46: RD0 = 1;
53 05F8 1408 bsf 8,0
54 ;lcd_595.c: 48: tmp = console;
55 05F9 0831 movf ?_SEND_TO_HC595,w
56 05FA 00B4 movwf ?a_SEND_TO_HC595+2
57 ;lcd_595.c: 49: for(i=0;i<8;++i)
58 05FB 01B3 clrf ?a_SEND_TO_HC595+1
59 05FC l2
60 ;lcd_595.c: 50: {
61 ;lcd_595.c: 51: if((tmp&0x80)==0x80)
62 05FC 1FB4 btfss ?a_SEND_TO_HC595+2,7
63 05FD 2E00 goto l5
64 ;lcd_595.c: 52: {
65 05FE 1408 bsf 8,0
66 ;lcd_595.c: 54: }
67 05FF 2E01 goto l6
68 0600 l5
69 ;lcd_595.c: 56: {
70 0600 1008 bcf 8,0
71 0601 l6
72 ;lcd_595.c: 58: }
73 ;lcd_595.c: 59: RD2 = 0;
74 0601 1108 bcf 8,2
75 ;lcd_595.c: 60: RD2 = 1;
76 0602 1508 bsf 8,2
77 ;lcd_595.c: 61: tmp = tmp << 1;
78 0603 1003 bcf 3,0
79 0604 0DB4 rlf ?a_SEND_TO_HC595+2
80 ;lcd_595.c: 62: }
81 0605 0AB3 incf ?a_SEND_TO_HC595+1
82 0606 3008 movlw 8
83 0607 0233 subwf ?a_SEND_TO_HC595+1,w
84 0608 1C03 btfss 3,0
85 0609 2DFC goto l2
86 ;lcd_595.c: 64: tmp = data;
87 060A 0832 movf ?a_SEND_TO_HC595,w
88 060B 00B4 movwf ?a_SEND_TO_HC595+2
89 ;lcd_595.c: 65: for(i=0;i<8;++i)
90 060C 01B3 clrf ?a_SEND_TO_HC595+1
91 060D l7
92 ;lcd_595.c: 66: {
93 ;lcd_595.c: 67: if((tmp&0x80)==0x80)
94 060D 1FB4 btfss ?a_SEND_TO_HC595+2,7
95 060E 2E11 goto l10
96 ;lcd_595.c: 68: {
97 060F 1408 bsf 8,0
98 ;lcd_595.c: 70: }
99 0610 2E12 goto l11
100 0611 l10
101 ;lcd_595.c: 72: {
102 0611 1008 bcf 8,0
103 0612 l11
104 ;lcd_595.c: 74: }
105 ;lcd_595.c: 75: RD2 = 0;
106 0612 1108 bcf 8,2
107 ;lcd_595.c: 76: RD2 = 1;
108 0613 1508 bsf 8,2
109 ;lcd_595.c: 77: tmp = tmp << 1;
110 0614 1003 bcf 3,0
111 0615 0DB4 rlf ?a_SEND_TO_HC595+2
112 ;lcd_595.c: 78: }
113 0616 0AB3 incf ?a_SEND_TO_HC595+1
114 0617 3008 movlw 8
115 0618 0233 subwf ?a_SEND_TO_HC595+1,w
116 0619 1C03 btfss 3,0
117 061A 2E0D goto l7
118 ;lcd_595.c: 80: RD1 = 0;
119 061B 1088 bcf 8,1
120 ;lcd_595.c: 81: RD1 = 1;
121 061C 1488 bsf 8,1
122 ;lcd_595.c: 82: RD2 = 1;
123 061D 1508 bsf 8,2
124 ;lcd_595.c: 83: RD0 = 1;
125 061E 1408 bsf 8,0
126 ;lcd_595.c: 84: }
127 061F 0008 return
128 ;lcd_595.c: 88: void lcd_checkbusy(void)
129 ;lcd_595.c: 89: {
130 0620 _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 0620 3011 movlw 17
135 0621 0183 clrf 3 ;select bank 0
136 0622 00B1 movwf ?a_lcd_checkbusy
137 0623 l13
138 0623 0BB1 decfsz ?a_lcd_checkbusy
139 0624 2E23 goto l13
140 0625 0008 return
141 ;lcd_595.c: 96: void lcd_writecom(unsigned char
+ combyte)
142 ;lcd_595.c: 97: {
143 0626 _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 0626 0183 clrf 3 ;select bank 0
152 0627 00AE movwf ?a_lcd_writecom
153 ;lcd_595.c: 98: unsigned char lcd_com;
154 0628 2620 fcall _lcd_checkbusy
155 ;lcd_595.c: 101: lcd_com = combyte;
156 0629 082E movf ?a_lcd_writecom,w
157 062A 00B0 movwf ?a_lcd_writecom+2
158 ;lcd_595.c: 102: lcd_console = 0x00;
159 062B 01AF clrf ?a_lcd_writecom+1
160 ;lcd_595.c: 105: SEND_TO_HC595(lcd_com,lcd_cons
+ ole);
161 062C 01B1 clrf ?_SEND_TO_HC595
162 062D 25EF fcall _SEND_TO_HC595
163 ;lcd_595.c: 106: lcd_console = 0x02;
164 062E 3002 movlw 2
165 062F 00AF movwf ?a_lcd_writecom+1
166 ;lcd_595.c: 109: SEND_TO_HC595(lcd_com,lcd_cons
+ ole);
167 0630 00B1 movwf ?_SEND_TO_HC595
168 0631 0830 movf ?a_lcd_writecom+2,w
169 0632 25EF fcall _SEND_TO_HC595
170 ;lcd_595.c: 110: lcd_console = 0x00;
171 0633 01AF clrf ?a_lcd_writecom+1
172 ;lcd_595.c: 113: SEND_TO_HC595(lcd_com,lcd_cons
+ ole);
173 0634 01B1 clrf ?_SEND_TO_HC595
174 0635 0830 movf ?a_lcd_writecom+2,w
175 0636 2DEF ljmp _SEND_TO_HC595
176 ;lcd_595.c: 118: void lcd_writedata(unsigned ch
+ ar data)
177 ;lcd_595.c: 119: {
178 0637 _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 0637 0183 clrf 3 ;select bank 0
187 0638 00AE movwf ?a_lcd_writedata
188 ;lcd_595.c: 120: unsigned char lcd_data;
189 0639 2620 fcall _lcd_checkbusy
190 ;lcd_595.c: 123: lcd_data = data;
191 063A 082E movf ?a_lcd_writedata,w
192 063B 00B0 movwf ?a_lcd_writedata+2
193 ;lcd_595.c: 124: lcd_console = 0x08;
194 063C 3008 movlw 8
195 063D 00AF movwf ?a_lcd_writedata+1
196 ;lcd_595.c: 127: SEND_TO_HC595(lcd_data,lcd_con
+ sole);
197 063E 00B1 movwf ?_SEND_TO_HC595
198 063F 0830 movf ?a_lcd_writedata+2,w
199 0640 25EF fcall _SEND_TO_HC595
200 ;lcd_595.c: 128: lcd_console = 0x0A;
201 0641 300A movlw 10
202 0642 00AF movwf ?a_lcd_writedata+1
203 ;lcd_595.c: 131: SEND_TO_HC595(lcd_data,lcd_con
+ sole);
204 0643 00B1 movwf ?_SEND_TO_HC595
205 0644 0830 movf ?a_lcd_writedata+2,w
206 0645 25EF fcall _SEND_TO_HC595
207 ;lcd_595.c: 132: lcd_console = 0x08;
208 0646 3008 movlw 8
209 0647 00AF movwf ?a_lcd_writedata+1
210 ;lcd_595.c: 135: SEND_TO_HC595(lcd_data,lcd_con
+ sole);
211 0648 00B1 movwf ?_SEND_TO_HC595
212 0649 0830 movf ?a_lcd_writedata+2,w
213 064A 2DEF ljmp _SEND_TO_HC595
214 064B _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 064B 0183 clrf 3 ;select bank 0
221 064C 00AB movwf ?a_lcd_gotoxy
222 ;lcd_595.c: 163: unsigned char base_y[2]={0x80,
+ 0xc0};
223 064D 3080 movlw -128
224 064E 00AC movwf ?a_lcd_gotoxy+1
225 064F 30C0 movlw -64
226 0650 00AD movwf ?a_lcd_gotoxy+2
227 ;lcd_595.c: 164: lcd_checkbusy();
228 0651 2620 fcall _lcd_checkbusy
229 ;lcd_595.c: 165: lcd_writecom(base_y[y] + x);
230 0652 082A movf ?_lcd_gotoxy,w
231 0653 3E2C addlw ?a_lcd_gotoxy+1
232 0654 0084 movwf 4
233 0655 1383 bcf 3,7
234 0656 0800 movf 0,w
235 0657 072B addwf ?a_lcd_gotoxy,w
236 0658 2E26 ljmp _lcd_writecom
237
238 psect text4
239 ;lcd_595.c: 140: void lcd_initial(void)
240 ;lcd_595.c: 141: {
241 057F _lcd_initial
242 ;lcd_595.c: 142: DelayMs(20);
243 057F 3014 movlw 20
244 0580 120A 118A 2560 fcall _DelayMs
245 ;lcd_595.c: 143: lcd_writecom(0x38);
246 0583 3038 movlw 56
247 0584 120A 118A 2626 fcall _lcd_writecom
248 ;lcd_595.c: 144: lcd_writecom(0x0c);
249 0587 300C movlw 12
250 0588 120A 118A 2626 fcall _lcd_writecom
251 ;lcd_595.c: 145: lcd_writecom(0x06);
252 058B 3006 movlw 6
253 058C 120A 118A 2626 fcall _lcd_writecom
+ 120A 118A
254 ;lcd_595.c: 146: TRISD3 = 0;
255 0591 1683 bsf 3,5
256 0592 1188 bcf 8,3
257 ;lcd_595.c: 147: RD3 = 1;
258 0593 1283 bcf 3,5
259 0594 1588 bsf 8,3
260 ;lcd_595.c: 148: }
261 0595 0008 return
262
263 psect text5
264 ;lcd_595.c: 152: void lcd_clear(void)
265 ;lcd_595.c: 153: {
266 056D _lcd_clear
267 ;lcd_595.c: 154: lcd_writecom(0x01);
268 056D 3001 movlw 1
269 056E 120A 118A 2626 fcall _lcd_writecom
270 ;lcd_595.c: 155: DelayMs(2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -