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

📄 main.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0310 4094              com R4
 0312 5524              clr R5
 0314 47FC              sbrc R4,7
 0316 5094              com R5
 0318 6880              ldd R6,y+0
 031A 7980              ldd R7,y+1
 031C 8A80              ldd R8,y+2
 031E 9B80              ldd R9,y+3
 0320 6214              cp R6,R2
 0322 7304              cpc R7,R3
 0324 8404              cpc R8,R4
 0326 9504              cpc R9,R5
 0328 09F4              brne X1
 032A 0DC1              xjmp L20
 032C           X1:
 032C                   .dbline 270
 032C           ;    {    
 032C                   .dbline 271
 032C           ;     CLI();
 032C F894              cli
 032E                   .dbline 272
 032E           ;      tempp = ID_net*256;
 032E 20910600          lds R18,_ID_net
 0332 3327              clr R19
 0334 00E0              ldi R16,256
 0336 11E0              ldi R17,1
 0338 0E940000          xcall empy16s
 033C 1801              movw R2,R16
 033E 4424              clr R4
 0340 37FC              sbrc R3,7
 0342 4094              com R4
 0344 5524              clr R5
 0346 47FC              sbrc R4,7
 0348 5094              com R5
 034A 2882              std y+0,R2
 034C 3982              std y+1,R3
 034E 4A82              std y+2,R4
 0350 5B82              std y+3,R5
 0352                   .dbline 273
 0352           ;        Pass_Flag = 0x01;
 0352 81E0              ldi R24,1
 0354 80930500          sts _Pass_Flag,R24
 0358                   .dbline 274
 0358           ;        id1 = BASE_ADDR+tempp;
 0358 40E0              ldi R20,0
 035A 50E0              ldi R21,0
 035C 68E2              ldi R22,40
 035E 70E0              ldi R23,0
 0360 2880              ldd R2,y+0
 0362 3980              ldd R3,y+1
 0364 4A80              ldd R4,y+2
 0366 5B80              ldd R5,y+3
 0368 240E              add R2,R20
 036A 351E              adc R3,R21
 036C 461E              adc R4,R22
 036E 571E              adc R5,R23
 0370 30921900          sts _id1+1,R3
 0374 20921800          sts _id1,R2
 0378 50921B00          sts _id1+2+1,R5
 037C 40921A00          sts _id1+2,R4
 0380                   .dbline 275
 0380           ;        id2 = BASE_ADDR+1+tempp;
 0380 41E0              ldi R20,1
 0382 50E0              ldi R21,0
 0384 68E2              ldi R22,40
 0386 70E0              ldi R23,0
 0388 2880              ldd R2,y+0
 038A 3980              ldd R3,y+1
 038C 4A80              ldd R4,y+2
 038E 5B80              ldd R5,y+3
 0390 240E              add R2,R20
 0392 351E              adc R3,R21
 0394 461E              adc R4,R22
 0396 571E              adc R5,R23
 0398 30921500          sts _id2+1,R3
 039C 20921400          sts _id2,R2
 03A0 50921700          sts _id2+2+1,R5
 03A4 40921600          sts _id2+2,R4
 03A8                   .dbline 276
 03A8           ;        Pass_Flag <<= 1;  
 03A8 282E              mov R2,R24
 03AA 220C              lsl R2
 03AC 20920500          sts _Pass_Flag,R2
 03B0                   .dbline 277
 03B0           ;          WDR();
 03B0 A895              wdr
 03B2                   .dbline 278
 03B2           ;        id3 = BASE_ADDR/256+tempp*256;
 03B2 2880              ldd R2,y+0
 03B4 3980              ldd R3,y+1
 03B6 4A80              ldd R4,y+2
 03B8 5B80              ldd R5,y+3
 03BA 40E0              ldi R20,0
 03BC 51E0              ldi R21,1
 03BE 60E0              ldi R22,0
 03C0 70E0              ldi R23,0
 03C2 5A92              st -y,R5
 03C4 4A92              st -y,R4
 03C6 3A92              st -y,R3
 03C8 2A92              st -y,R2
 03CA 8A01              movw R16,R20
 03CC 9B01              movw R18,R22
 03CE 0E940000          xcall empy32s
 03D2 40E0              ldi R20,0
 03D4 58E2              ldi R21,40
 03D6 60E0              ldi R22,0
 03D8 70E0              ldi R23,0
 03DA 1801              movw R2,R16
 03DC 2901              movw R4,R18
 03DE 240E              add R2,R20
 03E0 351E              adc R3,R21
 03E2 461E              adc R4,R22
 03E4 571E              adc R5,R23
 03E6 30921100          sts _id3+1,R3
 03EA 20921000          sts _id3,R2
 03EE 50921300          sts _id3+2+1,R5
 03F2 40921200          sts _id3+2,R4
 03F6                   .dbline 279
 03F6           ;        Pass_Flag <<= 1;  
 03F6 20900500          lds R2,_Pass_Flag
 03FA 220C              lsl R2
 03FC 20920500          sts _Pass_Flag,R2
 0400                   .dbline 280
 0400           ;        id4 = BASE_ADDR/256+tempp*256+1;
 0400 2880              ldd R2,y+0
 0402 3980              ldd R3,y+1
 0404 4A80              ldd R4,y+2
 0406 5B80              ldd R5,y+3
 0408 40E0              ldi R20,0
 040A 51E0              ldi R21,1
 040C 60E0              ldi R22,0
 040E 70E0              ldi R23,0
 0410 5A92              st -y,R5
 0412 4A92              st -y,R4
 0414 3A92              st -y,R3
 0416 2A92              st -y,R2
 0418 8A01              movw R16,R20
 041A 9B01              movw R18,R22
 041C 0E940000          xcall empy32s
 0420 41E0              ldi R20,1
 0422 58E2              ldi R21,40
 0424 60E0              ldi R22,0
 0426 70E0              ldi R23,0
 0428 1801              movw R2,R16
 042A 2901              movw R4,R18
 042C 240E              add R2,R20
 042E 351E              adc R3,R21
 0430 461E              adc R4,R22
 0432 571E              adc R5,R23
 0434 30920D00          sts _id4+1,R3
 0438 20920C00          sts _id4,R2
 043C 50920F00          sts _id4+2+1,R5
 0440 40920E00          sts _id4+2,R4
 0444                   .dbline 281
 0444           ;        id5 = BASE_ADDR/256+tempp*256+2;
 0444 2880              ldd R2,y+0
 0446 3980              ldd R3,y+1
 0448 4A80              ldd R4,y+2
 044A 5B80              ldd R5,y+3
 044C 40E0              ldi R20,0
 044E 51E0              ldi R21,1
 0450 60E0              ldi R22,0
 0452 70E0              ldi R23,0
 0454 5A92              st -y,R5
 0456 4A92              st -y,R4
 0458 3A92              st -y,R3
 045A 2A92              st -y,R2
 045C 8A01              movw R16,R20
 045E 9B01              movw R18,R22
 0460 0E940000          xcall empy32s
 0464 42E0              ldi R20,2
 0466 58E2              ldi R21,40
 0468 60E0              ldi R22,0
 046A 70E0              ldi R23,0
 046C 1801              movw R2,R16
 046E 2901              movw R4,R18
 0470 240E              add R2,R20
 0472 351E              adc R3,R21
 0474 461E              adc R4,R22
 0476 571E              adc R5,R23
 0478 30920900          sts _id5+1,R3
 047C 20920800          sts _id5,R2
 0480 50920B00          sts _id5+2+1,R5
 0484 40920A00          sts _id5+2,R4
 0488                   .dbline 282
 0488           ;        Pass_Flag <<= 1;
 0488 20900500          lds R2,_Pass_Flag
 048C 220C              lsl R2
 048E 20920500          sts _Pass_Flag,R2
 0492                   .dbline 283
 0492           ;          WDR();
 0492 A895              wdr
 0494                   .dbline 284
 0494           ;        CANMOBID[0] = id1;
 0494 40901A00          lds R4,_id1+2
 0498 50901B00          lds R5,_id1+2+1
 049C 20901800          lds R2,_id1
 04A0 30901900          lds R3,_id1+1
 04A4 30920100          sts _CANMOBID+1,R3
 04A8 20920000          sts _CANMOBID,R2
 04AC 50920300          sts _CANMOBID+2+1,R5
 04B0 40920200          sts _CANMOBID+2,R4
 04B4                   .dbline 285
 04B4           ;        CANMOBID[1] = id2;
 04B4 40901600          lds R4,_id2+2
 04B8 50901700          lds R5,_id2+2+1
 04BC 20901400          lds R2,_id2
 04C0 30901500          lds R3,_id2+1
 04C4 30920500          sts _CANMOBID+4+1,R3
 04C8 20920400          sts _CANMOBID+4,R2
 04CC 50920700          sts _CANMOBID+4+2+1,R5
 04D0 40920600          sts _CANMOBID+4+2,R4
 04D4                   .dbline 286
 04D4           ;        CANMOBID[3] = id3;
 04D4 40901200          lds R4,_id3+2
 04D8 50901300          lds R5,_id3+2+1
 04DC 20901000          lds R2,_id3
 04E0 30901100          lds R3,_id3+1
 04E4 30920D00          sts _CANMOBID+12+1,R3
 04E8 20920C00          sts _CANMOBID+12,R2
 04EC 50920F00          sts _CANMOBID+12+2+1,R5
 04F0 40920E00          sts _CANMOBID+12+2,R4
 04F4                   .dbline 287
 04F4           ;        CANMOBID[4] = id4;
 04F4 40900E00          lds R4,_id4+2
 04F8 50900F00          lds R5,_id4+2+1
 04FC 20900C00          lds R2,_id4
 0500 30900D00          lds R3,_id4+1
 0504 30921100          sts _CANMOBID+16+1,R3
 0508 20921000          sts _CANMOBID+16,R2
 050C 50921300          sts _CANMOBID+16+2+1,R5
 0510 40921200          sts _CANMOBID+16+2,R4
 0514                   .dbline 288
 0514           ;        CANMOBID[5] = id5;
 0514 40900A00          lds R4,_id5+2
 0518 50900B00          lds R5,_id5+2+1
 051C 20900800          lds R2,_id5
 0520 30900900          lds R3,_id5+1
 0524 30921500          sts _CANMOBID+20+1,R3
 0528 20921400          sts _CANMOBID+20,R2
 052C 50921700          sts _CANMOBID+20+2+1,R5
 0530 40921600          sts _CANMOBID+20+2,R4
 0534                   .dbline 289
 0534           ;         if(Pass_Flag!=0x08)
 0534 80910500          lds R24,_Pass_Flag
 0538 8830              cpi R24,8
 053A 11F0              breq L26
 053C                   .dbline 290
 053C           ;           RESET;
 053C 0C940000          jmp 0x00000
 0540           L26:
 0540                   .dbline 291
 0540           ;        can_init ();  
 0540 0E940000          xcall _can_init
 0544                   .dbline 292
 0544           ;       SEI();   
 0544 7894              sei
 0546                   .dbline 293
 0546           ;    }
 0546           L20:
 0546                   .dbline 295
 0546           ;    
 0546           ;     if(send_count>25)                                          //连续25次发送失败则复位
 0546 89E1              ldi R24,25
 0548 20900000          lds R2,_send_count
 054C 8215              cp R24,R2
 054E 10F4              brsh L28
 0550                   .dbline 296
 0550           ;       RESET;
 0550 0C940000          jmp 0x00000
 0554           L28:
 0554                   .dbline 298
 0554           ;       
 0554           ;     if(Temp_Flag == 0x5a)                                       //定时读去状态标志
 0554 80910300          lds R24,_Temp_Flag
 0558 8A35              cpi R24,90
 055A 09F0              breq X2
 055C 6AC0              xjmp L30
 055E           X2:
 055E                   .dbline 299
 055E           ;   {  
 055E                   .dbline 300
 055E           ;     CLI();
 055E F894              cli
 0560                   .dbline 302
 0560           ;       
 0560           ;       WDR();
 0560 A895              wdr
 0562                   .dbline 303
 0562           ;       TIMSK0 = 0x00; 
 0562 2224              clr R2
 0564 20926E00          sts 110,R2
 0568                   .dbline 304
 0568           ;       if(LED)
 0568                   .dbline 305
 0568           ;       {
 0568                   .dbline 306
 0568           ;       PORTB &= 0X3F;                                           //灭网络灯
 0568 85B1              in R24,0x5
 056A 8F73              andi R24,63
 056C 85B9              out 0x5,R24
 056E                   .dbline 307
 056E           ;       }
 056E 03C0              xjmp L33
 0570           L32:
 0570                   .dbline 310
 0570           ;       else
 0570           ;       
 0570           ;       PORTB |= 0Xc0;              
 0570 85B1              in R24,0x5
 0572 806C              ori R24,192
 0574 85B9              out 0x5,R24
 0576           L33:
 0576                   .dbline 312
 0576           ;       
 0576           ;     DI_handle();                                             //读取开关状态
 0576 0E940000          xcall _DI_handle
 057A                   .dbline 314
 057A           ;    
 057A           ;     for(i=0;i<12;i++)
 057A AA24              clr R10
 057C 4AC0              xjmp L37
 057E           L34:
 057E                   .dbline 315
 057E           ;    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -