📄 iic.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL2
Serial number: HCPIC-42044 Mon Apr 24 21:02:12 2006
Licensed to: ONE
1 processor 16F873A
2 opt pw 79
3 psect __Z42044RS_,global,delta=1
4 psect text2,local,class=CODE,delta=2
5 psect text4,local,class=CODE,delta=2
6 psect text10,local,class=CODE,delta=2
7 psect rbss_0,global,class=BANK0,space=1,delta=
+ 1
8 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19
20 psect __Z42044RS_
21 00C8
22 00C8
23
24 psect text2
25 ;iic.c: 26: void i2c_restart()
26 ;iic.c: 27: {
27 0CEC _i2c_restart
28 ;iic.c: 28: RSEN=1;
29 0CEC 1683 bsf 3,5
30 0CED 1303 bcf 3,6 ;carry unused
31 0CEE 1491 bsf 17,1
32 0CEF l12
33 ;iic.c: 29: do{
34 ;iic.c: 30: ;
35 0CEF 1283 bcf 3,5
36 0CF0 1D8C btfss 12,3
37 0CF1 2CEF goto l12
38 ;iic.c: 32: SSPIF=0;
39 0CF2 118C bcf 12,3
40 ;iic.c: 33: }
41 0CF3 0008 return
42 ;iic.c: 59: void i2c_datainlast()
43 ;iic.c: 60: {
44 0CF4 _i2c_datainlast
45 ;iic.c: 61: SSPIF=0;
46 0CF4 0183 clrf 3 ;select bank 0
47 0CF5 118C bcf 12,3
48 ;iic.c: 62: RCEN=1;
49 0CF6 1683 bsf 3,5
50 0CF7 1591 bsf 17,3
51 0CF8 l27
52 ;iic.c: 63: do{
53 ;iic.c: 64: ;
54 0CF8 1283 bcf 3,5
55 0CF9 1D8C btfss 12,3
56 0CFA 2CF8 goto l27
57 ;iic.c: 66: SSPIF=0;
58 0CFB 118C bcf 12,3
59 ;iic.c: 67: receive=SSPBUF;
60 0CFC 0813 movf 19,w ;volatile
61 0CFD 00A3 movwf _receive
62 ;iic.c: 68: ACKDT=1 ;
63 0CFE 1683 bsf 3,5
64 0CFF 1691 bsf 17,5
65 ;iic.c: 69: ACKEN=1;
66 0D00 1611 bsf 17,4
67 0D01 l30
68 ;iic.c: 70: do{
69 ;iic.c: 71: ;
70 0D01 1283 bcf 3,5
71 0D02 1D8C btfss 12,3
72 0D03 2D01 goto l30
73 ;iic.c: 73: SSPIF=0;
74 0D04 118C bcf 12,3
75 ;iic.c: 75: }
76 0D05 0008 return
77 ;iic.c: 17: void i2c_stop()
78 ;iic.c: 18: {
79 0D06 _i2c_stop
80 ;iic.c: 19: PEN=1;
81 0D06 1683 bsf 3,5
82 0D07 1303 bcf 3,6 ;carry unused
83 0D08 1511 bsf 17,2
84 0D09 l8
85 ;iic.c: 20: do{
86 ;iic.c: 21: ;
87 0D09 1283 bcf 3,5
88 0D0A 1D8C btfss 12,3
89 0D0B 2D09 goto l8
90 ;iic.c: 23: SSPIF=0;
91 0D0C 118C bcf 12,3
92 ;iic.c: 24: }
93 0D0D 0008 return
94 ;iic.c: 77: void i2c_error()
95 ;iic.c: 78: {
96 0D0E _i2c_error
97 ;iic.c: 79: i2c_stop();
98 0D0E 2D06 ljmp _i2c_stop
99 ;iic.c: 81: }
100 0D0F 0008 return
101 ;iic.c: 83: void write(unsigned int addr,unsign
+ ed char data,unsigned int n)
102 ;iic.c: 84: {
103 ; param _addr assigned to ?_write+0
104 0000 _write$addr set ?_write
105 ; param _data assigned to ?_write+2
106 0000 _write$data set ?_write+2
107 ; param _n assigned to ?_write+3
108 0000 _write$n set ?_write+3
109 ;iic.c: 35: void i2c_dataout()
110 ;iic.c: 36: {
111 0D10 _i2c_dataout
112 0D10 l16
113 ;iic.c: 37: do{
114 ;iic.c: 38: ;
115 0D10 0183 clrf 3 ;select bank 0
116 0D11 1D8C btfss 12,3
117 0D12 2D10 goto l16
118 ;iic.c: 40: SSPIF=0;
119 0D13 118C bcf 12,3
120 ;iic.c: 41: }
121 0D14 0008 return
122 0D15 _i2c_start
123 ;iic.c: 11: SEN=1;
124 0D15 1683 bsf 3,5
125 0D16 1303 bcf 3,6 ;carry unused
126 0D17 1411 bsf 17,0
127 0D18 l4
128 ;iic.c: 12: do{
129 ;iic.c: 13: }while(SSPIF==0);
130 0D18 1283 bcf 3,5
131 0D19 1D8C btfss 12,3
132 0D1A 2D18 goto l4
133 ;iic.c: 14: SSPIF=0;
134 0D1B 118C bcf 12,3
135 ;iic.c: 15: }
136 0D1C 0008 return
137 0D1D _write
138 ;iic.c: 85: i2c_start();
139 0D1D 2515 fcall _i2c_start
140 ;iic.c: 86: SSPBUF=0xA0;
141 0D1E 30A0 movlw -96
142 0D1F 0093 movwf 19 ;volatile
143 ;iic.c: 87: i2c_dataout();
144 0D20 2510 fcall _i2c_dataout
145 ;iic.c: 89: if(ACKSTAT)
146 0D21 1683 bsf 3,5
147 0D22 1F11 btfss 17,6
148 0D23 2D26 goto l33
149 ;iic.c: 90: i2c_error();
150 ;iic.c: 79: i2c_stop();
151 0D24 2506 fcall _i2c_stop
152 ;iic.c: 91: else if(!ACKSTAT)
153 0D25 2D2B goto l34
154 0D26 l33
155 0D26 1B11 btfsc 17,6
156 0D27 2D2B goto l34
157 ;iic.c: 92: SSPBUF=addr/256;
158 0D28 1283 bcf 3,5
159 0D29 0834 movf ?_write+1,w
160 0D2A 0093 movwf 19 ;volatile
161 ;iic.c: 94: i2c_dataout();
162 0D2B l34
163 0D2B 2510 fcall _i2c_dataout
164 ;iic.c: 96: if(ACKSTAT)
165 0D2C 1683 bsf 3,5
166 0D2D 1F11 btfss 17,6
167 0D2E 2D31 goto l36
168 ;iic.c: 97: i2c_error();
169 ;iic.c: 79: i2c_stop();
170 0D2F 2506 fcall _i2c_stop
171 ;iic.c: 98: else if(!ACKSTAT)
172 0D30 2D36 goto l37
173 0D31 l36
174 0D31 1B11 btfsc 17,6
175 0D32 2D36 goto l37
176 ;iic.c: 99: SSPBUF=addr%256;
177 0D33 1283 bcf 3,5
178 0D34 0833 movf ?_write,w
179 0D35 0093 movwf 19 ;volatile
180 ;iic.c: 100: i2c_dataout();
181 0D36 l37
182 0D36 2510 fcall _i2c_dataout
183 ;iic.c: 102: for(i=0;i<n;++i)
184 0D37 01A2 clrf _i
185 0D38 l42
186 0D38 0822 movf _i,w
187 0D39 00BC movwf btemp
188 0D3A 01BD clrf btemp+1
189 0D3B 0837 movf ?_write+4,w
190 0D3C 023D subwf btemp+1,w
191 0D3D 1D03 btfss 3,2
192 0D3E 2D41 goto u155
193 0D3F 0836 movf ?_write+3,w
194 0D40 023C subwf btemp,w
195 0D41 u155
196 ;iic.c: 103: {
197 ;iic.c: 104: if(ACKSTAT)
198 0D41 1683 bsf 3,5
199 0D42 1803 btfsc 3,0
200 0D43 2D50 goto L1
201 0D44 1F11 btfss 17,6
202 0D45 2D48 goto l43
203 ;iic.c: 105: i2c_error();
204 ;iic.c: 79: i2c_stop();
205 0D46 2506 fcall _i2c_stop
206 ;iic.c: 106: else if(!ACKSTAT)
207 0D47 2D4D goto l44
208 0D48 l43
209 0D48 1B11 btfsc 17,6
210 0D49 2D4D goto l44
211 ;iic.c: 107: SSPBUF=data;
212 0D4A 1283 bcf 3,5
213 0D4B 0835 movf ?_write+2,w
214 0D4C 0093 movwf 19 ;volatile
215 ;iic.c: 108: i2c_dataout();
216 0D4D l44
217 0D4D 2510 fcall _i2c_dataout
218 ;iic.c: 109: }
219 0D4E 0AA2 incf _i
220 0D4F 2D38 goto l42
221 ;iic.c: 111: if(ACKSTAT)
222 0D50 L1
223 0D50 1F11 btfss 17,6
224 0D51 2D53 goto l46
225 ;iic.c: 112: i2c_error();
226 ;iic.c: 79: i2c_stop();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -