📄 ds1302.lst
字号:
HI-TECH Software PICC Macro Assembler V9.50PL2
Sun Jun 10 22:45:02 2007
1 processor 16F877A
2 opt pw 79
3 psect text1,local,class=CODE,delta=2
4 psect text9,local,class=CODE,delta=2
5 psect rbss_0,global,class=BANK0,space=1,delta=
+ 1
6 0000
7 0000
8 0000
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16
17 psect text1
18 072A _r_byte
19 ; _i assigned to ?a_r_byte+0
20 0000 _r_byte$i set ?a_r_byte
21 ; _rb_data assigned to ?a_r_byte+1
22 0000 _r_byte$rb_data set ?a_r_byte+1
23 ;DS1302.c: 43: unsigned char r_byte(void)
24 072A 1683 bsf 3,5
25 072B 1303 bcf 3,6 ;carry unused
26 072C 1487 bsf 7,1 ;volatile
27 ;DS1302.c: 48: for(i=8; i>0; i--)
28 072D 3008 movlw 8
29 072E 1283 bcf 3,5
30 072F 00B1 movwf ?a_r_byte
31 0730 l8
32 ;DS1302.c: 49: {
33 0730 1022 bcf _pc_out,0
34 0731 0822 movf _pc_out,w
35 0732 0087 movwf 7 ;volatile
36 ;DS1302.c: 51: rb_data =rb_data >> 1;
37 0733 1003 bcf 3,0
38 0734 0CB2 rrf ?a_r_byte+1
39 ;DS1302.c: 52: rb_data=rb_data&0x7f;
40 0735 13B2 bcf ?a_r_byte+1,7
41 ;DS1302.c: 53: if(PORTC&0x02)
42 0736 1887 btfsc 7,1 ;volatile
43 ;DS1302.c: 54: rb_data=rb_data|0x80;
44 0737 17B2 bsf ?a_r_byte+1,7
45 ;DS1302.c: 55: PORTC=(pc_out|=0x01);
46 0738 1422 bsf _pc_out,0
47 0739 0822 movf _pc_out,w
48 073A 0087 movwf 7 ;volatile
49 073B 0BB1 decfsz ?a_r_byte
50 073C 2F30 goto l8
51 ;DS1302.c: 56: }
52 073D 1683 bsf 3,5
53 073E 1087 bcf 7,1 ;volatile
54 ;DS1302.c: 58: return(rb_data);
55 073F 1283 bcf 3,5
56 0740 0832 movf ?a_r_byte+1,w
57 ;DS1302.c: 59: }
58 0741 0008 return ;uses W
59 0742 _w_byte
60 ; _dat assigned to ?a_w_byte+0
61 0000 _w_byte$dat set ?a_w_byte
62 ; _i assigned to ?a_w_byte+1
63 0000 _w_byte$i set ?a_w_byte+1
64 ;_dat stored from w
65 0742 0183 clrf 3 ;select bank 0
66 0743 00B1 movwf ?a_w_byte
67 ;DS1302.c: 27: void w_byte(unsigned char dat)
68 0744 3008 movlw 8
69 0745 00B2 movwf ?a_w_byte+1
70 0746 l2
71 ;DS1302.c: 31: {
72 0746 1022 bcf _pc_out,0
73 0747 0822 movf _pc_out,w
74 0748 0087 movwf 7 ;volatile
75 ;DS1302.c: 33: if(!(dat&0x01))
76 0749 1831 btfsc ?a_w_byte,0
77 074A 2F4D goto l5
78 ;DS1302.c: 34: PORTC=(pc_out&=~0x02);
79 074B 10A2 bcf _pc_out,1
80 074C 2F4E goto L1
81 074D l5
82 ;DS1302.c: 35: else
83 074D 14A2 bsf _pc_out,1
84 074E L1
85 074E 0822 movf _pc_out,w
86 074F 0087 movwf 7 ;volatile
87 ;DS1302.c: 37: PORTC=(pc_out|=0x01);
88 0750 1422 bsf _pc_out,0
89 0751 0822 movf _pc_out,w
90 0752 0087 movwf 7 ;volatile
91 ;DS1302.c: 38: dat = dat >> 1;
92 0753 1003 bcf 3,0
93 0754 0CB1 rrf ?a_w_byte
94 0755 0BB2 decfsz ?a_w_byte+1
95 0756 2F46 goto l2
96 0757 0008 return
97 0758 _write_byte
98 ; _addr assigned to ?a_write_byte+0
99 0000 _write_byte$addr set ?a_write_byte
100 ;_addr stored from w
101 0758 0183 clrf 3 ;select bank 0
102 0759 00B0 movwf ?a_write_byte
103 ;DS1302.c: 62: void write_byte(unsigned char ad
+ dr, unsigned char dat)
104 075A 1022 bcf _pc_out,0
105 075B 0822 movf _pc_out,w
106 075C 0087 movwf 7 ;volatile
107 ;DS1302.c: 64: PORTC=(pc_out&=~0x04);
108 075D 1122 bcf _pc_out,2
109 075E 0822 movf _pc_out,w
110 075F 0087 movwf 7 ;volatile
111 ;DS1302.c: 65: PORTC=(pc_out|=0x04);
112 0760 1522 bsf _pc_out,2
113 0761 0822 movf _pc_out,w
114 0762 0087 movwf 7 ;volatile
115 ;DS1302.c: 66: w_byte(addr);
116 0763 0830 movf ?a_write_byte,w
117 0764 2742 fcall _w_byte
118 ;DS1302.c: 67: w_byte(dat);
119 0765 082F movf ?_write_byte,w
120 0766 2742 fcall _w_byte
121 ;DS1302.c: 68: PORTC=(pc_out&=~0x04);
122 0767 1122 bcf _pc_out,2
123 0768 0822 movf _pc_out,w
124 0769 0087 movwf 7 ;volatile
125 ;DS1302.c: 69: }
126 076A 0008 return ;W free
127 076B _read_byte
128 ; _addr assigned to ?a_read_byte+0
129 0000 _read_byte$addr set ?a_read_byte
130 ; _ucData assigned to ?a_read_byte+1
131 0000 _read_byte$ucData set ?a_read_byte+1
132 ;_addr stored from w
133 076B 0183 clrf 3 ;select bank 0
134 076C 00AF movwf ?a_read_byte
135 ;DS1302.c: 72: unsigned char read_byte(unsigned
+ char addr)
136 076D 1022 bcf _pc_out,0
137 076E 0822 movf _pc_out,w
138 076F 0087 movwf 7 ;volatile
139 ;DS1302.c: 76: PORTC=(pc_out&=~0x04);
140 0770 1122 bcf _pc_out,2
141 0771 0822 movf _pc_out,w
142 0772 0087 movwf 7 ;volatile
143 ;DS1302.c: 77: PORTC=(pc_out|=0x04);
144 0773 1522 bsf _pc_out,2
145 0774 0822 movf _pc_out,w
146 0775 0087 movwf 7 ;volatile
147 ;DS1302.c: 78: w_byte(addr);
148 0776 082F movf ?a_read_byte,w
149 0777 2742 fcall _w_byte
150 ;DS1302.c: 79: ucData = r_byte();
151 0778 272A fcall _r_byte
152 0779 00B0 movwf ?a_read_byte+1
153 ;DS1302.c: 80: PORTC=(pc_out&=~0x04);
154 077A 1122 bcf _pc_out,2
155 077B 0822 movf _pc_out,w
156 077C 0087 movwf 7 ;volatile
157 ;DS1302.c: 81: return(ucData);
158 077D 0830 movf ?a_read_byte+1,w
159 ;DS1302.c: 82: }
160 077E 0008 return ;uses W
161 077F _write_ds1302
162 ; _p assigned to ?a_write_ds1302+0
163 0000 _write_ds1302$p set ?a_write_ds1302
164 ; _i assigned to ?a_write_ds1302+1
165 0000 _write_ds1302$i set ?a_write_ds1302+1
166 ; _addr assigned to ?a_write_ds1302+2
167 0000 _write_ds1302$addr set ?a_write_ds1302+2
168 ;_p stored from w
169 077F 0183 clrf 3 ;select bank 0
170 0780 00AC movwf ?a_write_ds1302
171 ;DS1302.c: 85: void write_ds1302(unsigned char
+ *p)
172 0781 3080 movlw -128
173 0782 00AE movwf ?a_write_ds1302+2
174 ;DS1302.c: 89: write_byte(0x8e,0x00);
175 0783 01AF clrf ?_write_byte
176 0784 308E movlw -114
177 0785 2758 120A 118A fcall _write_byte
178 ;DS1302.c: 90: for(i =7; i>0; i--)
179 0788 3007 movlw 7
180 0789 00AD movwf ?a_write_ds1302+1
181 078A l15
182 ;DS1302.c: 91: {
183 078A 082C movf ?a_write_ds1302,w
184 078B 0084 movwf 4
185 078C 1383 bcf 3,7
186 078D 0800 movf 0,w
187 078E 00AF movwf ?_write_byte
188 078F 082E movf ?a_write_ds1302+2,w
189 0790 2758 120A 118A fcall _write_byte
190 ;DS1302.c: 93: p++;
191 0793 0AAC incf ?a_write_ds1302
192 ;DS1302.c: 94: addr +=2;
193 0794 3002 movlw 2
194 0795 07AE addwf ?a_write_ds1302+2
195 0796 0BAD decfsz ?a_write_ds1302+1
196 0797 2F8A goto l15
197 ;DS1302.c: 95: }
198 0798 3080 movlw -128
199 0799 00AF movwf ?_write_byte
200 079A 308E movlw -114
201 079B 2F58 ljmp _write_byte
202 079C _DS1302_INIT
203 ;DS1302.c: 119: void DS1302_INIT(void)
204 079C 30F8 movlw -8
205 079D 1683 bsf 3,5
206 079E 1303 bcf 3,6 ;carry unused
207 079F 0587 andwf 7 ;volatile
208 ;DS1302.c: 126: ds_emp[0]=0x30;
209 07A0 3030 movlw 48
210 07A1 1283 bcf 3,5
211 07A2 00A5 movwf _ds_emp
212 ;DS1302.c: 127: ds_emp[1]=0x30;
213 07A3 00A6 movwf _ds_emp+1
214 ;DS1302.c: 128: ds_emp[2]=0x12;
215 07A4 3012 movlw 18
216 07A5 00A7 movwf _ds_emp+2
217 ;DS1302.c: 129: ds_emp[3]=0x08;
218 07A6 3008 movlw 8
219 07A7 00A8 movwf _ds_emp+3
220 ;DS1302.c: 130: ds_emp[4]=0x03;
221 07A8 3003 movlw 3
222 07A9 00A9 movwf _ds_emp+4
223 ;DS1302.c: 131: ds_emp[5]=0x04;
224 07AA 3004 movlw 4
225 07AB 00AA movwf _ds_emp+5
226 ;DS1302.c: 132: ds_emp[6]=0x07;
227 07AC 3007 movlw 7
228 07AD 00AB movwf _ds_emp+6
229 ;DS1302.c: 133: write_ds1302(ds_emp);
230 07AE 3025 movlw _ds_emp
231 07AF 277F 120A 118A fcall _write_ds1302
232 ;DS1302.c: 134: write_byte(0x8e,0x00);
233 07B2 01AF clrf ?_write_byte
234 07B3 308E movlw -114
235 07B4 2758 120A 118A fcall _write_byte
236 ;DS1302.c: 135: write_byte(0x90,0xAB);
237 07B7 30AB movlw -85
238 07B8 00AF movwf ?_write_byte
239 07B9 3090 movlw -112
240 07BA 2758 120A 118A fcall _write_byte
241 ;DS1302.c: 136: write_byte(0x8e,0x80);
242 07BD 3080 movlw -128
243 07BE 00AF movwf ?_write_byte
244 07BF 308E movlw -114
245 07C0 2F58 ljmp _write_byte
246 07C1 _DS1302_DATA
247 ;DS1302.c: 140: void DS1302_DATA(void)
248 07C1 30F8 movlw -8
249 07C2 1683 bsf 3,5
250 07C3 1303 bcf 3,6 ;carry unused
251 07C4 0587 andwf 7 ;volatile
252 ;DS1302.c: 147: ds_emp[0]=0x30;
253 07C5 3030 movlw 48
254 07C6 1283 bcf 3,5
255 07C7 00A5 movwf _ds_emp
256 ;DS1302.c: 148: ds_emp[1]=0x30;
257 07C8 00A6 movwf _ds_emp+1
258 ;DS1302.c: 149: ds_emp[2]=0x12;
259 07C9 3012 movlw 18
260 07CA 00A7 movwf _ds_emp+2
261 ;DS1302.c: 150: ds_emp[3]=0x08;
262 07CB 3008 movlw 8
263 07CC 00A8 movwf _ds_emp+3
264 ;DS1302.c: 151: ds_emp[4]=0x03;
265 07CD 3003 movlw 3
266 07CE 00A9 movwf _ds_emp+4
267 ;DS1302.c: 152: ds_emp[5]=0x04;
268 07CF 3004 movlw 4
269 07D0 00AA movwf _ds_emp+5
270 ;DS1302.c: 153: ds_emp[6]=0x07;
271 07D1 3007 movlw 7
272 07D2 00AB movwf _ds_emp+6
273 ;DS1302.c: 154: write_ds1302(ds_emp);
274 07D3 3025 movlw _ds_emp
275 07D4 2F7F ljmp _write_ds1302
276 07D5 _read_ds1302
277 ; _p assigned to ?a_read_ds1302+0
278 0000 _read_ds1302$p set ?a_read_ds1302
279 ; _addr assigned to ?a_read_ds1302+1
280 0000 _read_ds1302$addr set ?a_read_ds1302+1
281 ; _i assigned to ?a_read_ds1302+2
282 0000 _read_ds1302$i set ?a_read_ds1302+2
283 ;_p stored from w
284 07D5 0183 clrf 3 ;select bank 0
285 07D6 00AC movwf ?a_read_ds1302
286 ;DS1302.c: 100: void read_ds1302(unsigned char
+ *p)
287 07D7 3081 movlw -127
288 07D8 00AD movwf ?a_read_ds1302+1
289 ;DS1302.c: 107: TRISC&=0Xf8;;
290 07D9 30F8 movlw -8
291 07DA 1683 bsf 3,5
292 07DB 0587 andwf 7 ;volatile
293 ;DS1302.c: 109: for (i=0; i<7; i++)
294 07DC 1283 bcf 3,5
295 07DD 01AE clrf ?a_read_ds1302+2
296 07DE l19
297 ;DS1302.c: 110: {
298 07DE 082C movf ?a_read_ds1302,w
299 07DF 0084 movwf 4
300 07E0 1383 bcf 3,7
301 07E1 082D movf ?a_read_ds1302+1,w
302 07E2 276B 120A 118A fcall _read_byte
303 07E5 1383 bcf 3,7
304 07E6 0080 movwf 0
305 ;DS1302.c: 112: addr += 2;
306 07E7 3002 movlw 2
307 07E8 07AD addwf ?a_read_ds1302+1
308 ;DS1302.c: 113: p++;
309 07E9 0AAC incf ?a_read_ds1302
310 07EA 0AAE incf ?a_read_ds1302+2
311 07EB 3007 movlw 7
312 07EC 022E subwf ?a_read_ds1302+2,w
313 07ED 1803 btfsc 3,0
314 07EE 0008 return
315 07EF 2FDE goto l19
316 07F0 _main
317 ;DS1302.c: 158: main()
318 07F0 27C1 120A 118A fcall _DS1302_DATA
319 ;DS1302.c: 164: DS1302_INIT();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -