📄 func.lst
字号:
; 170: {
170 0000 @I2C_Ack .SECTION 'CODE'
170 0000 PUBLIC _I2C_Ack
170 0000 _I2C_Ack PROC
; 172: SCL_OUT(); /*设置端口为输出*/
172 0000 3595 CLR __pbc.3
; 173: SDA_OUT();
173 0001 3419 CLR __pdc.0
; 174: I2C_SCL = 1;
174 0002 3194 SET [014H].3
; 175: I2C_SDA = 1;
175 0003 3018 SET [018H].0
; 176: SDA_IN();
176 0004 3019 SET __pdc.0
文件:FUNC.C 盛群编译器版本 2.86 页次6
; 177: _delay(DLY_TIME);
177 0005 0F01 MOV A,01H
177 0006 2000 E CALL __DELAYX2
; 178: dat = I2C_SDA;
178 0007 3400 R CLR CR8
178 0008 3C18 SZ [018H].0
178 0009 3000 R SET CR8
; 179: I2C_SCL = 0;
179 000A 3594 CLR [014H].3
文件:FUNC.c 盛群编译器版本 2.86 页次7
; 180: _delay(DLY_TIME);
180 000B 0F01 MOV A,01H
180 000C 2000 E CALL __DELAYX2
; 181: return dat;
181 000D 1F00 R CLR b0_7
181 000E 3C00 R SZ CR8
181 000F 3000 R SET b0_7.0
181 0010 0700 R MOV A,b0_7
181 0011 L23:
181 0011 0003 RET
181 0000 00 LOCAL b0_7 DB ?
; 171: bit dat;
171 0001 00 LOCAL CR8 DBIT ; dat
171 0012 _I2C_Ack ENDP
; 195: {
195 0000 @I2C_Write_N .SECTION 'CODE'
195 0000 PUBLIC _I2C_Write_N
195 0000 _I2C_Write_N PROC
; 194: void I2C_Write_N(uint8 N,uint8 addr,uint8 data[])
194 0000 PUBLIC I2C_Write_N0
194 0000 00 LOCAL I2C_Write_N0 DB ? ; N
194 0000 PUBLIC I2C_Write_N1
194 0001 00 LOCAL I2C_Write_N1 DB ? ; addr
194 0000 PUBLIC I2C_Write_N2
194 0002 00 LOCAL I2C_Write_N2 DB ? ; data
; 198: for(i=0;i<N;i++)
198 0000 1F00 R CLR CR9
198 0001 2800 R JMP L28
198 0002 L25:
; 200: I2C_Start();
200 0002 2000 R CALL _I2C_Start
; 201: I2C_Write_Byte(0xa0); /*写控制字*/
201 0003 0FA0 MOV A,0a0h
201 0004 0080 R MOV I2C_Write_Byte0,A
201 0005 2000 R CALL _I2C_Write_Byte
; 202: ack = I2C_Ack(); /*ACK*/
202 0006 2000 R CALL _I2C_Ack
202 0007 0080 R MOV b0_8,A
202 0008 0700 R MOV A,b0_8
202 0009 1F00 R CLR b0_8
202 000A 1085 SZ [05H]
文件:FUNC.C 盛群编译器版本 2.86 页次7
202 000B 3000 R SET b0_8.0
202 000C 3400 R CLR CR10
202 000D 1080 R SZ b0_8
202 000E 3000 R SET CR10
; 203: if(!ack)
203 000F 3C00 R SZ CR10
203 0010 2800 R JMP L29
文件:FUNC.c 盛群编译器版本 2.86 页次8
; 205: I2C_Write_Byte(addr+i); /*写地址*/
205 0011 0700 R MOV A,I2C_Write_N1
205 0012 0300 R ADD A,CR9
205 0013 0080 R MOV b0_8,A
205 0014 0700 R MOV A,b0_8
205 0015 0080 R MOV I2C_Write_Byte0,A
205 0016 2000 R CALL _I2C_Write_Byte
; 206: ack = I2C_Ack(); /*ACK*/
206 0017 2000 R CALL _I2C_Ack
206 0018 0080 R MOV b0_8,A
206 0019 0700 R MOV A,b0_8
206 001A 1F00 R CLR b0_8
206 001B 1085 SZ [05H]
206 001C 3000 R SET b0_8.0
206 001D 3400 R CLR CR10
206 001E 1080 R SZ b0_8
206 001F 3000 R SET CR10
; 207: if(!ack)
207 0020 3C00 R SZ CR10
207 0021 2800 R JMP L31
; 209: I2C_Write_Byte(data[i]); /*写数据*/
209 0022 0700 R MOV A,I2C_Write_N2
209 0023 0080 R MOV b0_8,A
209 0024 0700 R MOV A,CR9
209 0025 0300 R ADD A,b0_8
209 0026 0080 R MOV b0_8,A
209 0027 0700 R MOV A,b0_8
209 0028 0081 MOV [01H],A
209 0029 0700 MOV A,[00H]
209 002A 0080 R MOV b0_8,A
209 002B 0700 R MOV A,b0_8
209 002C 0080 R MOV I2C_Write_Byte0,A
209 002D 2000 R CALL _I2C_Write_Byte
; 210: ack = I2C_Ack(); /*ACK*/
210 002E 2000 R CALL _I2C_Ack
210 002F 0080 R MOV b0_8,A
210 0030 0700 R MOV A,b0_8
210 0031 1F00 R CLR b0_8
210 0032 1085 SZ [05H]
210 0033 3000 R SET b0_8.0
210 0034 3400 R CLR CR10
210 0035 1080 R SZ b0_8
210 0036 3000 R SET CR10
; 211: I2C_Stop();
211 0037 2000 R CALL _I2C_Stop
; 212: }
212 0038 2800 R JMP L30
212 0039 L31:
; 215: i -= 1; /*应答错误,重新写如数据*/
文件:FUNC.C 盛群编译器版本 2.86 页次8
215 0039 1580 R DEC CR9
文件:FUNC.c 盛群编译器版本 2.86 页次9
; 217: }
217 003A 2800 R JMP L30
217 003B L29:
; 220: i -= 1; /*应答错误,重新写如数据*/
220 003B 1580 R DEC CR9
220 003C L30:
220 003C L26:
; 198: for(i=0;i<N;i++)
198 003C 1480 R INC CR9
198 003D L28:
198 003D 0700 R MOV A,CR9
198 003E 0200 R SUB A,I2C_Write_N0
198 003F 380A SNZ [0ah].0
198 0040 2800 R JMP L25
198 0041 L24:
198 0041 0003 RET
198 0003 00 LOCAL b0_8 DB ?
; 196: uint8 i;
196 0004 00 LOCAL CR9 DB ? ; i
; 197: bit ack;
197 0005 00 LOCAL CR10 DBIT ; ack
197 0042 _I2C_Write_N ENDP
; 237: {
237 0000 @I2C_Read_N .SECTION 'CODE'
237 0000 PUBLIC _I2C_Read_N
237 0000 _I2C_Read_N PROC
; 236: void I2C_Read_N(uint8 N,uint8 addr,uint8 data[])
236 0000 PUBLIC I2C_Read_N0
236 0000 00 LOCAL I2C_Read_N0 DB ? ; N
236 0000 PUBLIC I2C_Read_N1
236 0001 00 LOCAL I2C_Read_N1 DB ? ; addr
236 0000 PUBLIC I2C_Read_N2
236 0002 00 LOCAL I2C_Read_N2 DB ? ; data
; 240: for(i=0; i<N; i++)
240 0000 1F00 R CLR CR12
240 0001 2800 R JMP L37
240 0002 L34:
; 242: I2C_Start();
242 0002 2000 R CALL _I2C_Start
; 243: I2C_Write_Byte(0xa0); /*写控制字*/
243 0003 0FA0 MOV A,0a0h
243 0004 0080 R MOV I2C_Write_Byte0,A
243 0005 2000 R CALL _I2C_Write_Byte
; 244: ack = I2C_Ack(); /*ACK*/
文件:FUNC.C 盛群编译器版本 2.86 页次9
244 0006 2000 R CALL _I2C_Ack
244 0007 0080 R MOV b0_9,A
244 0008 0700 R MOV A,b0_9
文件:FUNC.c 盛群编译器版本 2.86 页次10
244 0009 1F00 R CLR b0_9
244 000A 1085 SZ [05H]
244 000B 3000 R SET b0_9.0
244 000C 3400 R CLR CR11
244 000D 1080 R SZ b0_9
244 000E 3000 R SET CR11
; 245: if(!ack)
245 000F 3C00 R SZ CR11
245 0010 2800 R JMP L38
; 247: I2C_Write_Byte(addr+i); /*写地址*/
247 0011 0700 R MOV A,I2C_Read_N1
247 0012 0300 R ADD A,CR12
247 0013 0080 R MOV b0_9,A
247 0014 0700 R MOV A,b0_9
247 0015 0080 R MOV I2C_Write_Byte0,A
247 0016 2000 R CALL _I2C_Write_Byte
; 248: ack = I2C_Ack(); /*ACK*/
248 0017 2000 R CALL _I2C_Ack
248 0018 0080 R MOV b0_9,A
248 0019 0700 R MOV A,b0_9
248 001A 1F00 R CLR b0_9
248 001B 1085 SZ [05H]
248 001C 3000 R SET b0_9.0
248 001D 3400 R CLR CR11
248 001E 1080 R SZ b0_9
248 001F 3000 R SET CR11
; 249: if(!ack)
249 0020 3C00 R SZ CR11
249 0021 2800 R JMP L40
; 251: I2C_Start();
251 0022 2000 R CALL _I2C_Start
; 252: I2C_Write_Byte(0xa1); /*写控制字读取当前地址数据*/
252 0023 0FA1 MOV A,0a1h
252 0024 0080 R MOV I2C_Write_Byte0,A
252 0025 2000 R CALL _I2C_Write_Byte
; 253: ack = I2C_Ack(); /*ACK*/
253 0026 2000 R CALL _I2C_Ack
253 0027 0080 R MOV b0_9,A
253 0028 0700 R MOV A,b0_9
253 0029 1F00 R CLR b0_9
253 002A 1085 SZ [05H]
253 002B 3000 R SET b0_9.0
253 002C 3400 R CLR CR11
253 002D 1080 R SZ b0_9
253 002E 3000 R SET CR11
; 254: if(!ack)
254 002F 3C00 R SZ CR11
254 0030 2800 R JMP L42
; 256: data[i] = I2C_Read_Byte();
256 0031 2000 R CALL _I2C_Read_Byte
256 0032 0080 R MOV b0_9,A
文件:FUNC.c 盛群编译器版本 2.86 页次11
256 0033 0700 R MOV A,CR12
256 0034 0300 R ADD A,I2C_Read_N2
256 0035 0081 MOV [01H],A
文件:FUNC.C 盛群编译器版本 2.86 页次10
256 0036 0700 R MOV A,b0_9
256 0037 0080 MOV [00H],A
; 257: I2C_Stop();
257 0038 2000 R CALL _I2C_Stop
; 258: }
258 0039 2800 R JMP L41
258 003A L42:
; 261: i -= 1; /*应答错误重新读入*/
261 003A 1580 R DEC CR12
; 263: }
263 003B 2800 R JMP L41
263 003C L40:
; 266: i -= 1; /*应答错误重新读入*/
266 003C 1580 R DEC CR12
266 003D L41:
266 003D L38:
266 003D L35:
; 240: for(i=0; i<N; i++)
240 003D 1480 R INC CR12
240 003E L37:
240 003E 0700 R MOV A,CR12
240 003F 0200 R SUB A,I2C_Read_N0
240 0040 380A SNZ [0ah].0
240 0041 2800 R JMP L34
240 0042 L33:
240 0042 0003 RET
240 0003 00 LOCAL b0_9 DB ?
; 239: bit ack;
239 0004 00 LOCAL CR11 DBIT ; ack
; 238: uint8 i;
238 0005 00 LOCAL CR12 DB ? ; i
238 0043 _I2C_Read_N ENDP
238 0043 EXTERN __DELAYX0:NEAR
238 0043 EXTERN __DELAYX1:NEAR
238 0043 EXTERN __DELAYX2:NEAR
238 0043 EXTERN __DELAYX3:NEAR
238 0043 EXTERN __DELAYX4:NEAR
238 0043 EXTERN __DELAYX5:NEAR
238 0043 EXTERN __DELAYX6:NEAR
0 Errors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -