📄 project.lst
字号:
018F 2022 TST R2
0190 F411 BNE 0x0193
(0186) {
(0187) return(0);
0191 2700 CLR R16
0192 C00A RJMP 0x019D
(0188) }
(0189) I2C_Send_Byte(bData);
0193 2F04 MOV R16,R20
0194 DF98 RCALL _I2C_Send_Byte
(0190) if(bI2C_Ack == 0)
0195 90200062 LDS R2,0x62
0197 2022 TST R2
0198 F411 BNE 0x019B
(0191) {
(0192) return(0);
0199 2700 CLR R16
019A C002 RJMP 0x019D
(0193) }
(0194) I2C_Stop_Condition();
019B DF8B RCALL _I2C_Stop_Condition
(0195) return(1);
019C E001 LDI R16,1
019D 940E0240 CALL pop_gset2
019F 9508 RET
_I2C_Send_Data_with_SubAddress:
bData --> Y+4
bAddress --> R20
bDevice --> R22
01A0 940E0260 CALL push_gset2
01A2 2F42 MOV R20,R18
01A3 2F60 MOV R22,R16
(0196) }
(0197)
(0198) //***************************************************************
(0199) // Function : I2C_Send_Data_with_SubAddress
(0200) // Input : bDevice - Slave Device with a I2C Address,
(0201) // bAddress - SubAddress of the Slave,
(0202) // bData - Data to be transmitted
(0203) // Output : I2C Operation Status - Success(1)/Fail(0)
(0204) // Description : Transmit a data to Slave with SubAddress
(0205) //***************************************************************
(0206) INT8U I2C_Send_Data_with_SubAddress(INT8U bDevice,INT8U bAddress,INT8U bData)
(0207) {
(0208) I2C_Start_Condition();
01A4 DF7A RCALL _I2C_Start_Condition
(0209) I2C_Send_Byte(bDevice);
01A5 2F06 MOV R16,R22
01A6 DF86 RCALL _I2C_Send_Byte
(0210) if(bI2C_Ack == 0)
01A7 90200062 LDS R2,0x62
01A9 2022 TST R2
01AA F411 BNE 0x01AD
(0211) {
(0212) return(0);
01AB 2700 CLR R16
01AC C012 RJMP 0x01BF
(0213) }
(0214) I2C_Send_Byte(bAddress);
01AD 2F04 MOV R16,R20
01AE DF7E RCALL _I2C_Send_Byte
(0215) if(bI2C_Ack == 0)
01AF 90200062 LDS R2,0x62
01B1 2022 TST R2
01B2 F411 BNE 0x01B5
(0216) {
(0217) return(0);
01B3 2700 CLR R16
01B4 C00A RJMP 0x01BF
(0218) }
(0219) I2C_Send_Byte(bData);
01B5 810C LDD R16,Y+4
01B6 DF76 RCALL _I2C_Send_Byte
(0220) if(bI2C_Ack == 0)
01B7 90200062 LDS R2,0x62
01B9 2022 TST R2
01BA F411 BNE 0x01BD
(0221) {
(0222) return(0);
01BB 2700 CLR R16
01BC C002 RJMP 0x01BF
(0223) }
(0224) I2C_Stop_Condition();
01BD DF69 RCALL _I2C_Stop_Condition
(0225) return(1);
01BE E001 LDI R16,1
01BF 940E0240 CALL pop_gset2
01C1 9508 RET
_I2C_Send_String_with_SubAddress:
cnt --> R20
bLength --> R22
ptr --> R10
bAddress --> R20
bDevice --> R12
01C2 940E0268 CALL push_gset4
01C4 2F42 MOV R20,R18
01C5 2EC0 MOV R12,R16
01C6 84A8 LDD R10,Y+8
01C7 84B9 LDD R11,Y+9
01C8 856A LDD R22,Y+10
(0226) }
(0227)
(0228) //***************************************************************
(0229) // Function : I2C_Send_String_with_SubAddress
(0230) // Input : bDevice - Slave Device with a I2C Address,
(0231) // bAddress - SubAddress of the Slave,
(0232) // ptr - Pointer to the data buffter
(0233) // Output : I2C Operation Status - Success(1)/Fail(0)
(0234) // Description : Transmit a data to Slave with SubAddress
(0235) //***************************************************************
(0236) INT8U I2C_Send_String_with_SubAddress(INT8U bDevice,INT8U bAddress,INT8U *ptr,INT8U bLength)
(0237) {
(0238) INT8U cnt;
(0239) I2C_Start_Condition();
01C9 DF55 RCALL _I2C_Start_Condition
(0240) I2C_Send_Byte(bDevice);
01CA 2D0C MOV R16,R12
01CB DF61 RCALL _I2C_Send_Byte
(0241) if(bI2C_Ack == 0)
01CC 90200062 LDS R2,0x62
01CE 2022 TST R2
01CF F411 BNE 0x01D2
(0242) {
(0243) return(0);
01D0 2700 CLR R16
01D1 C019 RJMP 0x01EB
(0244) }
(0245) I2C_Send_Byte(bAddress);
01D2 2F04 MOV R16,R20
01D3 DF59 RCALL _I2C_Send_Byte
(0246) if(bI2C_Ack == 0)
01D4 90200062 LDS R2,0x62
01D6 2022 TST R2
01D7 F411 BNE 0x01DA
(0247) {
(0248) return(0);
01D8 2700 CLR R16
01D9 C011 RJMP 0x01EB
(0249) }
(0250) for(cnt = 0;cnt < bLength;cnt++)
01DA 2744 CLR R20
01DB C00B RJMP 0x01E7
(0251) {
(0252) I2C_Send_Byte(*ptr++);
01DC 01F5 MOVW R30,R10
01DD 9101 LD R16,Z+
01DE 015F MOVW R10,R30
01DF DF4D RCALL _I2C_Send_Byte
(0253) if(bI2C_Ack == 0)
01E0 90200062 LDS R2,0x62
01E2 2022 TST R2
01E3 F411 BNE 0x01E6
(0254) {
(0255) return(0);
01E4 2700 CLR R16
01E5 C005 RJMP 0x01EB
01E6 9543 INC R20
01E7 1746 CP R20,R22
01E8 F398 BCS 0x01DC
(0256) }
(0257) }
(0258) I2C_Stop_Condition();
01E9 DF3D RCALL _I2C_Stop_Condition
(0259) return(1);
01EA E001 LDI R16,1
01EB 940E0243 CALL pop_gset4
01ED 9508 RET
_I2C_Receive_Data_without_SubAddress:
ptr --> R20
bDevice --> R22
01EE 940E0260 CALL push_gset2
01F0 01A9 MOVW R20,R18
01F1 2F60 MOV R22,R16
(0260) }
(0261)
(0262) //***************************************************************
(0263) // Function : I2C_Receive_Data_without_Address
(0264) // Input : bDevice - Slave Device with a I2C Address,
(0265) // ptr - Pointer to the receive data buffter
(0266) // Output : I2C Operation Status - Success(1)/Fail(0)
(0267) // Description : Receive N data from Slave without SubAddress
(0268) //***************************************************************
(0269) INT8U I2C_Receive_Data_without_SubAddress(INT8U bDevice,INT8U *ptr)
(0270) {
(0271) I2C_Start_Condition();
01F2 DF2C RCALL _I2C_Start_Condition
(0272) I2C_Send_Byte(bDevice | 0x01);
01F3 2F06 MOV R16,R22
01F4 6001 ORI R16,1
01F5 DF37 RCALL _I2C_Send_Byte
(0273) if(bI2C_Ack == 0)
01F6 90200062 LDS R2,0x62
01F8 2022 TST R2
01F9 F411 BNE 0x01FC
(0274) {
(0275) return(0);
01FA 2700 CLR R16
01FB C007 RJMP 0x0203
(0276) }
(0277) *ptr = I2C_Receive_Byte();
01FC DF5F RCALL _I2C_Receive_Byte
01FD 01FA MOVW R30,R20
01FE 8300 STD Z+0,R16
(0278) I2C_Ack(1);
01FF E001 LDI R16,1
0200 DF74 RCALL _I2C_Ack
(0279) I2C_Stop_Condition();
0201 DF25 RCALL _I2C_Stop_Condition
(0280) return(1);
0202 E001 LDI R16,1
0203 940E0240 CALL pop_gset2
0205 9508 RET
_I2C_Recive_String_with_SubAddress:
cnt --> R20
bLength --> R22
ptr --> R10
bAddress --> R14
bDevice --> R12
0206 940E026C CALL push_gset5
0208 2EE2 MOV R14,R18
0209 2EC0 MOV R12,R16
020A 84AA LDD R10,Y+10
020B 84BB LDD R11,Y+11
020C 856C LDD R22,Y+12
(0281) }
(0282)
(0283) //***************************************************************
(0284) // Function : I2C_Recive_String_with_AddressIRcvStr
(0285) // Input : bDevice - Slave Device with a I2C Address,
(0286) // bAddress - SubAddress of the Slave,
(0287) // ptr - Pointer to the receive data buffter
(0288) // Output : I2C Operation Status - Success(1)/Fail(0)
(0289) // Description : Receive N data from Slave with SubAddress
(0290) //***************************************************************
(0291) INT8U I2C_Recive_String_with_SubAddress(INT8U bDevice,INT8U bAddress,INT8U *ptr,INT8U bLength)
(0292) {
(0293) INT8U cnt = 0;
020D 2744 CLR R20
(0294) I2C_Start_Condition();
020E DF10 RCALL _I2C_Start_Condition
(0295) I2C_Send_Byte(bDevice);
020F 2D0C MOV R16,R12
0210 DF1C RCALL _I2C_Send_Byte
(0296) if(bI2C_Ack == 0)
0211 90200062 LDS R2,0x62
0213 2022 TST R2
0214 F411 BNE 0x0217
(0297) {
(0298) return(0);
0215 2700 CLR R16
0216 C026 RJMP 0x023D
(0299) }
(0300) I2C_Send_Byte(bAddress);
0217 2D0E MOV R16,R14
0218 DF14 RCALL _I2C_Send_Byte
(0301) if(bI2C_Ack == 0)
0219 90200062 LDS R2,0x62
021B 2022 TST R2
021C F411 BNE 0x021F
(0302) {
(0303) return(0);
021D 2700 CLR R16
021E C01E RJMP 0x023D
(0304) }
(0305) I2C_Start_Condition();
021F DEFF RCALL _I2C_Start_Condition
(0306) I2C_Send_Byte(bDevice | 0x01);
0220 2D0C MOV R16,R12
0221 6001 ORI R16,1
0222 DF0A RCALL _I2C_Send_Byte
(0307) if(bI2C_Ack == 0)
0223 90200062 LDS R2,0x62
0225 2022 TST R2
0226 F411 BNE 0x0229
(0308) {
(0309) return(0);
0227 2700 CLR R16
0228 C014 RJMP 0x023D
(0310) }
(0311) for(cnt = 0;cnt < bLength - 1;cnt++)
0229 2744 CLR R20
022A C007 RJMP 0x0232
(0312) {
(0313) *ptr++ = I2C_Receive_Byte();
022B DF30 RCALL _I2C_Receive_Byte
022C 01F5 MOVW R30,R10
022D 9301 ST R16,Z+
022E 015F MOVW R10,R30
(0314) I2C_Ack(0);
022F 2700 CLR R16
0230 DF44 RCALL _I2C_Ack
0231 9543 INC R20
0232 2F86 MOV R24,R22
0233 5081 SUBI R24,1
0234 1748 CP R20,R24
0235 F3A8 BCS 0x022B
(0315) }
(0316) *ptr = I2C_Receive_Byte();
0236 DF25 RCALL _I2C_Receive_Byte
0237 01F5 MOVW R30,R10
0238 8300 STD Z+0,R16
(0317) I2C_Ack(1);
0239 E001 LDI R16,1
023A DF3A RCALL _I2C_Ack
(0318) I2C_Stop_Condition();
023B DEEB RCALL _I2C_Stop_Condition
(0319) return(1);
FILE: <library>
023C E001 LDI R16,1
023D 940E0246 CALL pop_gset5
023F 9508 RET
pop_gset2:
0240 E0E2 LDI R30,2
0241 940C024D JMP pop
pop_gset4:
0243 E0E8 LDI R30,0x8
0244 940C024D JMP pop
pop_gset5:
0246 27EE CLR R30
0247 940C024D JMP pop
push_gset1:
0249 935A ST R21,-Y
024A 934A ST R20,-Y
024B 9508 RET
pop_gset1:
024C E0E1 LDI R30,1
pop:
024D 9149 LD R20,Y+
024E 9159 LD R21,Y+
024F FDE0 SBRC R30,0
0250 9508 RET
0251 9169 LD R22,Y+
0252 9179 LD R23,Y+
0253 FDE1 SBRC R30,1
0254 9508 RET
0255 90A9 LD R10,Y+
0256 90B9 LD R11,Y+
0257 FDE2 SBRC R30,2
0258 9508 RET
0259 90C9 LD R12,Y+
025A 90D9 LD R13,Y+
025B FDE3 SBRC R30,3
025C 9508 RET
025D 90E9 LD R14,Y+
025E 90F9 LD R15,Y+
025F 9508 RET
push_gset2:
0260 937A ST R23,-Y
0261 936A ST R22,-Y
0262 940C0249 JMP push_gset1
push_gset3:
0264 92BA ST R11,-Y
0265 92AA ST R10,-Y
0266 940C0260 JMP push_gset2
push_gset4:
0268 92DA ST R13,-Y
0269 92CA ST R12,-Y
026A 940C0264 JMP push_gset3
push_gset5:
026C 92FA ST R15,-Y
026D 92EA ST R14,-Y
026E 940C0268 JMP push_gset4
push_lset:
0270 93FA ST R31,-Y
0271 93EA ST R30,-Y
0272 93BA ST R27,-Y
0273 93AA ST R26,-Y
0274 939A ST R25,-Y
0275 938A ST R24,-Y
0276 933A ST R19,-Y
0277 932A ST R18,-Y
0278 931A ST R17,-Y
0279 930A ST R16,-Y
027A 929A ST R9,-Y
027B 928A ST R8,-Y
027C 927A ST R7,-Y
027D 926A ST R6,-Y
027E 925A ST R5,-Y
027F 924A ST R4,-Y
0280 923A ST R3,-Y
0281 922A ST R2,-Y
0282 921A ST R1,-Y
0283 920A ST R0,-Y
0284 B60F IN R0,0x3F
0285 920A ST R0,-Y
0286 9508 RET
pop_lset:
0287 9009 LD R0,Y+
0288 BE0F OUT 0x3F,R0
0289 9009 LD R0,Y+
028A 9019 LD R1,Y+
028B 9029 LD R2,Y+
028C 9039 LD R3,Y+
028D 9049 LD R4,Y+
028E 9059 LD R5,Y+
028F 9069 LD R6,Y+
0290 9079 LD R7,Y+
0291 9089 LD R8,Y+
0292 9099 LD R9,Y+
0293 9109 LD R16,Y+
0294 9119 LD R17,Y+
0295 9129 LD R18,Y+
0296 9139 LD R19,Y+
0297 9189 LD R24,Y+
0298 9199 LD R25,Y+
0299 91A9 LD R26,Y+
029A 91B9 LD R27,Y+
029B 91E9 LD R30,Y+
029C 91F9 LD R31,Y+
029D 9508 RET
lsl8:
029E 2311 TST R17
029F F019 BEQ 0x02A3
02A0 0F00 LSL R16
02A1 951A DEC R17
02A2 CFFB RJMP lsl8
02A3 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -