📄 i2c.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-88888 Tue Feb 10 14:15:16 2009
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 029E _busDelay
24 029E 0000 nop ; ;#
25 029F 0000 nop ; ;#
26 02A0 0000 nop ; ;#
27 02A1 0000 nop ; ;#
28 02A2 0000 nop ; ;#
29 ;i2c.c: 19: }
30 02A3 0183 clrf 3 ;select bank 0
31 02A4 0008 return
32 02A5 _IICStart
33 ;i2c.c: 23: RC2=0;
34 02A5 0183 clrf 3 ;select bank 0
35 02A6 1107 bcf 7,2
36 ;i2c.c: 24: RC1=1;
37 02A7 1487 bsf 7,1
38 ;i2c.c: 25: busDelay();
39 02A8 229E fcall _busDelay
40 ;i2c.c: 26: RC2=1;
41 02A9 1507 bsf 7,2
42 ;i2c.c: 27: busDelay();
43 02AA 229E fcall _busDelay
44 ;i2c.c: 28: RC1=0;
45 02AB 1087 bcf 7,1
46 ;i2c.c: 29: busDelay();
47 02AC 229E fcall _busDelay
48 ;i2c.c: 30: RC2=0;
49 02AD 1107 bcf 7,2
50 ;i2c.c: 31: RC1=1;
51 02AE 1487 bsf 7,1
52 ;i2c.c: 32: }
53 02AF 0008 return
54 02B0 _IICStop
55 ;i2c.c: 37: RC2=0;
56 02B0 0183 clrf 3 ;select bank 0
57 02B1 1107 bcf 7,2
58 ;i2c.c: 38: RC1=0;
59 02B2 1087 bcf 7,1
60 ;i2c.c: 39: busDelay();
61 02B3 229E fcall _busDelay
62 ;i2c.c: 40: RC2=1;
63 02B4 1507 bsf 7,2
64 ;i2c.c: 41: busDelay();
65 02B5 229E fcall _busDelay
66 ;i2c.c: 42: RC1=1;
67 02B6 1487 bsf 7,1
68 ;i2c.c: 43: busDelay();
69 02B7 229E fcall _busDelay
70 ;i2c.c: 44: RC2=0;
71 02B8 1107 bcf 7,2
72 ;i2c.c: 45: }
73 02B9 0008 return
74 02BA _IICACK
75 ;i2c.c: 62: RC1=0;
76 02BA 0183 clrf 3 ;select bank 0
77 02BB 1087 bcf 7,1
78 ;i2c.c: 63: RC2=1;
79 02BC 1507 bsf 7,2
80 ;i2c.c: 64: busDelay();
81 02BD 229E fcall _busDelay
82 ;i2c.c: 65: RC2=0;
83 02BE 1107 bcf 7,2
84 ;i2c.c: 66: RC1=1;
85 02BF 1487 bsf 7,1
86 ;i2c.c: 67: }
87 02C0 0008 return
88 02C1 _IICNoAck
89 ;i2c.c: 71: RC1=1;
90 02C1 0183 clrf 3 ;select bank 0
91 02C2 1487 bsf 7,1
92 ;i2c.c: 72: RC2=1;
93 02C3 1507 bsf 7,2
94 ;i2c.c: 73: busDelay();
95 02C4 229E fcall _busDelay
96 ;i2c.c: 74: RC2=0;
97 02C5 1107 bcf 7,2
98 ;i2c.c: 75: }
99 02C6 0008 return
100 02C7 _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 02C7 0183 clrf 3 ;select bank 0
107 02C8 00B9 movwf ?a_IICSendByte
108 ;i2c.c: 80: unsigned char j=8;
109 02C9 3008 movlw 8
110 02CA 00BA movwf ?a_IICSendByte+1
111 ;i2c.c: 81: for(;j>0;j--)
112 02CB l13
113 ;i2c.c: 82: {
114 ;i2c.c: 83: RC2=0;
115 02CB 1107 bcf 7,2
116 ;i2c.c: 84: busDelay();
117 02CC 229E fcall _busDelay
118 ;i2c.c: 85: sendbyte<<=1;
119 02CD 1003 bcf 3,0
120 02CE 0DB9 rlf ?a_IICSendByte
121 ;i2c.c: 86: RC1=CARRY;
122 02CF 1C03 btfss 3,0
123 02D0 2AD3 goto u20
124 02D1 1487 bsf 7,1
125 02D2 2AD4 goto u34
126 02D3 u20
127 02D3 1087 bcf 7,1
128 02D4 u34
129 ;i2c.c: 87: busDelay();
130 02D4 229E fcall _busDelay
131 ;i2c.c: 88: RC2=1;
132 02D5 1507 bsf 7,2
133 ;i2c.c: 89: busDelay();
134 02D6 229E fcall _busDelay
135 ;i2c.c: 90: }
136 02D7 0BBA decfsz ?a_IICSendByte+1
137 02D8 2ACB goto l13
138 ;i2c.c: 91: RC2=0;
139 02D9 1107 bcf 7,2
140 ;i2c.c: 92: }
141 02DA 0008 return
142 ;i2c.c: 94: unsigned char IICReceiveByte(void)
143 ;i2c.c: 95: { char receivebyte,i=8;
144 02DB _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 02DB 3008 movlw 8
150 02DC 0183 clrf 3 ;select bank 0
151 02DD 00AA movwf ?a_IICReceiveByte
152 ;i2c.c: 96: RC1=1;
153 02DE 1487 bsf 7,1
154 ;i2c.c: 97: RC2=0;
155 02DF 1107 bcf 7,2
156 ;i2c.c: 98: while(i--)
157 02E0 2AE9 goto l17
158 02E1 l18
159 ;i2c.c: 99: {
160 02E1 1507 bsf 7,2
161 ;i2c.c: 101: busDelay();
162 02E2 229E fcall _busDelay
163 ;i2c.c: 102: receivebyte=(receivebyte<<1)|RC1;
164 02E3 1003 bcf 3,0
165 02E4 1887 btfsc 7,1
166 02E5 1403 bsf 3,0
167 02E6 0DAB rlf ?a_IICReceiveByte+1
168 ;i2c.c: 103: busDelay();
169 02E7 229E fcall _busDelay
170 ;i2c.c: 104: RC2=0;
171 02E8 1107 bcf 7,2
172 02E9 l17
173 ;i2c.c: 105: }
174 02E9 03AA decf ?a_IICReceiveByte
175 02EA 0F2A incfsz ?a_IICReceiveByte,w
176 02EB 2AE1 goto l18
177 ;i2c.c: 106: return(receivebyte);
178 02EC 082B movf ?a_IICReceiveByte+1,w
179 ;i2c.c: 107: }
180 02ED 0008 return
181 02EE _IICRecAck
182 ;i2c.c: 50: RC2=0;
183 02EE 0183 clrf 3 ;select bank 0
184 02EF 1107 bcf 7,2
185 ;i2c.c: 51: RC1=1;
186 02F0 1487 bsf 7,1
187 ;i2c.c: 52: RC2=1;
188 02F1 1507 bsf 7,2
189 ;i2c.c: 53: TRISA4=1;
190 02F2 1683 bsf 3,5
191 02F3 1605 bsf 5,4
192 ;i2c.c: 54: temp=RC1;
193 02F4 1283 bcf 3,5
194 02F5 1020 bcf _temp/(0+8),_temp& (0+7)
195 02F6 1887 btfsc 7,1
196 02F7 1420 bsf _temp/(0+8),_temp& (0+7)
197 ;i2c.c: 55: RC2=0;
198 02F8 1107 bcf 7,2
199 ;i2c.c: 56: TRISA4=0;
200 02F9 1683 bsf 3,5
201 02FA 1205 bcf 5,4
202 ;i2c.c: 57: return(temp);
203 02FB 1003 bcf 3,0
204 02FC 1283 bcf 3,5
205 02FD 1820 btfsc _temp/(0+8),_temp& (0+7)
206 02FE 1403 bsf 3,0
207 ;i2c.c: 58: }
208 02FF 0008 return
209 0300 _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 0300 0183 clrf 3 ;select bank 0
220 0301 00B5 movwf ?a_I2C_WriteNByte
221 ;i2c.c: 181: unsigned char flag;
222 0302 01B6 clrf ?a_I2C_WriteNByte+1
223 ;i2c.c: 184: r=3;
224 0303 3003 movlw 3
225 0304 00B7 movwf ?a_I2C_WriteNByte+2
226 ;i2c.c: 185: while(r--)
227 0305 2B23 goto l21
228 0306 l22
229 ;i2c.c: 186: { IICStart();
230 0306 22A5 118A fcall _IICStart
231 ;i2c.c: 187: IICSendByte(chip);
232 0308 0835 movf ?a_I2C_WriteNByte,w
233 0309 22C7 fcall _IICSendByte
234 ;i2c.c: 188: if (IICRecAck())
235 030A 22EE fcall _IICRecAck
236 030B 1803 btfsc 3,0
237 030C 2B23 goto l21
238 ;i2c.c: 189: continue;
239 ;i2c.c: 190: IICSendByte(addr);
240 030D 0832 movf ?_I2C_WriteNByte+1,w
241 030E 22C7 fcall _IICSendByte
242 ;i2c.c: 191: if (IICRecAck())
243 030F 22EE fcall _IICRecAck
244 0310 1803 btfsc 3,0
245 0311 2B23 goto l21
246 ;i2c.c: 192: continue;
247 ;i2c.c: 193: for (i=0;i<sum;i++)
248 0312 01B8 clrf ?a_I2C_WriteNByte+3
249 0313 l29
250 0313 0834 movf ?_I2C_WriteNByte+3,w
251 0314 0238 subwf ?a_I2C_WriteNByte+3,w
252 0315 1803 btfsc 3,0
253 0316 2B1F goto l27
254 ;i2c.c: 194: IICSendByte(*(p+i));
255 0317 0838 movf ?a_I2C_WriteNByte+3,w
256 0318 0733 addwf ?_I2C_WriteNByte+2,w
257 0319 0084 movwf 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -