📄 128can.lst
字号:
01A3 922A ST R2,-Y
01A4 018A MOVW R16,R20
01A5 019B MOVW R18,R22
01A6 940E0B98 CALL empy32s
01A8 E041 LDI R20,1
01A9 E258 LDI R21,0x28
01AA E060 LDI R22,0
01AB E070 LDI R23,0
01AC 0118 MOVW R2,R16
01AD 0129 MOVW R4,R18
01AE 0E24 ADD R2,R20
01AF 1E35 ADC R3,R21
01B0 1E46 ADC R4,R22
01B1 1E57 ADC R5,R23
01B2 923001FD STS id4+1,R3
01B4 922001FC STS id4,R2
01B6 925001FF STS id4+3,R5
01B8 924001FE STS id4+2,R4
(0241) id5 = BASE_ADDR/256+tempp*256+2;
01BA 8028 LDD R2,Y+0
01BB 8039 LDD R3,Y+1
01BC 804A LDD R4,Y+2
01BD 805B LDD R5,Y+3
01BE E040 LDI R20,0
01BF E051 LDI R21,1
01C0 E060 LDI R22,0
01C1 E070 LDI R23,0
01C2 925A ST R5,-Y
01C3 924A ST R4,-Y
01C4 923A ST R3,-Y
01C5 922A ST R2,-Y
01C6 018A MOVW R16,R20
01C7 019B MOVW R18,R22
01C8 940E0B98 CALL empy32s
01CA E042 LDI R20,2
01CB E258 LDI R21,0x28
01CC E060 LDI R22,0
01CD E070 LDI R23,0
01CE 0118 MOVW R2,R16
01CF 0129 MOVW R4,R18
01D0 0E24 ADD R2,R20
01D1 1E35 ADC R3,R21
01D2 1E46 ADC R4,R22
01D3 1E57 ADC R5,R23
01D4 923001F9 STS id5+1,R3
01D6 922001F8 STS id5,R2
01D8 925001FB STS id5+3,R5
01DA 924001FA STS id5+2,R4
(0242) Pass_Flag <<= 1;
01DC 902001F5 LDS R2,Pass_Flag
01DE 0C22 LSL R2
01DF 922001F5 STS Pass_Flag,R2
(0243) CANMOBID[0] = id1;
01E1 9040020A LDS R4,id1+2
01E3 9050020B LDS R5,id1+3
01E5 90200208 LDS R2,id1
01E7 90300209 LDS R3,id1+1
01E9 92300101 STS CANMOBID+1,R3
01EB 92200100 STS CANMOBID,R2
01ED 92500103 STS CANMOBID+3,R5
01EF 92400102 STS CANMOBID+2,R4
(0244) CANMOBID[1] = id2;
01F1 90400206 LDS R4,id2+2
01F3 90500207 LDS R5,id2+3
01F5 90200204 LDS R2,id2
01F7 90300205 LDS R3,id2+1
01F9 92300105 STS 0x105,R3
01FB 92200104 STS 0x104,R2
01FD 92500107 STS 0x107,R5
01FF 92400106 STS 0x106,R4
(0245) CANMOBID[3] = id3;
0201 90400202 LDS R4,id3+2
0203 90500203 LDS R5,id3+3
0205 90200200 LDS R2,id3
0207 90300201 LDS R3,id3+1
0209 9230010D STS 0x10D,R3
020B 9220010C STS 0x10C,R2
020D 9250010F STS 0x10F,R5
020F 9240010E STS 0x10E,R4
(0246) CANMOBID[4] = id4;
0211 904001FE LDS R4,id4+2
0213 905001FF LDS R5,id4+3
0215 902001FC LDS R2,id4
0217 903001FD LDS R3,id4+1
0219 92300111 STS 0x111,R3
021B 92200110 STS 0x110,R2
021D 92500113 STS 0x113,R5
021F 92400112 STS 0x112,R4
(0247) CANMOBID[5] = id5;
0221 904001FA LDS R4,id5+2
0223 905001FB LDS R5,id5+3
0225 902001F8 LDS R2,id5
0227 903001F9 LDS R3,id5+1
0229 92300115 STS 0x115,R3
022B 92200114 STS 0x114,R2
022D 92500117 STS 0x117,R5
022F 92400116 STS 0x116,R4
(0248) if(Pass_Flag!=0x08)
0231 918001F5 LDS R24,Pass_Flag
0233 3088 CPI R24,0x8
0234 F011 BEQ 0x0237
(0249) RESET;
0235 940C0000 JMP 0x0
(0250) can_init ();
0237 940E0495 CALL _can_init
(0251)
(0252) DI_handle(); //读取开关状态 去抖动处理
0239 940E0914 CALL _DI_handle
(0253) for(i=0;i<12;i++)
023B 24AA CLR R10
023C C01D RJMP 0x025A
(0254) {
(0255) DI_data_pre[i] =DI_data_cur[i];
023D E683 LDI R24,0x63
023E E092 LDI R25,2
023F 2DEA MOV R30,R10
0240 27FF CLR R31
0241 0FE8 ADD R30,R24
0242 1FF9 ADC R31,R25
0243 8020 LDD R2,Z+0
0244 E48B LDI R24,0x4B
0245 E092 LDI R25,2
0246 2DEA MOV R30,R10
0247 27FF CLR R31
0248 0FE8 ADD R30,R24
0249 1FF9 ADC R31,R25
024A 8220 STD Z+0,R2
(0256) DI_data[i] =DI_data_cur[i];
024B E683 LDI R24,0x63
024C E092 LDI R25,2
024D 2DEA MOV R30,R10
024E 27FF CLR R31
024F 0FE8 ADD R30,R24
0250 1FF9 ADC R31,R25
0251 8020 LDD R2,Z+0
0252 E587 LDI R24,0x57
0253 E092 LDI R25,2
0254 2DEA MOV R30,R10
0255 27FF CLR R31
0256 0FE8 ADD R30,R24
0257 1FF9 ADC R31,R25
0258 8220 STD Z+0,R2
0259 94A3 INC R10
025A 2D8A MOV R24,R10
025B 308C CPI R24,0xC
025C F300 BCS 0x023D
(0257) }
(0258) SEI();
025D 9478 BSET 7
(0259) watchdog_init();
025E 940E0B0D CALL _watchdog_init
(0260) WDR();
0260 95A8 WDR
(0261) WDR();
0261 95A8 WDR
0262 C22F RJMP 0x0492
(0262)
(0263) while(1)
(0264) {
(0265)
(0266) WDR();
0263 95A8 WDR
(0267) ID_nu = get_id(); //读取拨码开关的值
0264 940E0881 CALL _get_id
0266 930001F7 STS ID_nu,R16
(0268) ID_net = ID_nu; //计算网络ID号
0268 2E20 MOV R2,R16
0269 922001F6 STS ID_net,R2
(0269) if(tempp!=ID_nu*256)
026B 2D22 MOV R18,R2
026C 2733 CLR R19
026D E000 LDI R16,0
026E E011 LDI R17,1
026F 940E0B88 CALL empy16s
0271 0118 MOVW R2,R16
0272 2444 CLR R4
0273 FC37 SBRC R3,7
0274 9440 COM R4
0275 2455 CLR R5
0276 FC47 SBRC R4,7
0277 9450 COM R5
0278 8068 LDD R6,Y+0
0279 8079 LDD R7,Y+1
027A 808A LDD R8,Y+2
027B 809B LDD R9,Y+3
027C 1462 CP R6,R2
027D 0473 CPC R7,R3
027E 0484 CPC R8,R4
027F 0495 CPC R9,R5
0280 F409 BNE 0x0282
0281 C10D RJMP 0x038F
(0270) {
(0271) CLI();
0282 94F8 BCLR 7
(0272) tempp = ID_net*256;
0283 912001F6 LDS R18,ID_net
0285 2733 CLR R19
0286 E000 LDI R16,0
0287 E011 LDI R17,1
0288 940E0B88 CALL empy16s
028A 0118 MOVW R2,R16
028B 2444 CLR R4
028C FC37 SBRC R3,7
028D 9440 COM R4
028E 2455 CLR R5
028F FC47 SBRC R4,7
0290 9450 COM R5
0291 8228 STD Y+0,R2
0292 8239 STD Y+1,R3
0293 824A STD Y+2,R4
0294 825B STD Y+3,R5
(0273) Pass_Flag = 0x01;
0295 E081 LDI R24,1
0296 938001F5 STS Pass_Flag,R24
(0274) id1 = BASE_ADDR+tempp;
0298 E040 LDI R20,0
0299 E050 LDI R21,0
029A E268 LDI R22,0x28
029B E070 LDI R23,0
029C 8028 LDD R2,Y+0
029D 8039 LDD R3,Y+1
029E 804A LDD R4,Y+2
029F 805B LDD R5,Y+3
02A0 0E24 ADD R2,R20
02A1 1E35 ADC R3,R21
02A2 1E46 ADC R4,R22
02A3 1E57 ADC R5,R23
02A4 92300209 STS id1+1,R3
02A6 92200208 STS id1,R2
02A8 9250020B STS id1+3,R5
02AA 9240020A STS id1+2,R4
(0275) id2 = BASE_ADDR+1+tempp;
02AC E041 LDI R20,1
02AD E050 LDI R21,0
02AE E268 LDI R22,0x28
02AF E070 LDI R23,0
02B0 8028 LDD R2,Y+0
02B1 8039 LDD R3,Y+1
02B2 804A LDD R4,Y+2
02B3 805B LDD R5,Y+3
02B4 0E24 ADD R2,R20
02B5 1E35 ADC R3,R21
02B6 1E46 ADC R4,R22
02B7 1E57 ADC R5,R23
02B8 92300205 STS id2+1,R3
02BA 92200204 STS id2,R2
02BC 92500207 STS id2+3,R5
02BE 92400206 STS id2+2,R4
(0276) Pass_Flag <<= 1;
02C0 2E28 MOV R2,R24
02C1 0C22 LSL R2
02C2 922001F5 STS Pass_Flag,R2
(0277) WDR();
02C4 95A8 WDR
(0278) id3 = BASE_ADDR/256+tempp*256;
02C5 8028 LDD R2,Y+0
02C6 8039 LDD R3,Y+1
02C7 804A LDD R4,Y+2
02C8 805B LDD R5,Y+3
02C9 E040 LDI R20,0
02CA E051 LDI R21,1
02CB E060 LDI R22,0
02CC E070 LDI R23,0
02CD 925A ST R5,-Y
02CE 924A ST R4,-Y
02CF 923A ST R3,-Y
02D0 922A ST R2,-Y
02D1 018A MOVW R16,R20
02D2 019B MOVW R18,R22
02D3 940E0B98 CALL empy32s
02D5 E040 LDI R20,0
02D6 E258 LDI R21,0x28
02D7 E060 LDI R22,0
02D8 E070 LDI R23,0
02D9 0118 MOVW R2,R16
02DA 0129 MOVW R4,R18
02DB 0E24 ADD R2,R20
02DC 1E35 ADC R3,R21
02DD 1E46 ADC R4,R22
02DE 1E57 ADC R5,R23
02DF 92300201 STS id3+1,R3
02E1 92200200 STS id3,R2
02E3 92500203 STS id3+3,R5
02E5 92400202 STS id3+2,R4
(0279) Pass_Flag <<= 1;
02E7 902001F5 LDS R2,Pass_Flag
02E9 0C22 LSL R2
02EA 922001F5 STS Pass_Flag,R2
(0280) id4 = BASE_ADDR/256+tempp*256+1;
02EC 8028 LDD R2,Y+0
02ED 8039 LDD R3,Y+1
02EE 804A LDD R4,Y+2
02EF 805B LDD R5,Y+3
02F0 E040 LDI R20,0
02F1 E051 LDI R21,1
02F2 E060 LDI R22,0
02F3 E070 LDI R23,0
02F4 925A ST R5,-Y
02F5 924A ST R4,-Y
02F6 923A ST R3,-Y
02F7 922A ST R2,-Y
02F8 018A MOVW R16,R20
02F9 019B MOVW R18,R22
02FA 940E0B98 CALL empy32s
02FC E041 LDI R20,1
02FD E258 LDI R21,0x28
02FE E060 LDI R22,0
02FF E070 LDI R23,0
0300 0118 MOVW R2,R16
0301 0129 MOVW R4,R18
0302 0E24 ADD R2,R20
0303 1E35 ADC R3,R21
0304 1E46 ADC R4,R22
0305 1E57 ADC R5,R23
0306 923001FD STS id4+1,R3
0308 922001FC STS id4,R2
030A 925001FF STS id4+3,R5
030C 924001FE STS id4+2,R4
(0281) id5 = BASE_ADDR/256+tempp*256+2;
030E 8028 LDD R2,Y+0
030F 8039 LDD R3,Y+1
0310 804A LDD R4,Y+2
0311 805B LDD R5,Y+3
0312 E040 LDI R20,0
0313 E051 LDI R21,1
0314 E060 LDI R22,0
0315 E070 LDI R23,0
0316 925A ST R5,-Y
0317 924A ST R4,-Y
0318 923A ST R3,-Y
0319 922A ST R2,-Y
031A 018A MOVW R16,R20
031B 019B MOVW R18,R22
031C 940E0B98 CALL empy32s
031E E042 LDI R20,2
031F E258 LDI R21,0x28
0320 E060 LDI R22,0
0321 E070 LDI R23,0
0322 0118 MOVW R2,R16
0323 0129 MOVW R4,R18
0324 0E24 ADD R2,R20
0325 1E35 ADC R3,R21
0326 1E46 ADC R4,R22
0327 1E57 ADC R5,R23
0328 923001F9 STS id5+1,R3
032A 922001F8 STS id5,R2
032C 925001FB STS id5+3,R5
032E 924001FA STS id5+2,R4
(0282) Pass_Flag <<= 1;
0330 902001F5 LDS R2,Pass_Flag
0332 0C22 LSL R2
0333 922001F5 STS Pass_Flag,R2
(0283) WDR();
0335 95A8 WDR
(0284) CANMOBID[0] = id1;
0336 9040020A LDS R4,id1+2
0338 9050020B LDS R5,id1+3
033A 90200208 LDS R2,id1
033C 90300209 LDS R3,id1+1
033E 92300101 STS CANMOBID+1,R3
0340 92200100 STS CANMOBID,R2
0342 92500103 STS CANMOBID+3,R5
0344 92400102 STS CANMOBID+2,R4
(0285) CANMOBID[1] = id2;
0346 90400206 LDS R4,id2+2
0348 90500207 LDS R5,id2+3
034A 90200204 LDS R2,id2
034C 90300205 LDS R3,id2+1
034E 92300105 STS 0x105,R3
0350 92200104 STS 0x104,R2
0352 92500107 STS 0x107,R5
0354 92400106 STS 0x106,R4
(0286) CANMOBID[3] = id3;
0356 90400202 LDS R4,id3+2
0358 90500203 LDS R5,id3+3
035A 90200200 LDS R2,id3
035C 90300201 LDS R3,id3+1
035E 9230010D STS 0x10D,R3
0360 9220010C STS 0x10C,R2
0362 9250010F STS 0x10F,R5
0364 9240010E STS 0x10E,R4
(0287) CANMOBID[4] = id4;
0366 904001FE LDS R4,id4+2
0368 905001FF LDS R5,id4+3
036A 902001FC LDS R2,id4
036C 903001FD LDS R3,id4+1
036E 92300111 STS 0x111,R3
0370 92200110 STS 0x110,R2
0372 92500113 STS 0x113,R5
0374 92400112 STS 0x112,R4
(0288) CANMOBID[5] = id5;
0376 904001FA LDS R4,id5+2
0378 905001FB LDS R5,id5+3
037A 902001F8 LDS R2,id5
037C 903001F9 LDS R3,id5+1
037E 92300115 STS 0x115,R3
0380 92200114 STS 0x114,R2
0382 92500117 STS 0x117,R5
0384 92400116 STS 0x116,R4
(0289) if(Pass_Flag!=0x08)
0386 918001F5 LDS R24,Pass_Flag
0388 3088 CPI R24,0x8
0389 F011 BEQ 0x038C
(0290) RESET;
038A 940C0000 JMP 0x0
(0291) can_init ();
038C 940E0495 CALL _can_init
(0292) SEI();
038E 9478 BSET 7
(0293) }
(0294)
(0295) if(send_count>25) //连续25次发送失败则复位
038F E189 LDI R24,0x19
0390 90200248 LDS R2,send_count
0392 1582 CP R24,R2
0393 F410 BCC 0x0396
(0296) RESET;
0394 940C0000 JMP 0x0
(0297)
(0298) if(Temp_Flag == 0x5a) //定时读去状态标志
0396 918001F3 LDS R24,Temp_Flag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -