⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 128can.lst

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -