📄 i2c.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-88888 Thu Dec 11 14:01:26 2008
Licensed to: ONE TWO
1 processor 16F688
2 opt pw 79
3 psect __Z88888RS_,global,delta=1
4 psect text0,local,class=CODE,delta=2
5 psect text9,local,class=CODE,delta=2
6 psect rbit_0,global,bit,class=BANK0,space=1,de
+ lta=1
7 0000
8 0000
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17
18 psect __Z88888RS_
19 0120
20 0120
21
22 psect text0
23 0427 _busDelay
24 0427 0000 nop ; ;#
25 0428 0000 nop ; ;#
26 0429 0000 nop ; ;#
27 042A 0000 nop ; ;#
28 042B 0000 nop ; ;#
29 ;i2c.c: 19: }
30 042C 0183 clrf 3 ;select bank 0
31 042D 0008 return
32 042E _IICStart
33 ;i2c.c: 23: RA5=0;
34 042E 0183 clrf 3 ;select bank 0
35 042F 1285 bcf 5,5
36 ;i2c.c: 24: RA4=1;
37 0430 1605 bsf 5,4
38 ;i2c.c: 25: busDelay();
39 0431 2427 fcall _busDelay
40 ;i2c.c: 26: RA5=1;
41 0432 1685 bsf 5,5
42 ;i2c.c: 27: busDelay();
43 0433 2427 fcall _busDelay
44 ;i2c.c: 28: RA4=0;
45 0434 1205 bcf 5,4
46 ;i2c.c: 29: busDelay();
47 0435 2427 fcall _busDelay
48 ;i2c.c: 30: RA5=0;
49 0436 1285 bcf 5,5
50 ;i2c.c: 31: RA4=1;
51 0437 1605 bsf 5,4
52 ;i2c.c: 32: }
53 0438 0008 return
54 0439 _IICStop
55 ;i2c.c: 37: RA5=0;
56 0439 0183 clrf 3 ;select bank 0
57 043A 1285 bcf 5,5
58 ;i2c.c: 38: RA4=0;
59 043B 1205 bcf 5,4
60 ;i2c.c: 39: busDelay();
61 043C 2427 fcall _busDelay
62 ;i2c.c: 40: RA5=1;
63 043D 1685 bsf 5,5
64 ;i2c.c: 41: busDelay();
65 043E 2427 fcall _busDelay
66 ;i2c.c: 42: RA4=1;
67 043F 1605 bsf 5,4
68 ;i2c.c: 43: busDelay();
69 0440 2427 fcall _busDelay
70 ;i2c.c: 44: RA5=0;
71 0441 1285 bcf 5,5
72 ;i2c.c: 45: }
73 0442 0008 return
74 0443 _IICACK
75 ;i2c.c: 62: RA4=0;
76 0443 0183 clrf 3 ;select bank 0
77 0444 1205 bcf 5,4
78 ;i2c.c: 63: RA5=1;
79 0445 1685 bsf 5,5
80 ;i2c.c: 64: busDelay();
81 0446 2427 fcall _busDelay
82 ;i2c.c: 65: RA5=0;
83 0447 1285 bcf 5,5
84 ;i2c.c: 66: RA4=1;
85 0448 1605 bsf 5,4
86 ;i2c.c: 67: }
87 0449 0008 return
88 044A _IICNoAck
89 ;i2c.c: 71: RA4=1;
90 044A 0183 clrf 3 ;select bank 0
91 044B 1605 bsf 5,4
92 ;i2c.c: 72: RA5=1;
93 044C 1685 bsf 5,5
94 ;i2c.c: 73: busDelay();
95 044D 2427 fcall _busDelay
96 ;i2c.c: 74: RA5=0;
97 044E 1285 bcf 5,5
98 ;i2c.c: 75: }
99 044F 0008 return
100 0450 _IICSendByte
101 ; _sendbyte assigned to ?a_IICSendByte+0
102 0000 _IICSendByte$sendbyte set ?a_IICSendByte
103 ; _j assigned to ?a_IICSendByte+1
104 0000 _IICSendByte$j set ?a_IICSendByte+1
105 ;_sendbyte stored from w
106 0450 0183 clrf 3 ;select bank 0
107 0451 00D1 movwf ?a_IICSendByte
108 ;i2c.c: 80: unsigned char j=8;
109 0452 3008 movlw 8
110 0453 00D2 movwf ?a_IICSendByte+1
111 ;i2c.c: 81: for(;j>0;j--)
112 0454 l12
113 ;i2c.c: 82: {
114 ;i2c.c: 83: RA5=0;
115 0454 1285 bcf 5,5
116 ;i2c.c: 84: busDelay();
117 0455 2427 fcall _busDelay
118 ;i2c.c: 85: sendbyte<<=1;
119 0456 1003 bcf 3,0
120 0457 0DD1 rlf ?a_IICSendByte
121 ;i2c.c: 86: RA4=CARRY;
122 0458 1C03 btfss 3,0
123 0459 2C5C goto u20
124 045A 1605 bsf 5,4
125 045B 2C5D goto u34
126 045C u20
127 045C 1205 bcf 5,4
128 045D u34
129 ;i2c.c: 87: busDelay();
130 045D 2427 fcall _busDelay
131 ;i2c.c: 88: RA5=1;
132 045E 1685 bsf 5,5
133 ;i2c.c: 89: busDelay();
134 045F 2427 fcall _busDelay
135 ;i2c.c: 90: }
136 0460 0BD2 decfsz ?a_IICSendByte+1
137 0461 2C54 goto l12
138 ;i2c.c: 91: RA5=0;
139 0462 1285 bcf 5,5
140 ;i2c.c: 92: }
141 0463 0008 return
142 ;i2c.c: 94: unsigned char IICReceiveByte(void)
143 ;i2c.c: 95: { char receivebyte,i=8;
144 0464 _IICReceiveByte
145 ; _i assigned to ?a_IICReceiveByte+0
146 0000 _IICReceiveByte$i set ?a_IICReceiveByte
147 ; _receivebyte assigned to ?a_IICReceiveByte+1
148 0000 _IICReceiveByte$receivebyte set ?a_IICReceiveBy
+ te+1
149 0464 3008 movlw 8
150 0465 0183 clrf 3 ;select bank 0
151 0466 00C2 movwf ?a_IICReceiveByte
152 ;i2c.c: 96: RA4=1;
153 0467 1605 bsf 5,4
154 ;i2c.c: 97: RA5=0;
155 0468 1285 bcf 5,5
156 ;i2c.c: 98: while(i--)
157 0469 2C72 goto l16
158 046A l17
159 ;i2c.c: 99: {
160 046A 1685 bsf 5,5
161 ;i2c.c: 101: busDelay();
162 046B 2427 fcall _busDelay
163 ;i2c.c: 102: receivebyte=(receivebyte<<1)|RA4;
164 046C 1003 bcf 3,0
165 046D 1A05 btfsc 5,4
166 046E 1403 bsf 3,0
167 046F 0DC3 rlf ?a_IICReceiveByte+1
168 ;i2c.c: 103: busDelay();
169 0470 2427 fcall _busDelay
170 ;i2c.c: 104: RA5=0;
171 0471 1285 bcf 5,5
172 0472 l16
173 ;i2c.c: 105: }
174 0472 03C2 decf ?a_IICReceiveByte
175 0473 0F42 incfsz ?a_IICReceiveByte,w
176 0474 2C6A goto l17
177 ;i2c.c: 106: return(receivebyte);
178 0475 0843 movf ?a_IICReceiveByte+1,w
179 ;i2c.c: 107: }
180 0476 0008 return
181 0477 _IICRecAck
182 ;i2c.c: 50: RA5=0;
183 0477 0183 clrf 3 ;select bank 0
184 0478 1285 bcf 5,5
185 ;i2c.c: 51: RA4=1;
186 0479 1605 bsf 5,4
187 ;i2c.c: 52: RA5=1;
188 047A 1685 bsf 5,5
189 ;i2c.c: 53: TRISA4=1;
190 047B 1683 bsf 3,5
191 047C 1605 bsf 5,4
192 ;i2c.c: 54: temp=RA4;
193 047D 1283 bcf 3,5
194 047E 1020 bcf _temp/(0+8),_temp& (0+7)
195 047F 1A05 btfsc 5,4
196 0480 1420 bsf _temp/(0+8),_temp& (0+7)
197 ;i2c.c: 55: RA5=0;
198 0481 1285 bcf 5,5
199 ;i2c.c: 56: TRISA4=0;
200 0482 1683 bsf 3,5
201 0483 1205 bcf 5,4
202 ;i2c.c: 57: return(temp);
203 0484 1003 bcf 3,0
204 0485 1283 bcf 3,5
205 0486 1820 btfsc _temp/(0+8),_temp& (0+7)
206 0487 1403 bsf 3,0
207 ;i2c.c: 58: }
208 0488 0008 return
209 0489 _I2C_WriteNByte
210 ; _chip assigned to ?a_I2C_WriteNByte+0
211 0000 _I2C_WriteNByte$chip set ?a_I2C_WriteNByte
212 ; _flag assigned to ?a_I2C_WriteNByte+1
213 0000 _I2C_WriteNByte$flag set ?a_I2C_WriteNByte+1
214 ; _r assigned to ?a_I2C_WriteNByte+2
215 0000 _I2C_WriteNByte$r set ?a_I2C_WriteNByte+2
216 ; _i assigned to ?a_I2C_WriteNByte+3
217 0000 _I2C_WriteNByte$i set ?a_I2C_WriteNByte+3
218 ;_chip stored from w
219 0489 0183 clrf 3 ;select bank 0
220 048A 00CD movwf ?a_I2C_WriteNByte
221 ;i2c.c: 181: unsigned char flag;
222 048B 01CE clrf ?a_I2C_WriteNByte+1
223 ;i2c.c: 184: r=3;
224 048C 3003 movlw 3
225 048D 00CF movwf ?a_I2C_WriteNByte+2
226 ;i2c.c: 185: while(r--)
227 048E 2CAC goto l20
228 048F l21
229 ;i2c.c: 186: { IICStart();
230 048F 242E 118A fcall _IICStart
231 ;i2c.c: 187: IICSendByte(chip);
232 0491 084D movf ?a_I2C_WriteNByte,w
233 0492 2450 fcall _IICSendByte
234 ;i2c.c: 188: if (IICRecAck())
235 0493 2477 fcall _IICRecAck
236 0494 1803 btfsc 3,0
237 0495 2CAC goto l20
238 ;i2c.c: 189: continue;
239 ;i2c.c: 190: IICSendByte(addr);
240 0496 084A movf ?_I2C_WriteNByte+1,w
241 0497 2450 fcall _IICSendByte
242 ;i2c.c: 191: if (IICRecAck())
243 0498 2477 fcall _IICRecAck
244 0499 1803 btfsc 3,0
245 049A 2CAC goto l20
246 ;i2c.c: 192: continue;
247 ;i2c.c: 193: for (i=0;i<sum;i++)
248 049B 01D0 clrf ?a_I2C_WriteNByte+3
249 049C l28
250 049C 084C movf ?_I2C_WriteNByte+3,w
251 049D 0250 subwf ?a_I2C_WriteNByte+3,w
252 049E 1803 btfsc 3,0
253 049F 2CA8 goto l26
254 ;i2c.c: 194: IICSendByte(*(p+i));
255 04A0 0850 movf ?a_I2C_WriteNByte+3,w
256 04A1 074B addwf ?_I2C_WriteNByte+2,w
257 04A2 0084 movwf 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -