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

📄 main.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 057E                   .dbline 316
 057E           ;       if(DI_data_pre[i] == DI_data_cur[i])                   //去抖处理
 057E 80E0              ldi R24,<_DI_data_cur
 0580 90E0              ldi R25,>_DI_data_cur
 0582 EA2D              mov R30,R10
 0584 FF27              clr R31
 0586 E80F              add R30,R24
 0588 F91F              adc R31,R25
 058A 2080              ldd R2,z+0
 058C 80E0              ldi R24,<_DI_data_pre
 058E 90E0              ldi R25,>_DI_data_pre
 0590 EA2D              mov R30,R10
 0592 FF27              clr R31
 0594 E80F              add R30,R24
 0596 F91F              adc R31,R25
 0598 3080              ldd R3,z+0
 059A 3214              cp R3,R2
 059C 79F4              brne L38
 059E                   .dbline 317
 059E           ;      {
 059E                   .dbline 318
 059E           ;          DI_data[i] = DI_data_cur[i];
 059E 80E0              ldi R24,<_DI_data_cur
 05A0 90E0              ldi R25,>_DI_data_cur
 05A2 EA2D              mov R30,R10
 05A4 FF27              clr R31
 05A6 E80F              add R30,R24
 05A8 F91F              adc R31,R25
 05AA 2080              ldd R2,z+0
 05AC 80E0              ldi R24,<_DI_data
 05AE 90E0              ldi R25,>_DI_data
 05B0 EA2D              mov R30,R10
 05B2 FF27              clr R31
 05B4 E80F              add R30,R24
 05B6 F91F              adc R31,R25
 05B8 2082              std z+0,R2
 05BA                   .dbline 319
 05BA           ;         }
 05BA 1CC0              xjmp L39
 05BC           L38:
 05BC                   .dbline 320
 05BC           ;       else if (DI_data_pre[i] != DI_data_cur[i])
 05BC 80E0              ldi R24,<_DI_data_cur
 05BE 90E0              ldi R25,>_DI_data_cur
 05C0 EA2D              mov R30,R10
 05C2 FF27              clr R31
 05C4 E80F              add R30,R24
 05C6 F91F              adc R31,R25
 05C8 2080              ldd R2,z+0
 05CA 80E0              ldi R24,<_DI_data_pre
 05CC 90E0              ldi R25,>_DI_data_pre
 05CE EA2D              mov R30,R10
 05D0 FF27              clr R31
 05D2 E80F              add R30,R24
 05D4 F91F              adc R31,R25
 05D6 3080              ldd R3,z+0
 05D8 3214              cp R3,R2
 05DA 61F0              breq L40
 05DC                   .dbline 321
 05DC           ;            {
 05DC                   .dbline 322
 05DC           ;                 DI_data[i] = DI_data_pre[i];
 05DC EA2D              mov R30,R10
 05DE FF27              clr R31
 05E0 E80F              add R30,R24
 05E2 F91F              adc R31,R25
 05E4 2080              ldd R2,z+0
 05E6 80E0              ldi R24,<_DI_data
 05E8 90E0              ldi R25,>_DI_data
 05EA EA2D              mov R30,R10
 05EC FF27              clr R31
 05EE E80F              add R30,R24
 05F0 F91F              adc R31,R25
 05F2 2082              std z+0,R2
 05F4                   .dbline 323
 05F4           ;                } 
 05F4           L40:
 05F4           L39:
 05F4                   .dbline 324
 05F4 80E0              ldi R24,<_DI_data_cur
 05F6 90E0              ldi R25,>_DI_data_cur
 05F8 EA2D              mov R30,R10
 05FA FF27              clr R31
 05FC E80F              add R30,R24
 05FE F91F              adc R31,R25
 0600 2080              ldd R2,z+0
 0602 80E0              ldi R24,<_DI_data_pre
 0604 90E0              ldi R25,>_DI_data_pre
 0606 EA2D              mov R30,R10
 0608 FF27              clr R31
 060A E80F              add R30,R24
 060C F91F              adc R31,R25
 060E 2082              std z+0,R2
 0610                   .dbline 325
 0610           L35:
 0610                   .dbline 314
 0610 A394              inc R10
 0612           L37:
 0612                   .dbline 314
 0612 8A2D              mov R24,R10
 0614 8C30              cpi R24,12
 0616 08F4              brsh X3
 0618 B2CF              xjmp L34
 061A           X3:
 061A                   .dbline 326
 061A           ;         DI_data_pre[i] = DI_data_cur[i];                      //新旧值更新
 061A           ;       }
 061A           ;       Temp_Flag = 0x00;                                       //清除定时标志
 061A 2224              clr R2
 061C 20920300          sts _Temp_Flag,R2
 0620                   .dbline 328
 0620           ;       
 0620           ;       Time = 0;
 0620 20920200          sts _Time,R2
 0624                   .dbline 330
 0624           ;       
 0624           ;       timer0_init();
 0624 0E940000          xcall _timer0_init
 0628                   .dbline 332
 0628           ;       
 0628           ;       TIMSK0 = 0x01; //timer interrupt sources
 0628 81E0              ldi R24,1
 062A 80936E00          sts 110,R24
 062E                   .dbline 334
 062E           ;       
 062E           ;       WDR();
 062E A895              wdr
 0630                   .dbline 335
 0630           ;       SEI();
 0630 7894              sei
 0632                   .dbline 336
 0632           ;       }
 0632           L30:
 0632                   .dbline 338
 0632           ;       
 0632           ;    if(Send_Flag == 0x5a)      
 0632 80910400          lds R24,_Send_Flag
 0636 8A35              cpi R24,90
 0638 09F0              breq X4
 063A 88C0              xjmp L42
 063C           X4:
 063C                   .dbline 339
 063C           ;    {
 063C                   .dbline 340
 063C           ;      WDR();
 063C A895              wdr
 063E                   .dbline 341
 063E           ;     msg[0].ID = id1;                                     //前八个通道数据发送
 063E 40901A00          lds R4,_id1+2
 0642 50901B00          lds R5,_id1+2+1
 0646 20901800          lds R2,_id1
 064A 30901900          lds R3,_id1+1
 064E 30924100          sts _msg+1,R3
 0652 20924000          sts _msg,R2
 0656 50924300          sts _msg+2+1,R5
 065A 40924200          sts _msg+2,R4
 065E                   .dbline 342
 065E           ;       for(i=0;i<8;i++)
 065E AA24              clr R10
 0660 0FC0              xjmp L47
 0662           L44:
 0662                   .dbline 343
 0662                   .dbline 344
 0662 80E0              ldi R24,<_DI_data
 0664 90E0              ldi R25,>_DI_data
 0666 EA2D              mov R30,R10
 0668 FF27              clr R31
 066A E80F              add R30,R24
 066C F91F              adc R31,R25
 066E 2080              ldd R2,z+0
 0670 80E0              ldi R24,<_msg+4
 0672 90E0              ldi R25,>_msg+4
 0674 EA2D              mov R30,R10
 0676 FF27              clr R31
 0678 E80F              add R30,R24
 067A F91F              adc R31,R25
 067C 2082              std z+0,R2
 067E                   .dbline 345
 067E           L45:
 067E                   .dbline 342
 067E A394              inc R10
 0680           L47:
 0680                   .dbline 342
 0680 8A2D              mov R24,R10
 0682 8830              cpi R24,8
 0684 70F3              brlo L44
 0686                   .dbline 346
 0686           ;       {
 0686           ;       msg[0].Data[i] =  DI_data[i];
 0686           ;       }
 0686           ;     can_tx (msg[0]);
 0686 80E0              ldi R24,<_msg
 0688 90E0              ldi R25,>_msg
 068A FE01              movw R30,R28
 068C 3496              adiw R30,4
 068E 0CE0              ldi R16,12
 0690 10E0              ldi R17,0
 0692 FA93              st -y,R31
 0694 EA93              st -y,R30
 0696 9A93              st -y,R25
 0698 8A93              st -y,R24
 069A 0E940000          xcall asgnblk
 069E 8E01              movw R16,R28
 06A0 0C5F              subi R16,252  ; offset = 4
 06A2 1F4F              sbci R17,255
 06A4 0E940000          xcall _can_tx
 06A8                   .dbline 347
 06A8           ;       send_count++;
 06A8 80910000          lds R24,_send_count
 06AC 8F5F              subi R24,255    ; addi 1
 06AE 80930000          sts _send_count,R24
 06B2                   .dbline 348
 06B2           ;       msg[1].ID = id2;
 06B2 40901600          lds R4,_id2+2
 06B6 50901700          lds R5,_id2+2+1
 06BA 20901400          lds R2,_id2
 06BE 30901500          lds R3,_id2+1
 06C2 30924D00          sts _msg+12+1,R3
 06C6 20924C00          sts _msg+12,R2
 06CA 50924F00          sts _msg+12+2+1,R5
 06CE 40924E00          sts _msg+12+2,R4
 06D2                   .dbline 349
 06D2           ;       for(i=0;i<4;i++)                                     //后四个通道数据发送
 06D2 AA24              clr R10
 06D4 0FC0              xjmp L53
 06D6           L50:
 06D6                   .dbline 350
 06D6                   .dbline 351
 06D6 80E0              ldi R24,<_DI_data+8
 06D8 90E0              ldi R25,>_DI_data+8
 06DA EA2D              mov R30,R10
 06DC FF27              clr R31
 06DE E80F              add R30,R24
 06E0 F91F              adc R31,R25
 06E2 2080              ldd R2,z+0
 06E4 80E0              ldi R24,<_msg+12+4
 06E6 90E0              ldi R25,>_msg+12+4
 06E8 EA2D              mov R30,R10
 06EA FF27              clr R31
 06EC E80F              add R30,R24
 06EE F91F              adc R31,R25
 06F0 2082              std z+0,R2
 06F2                   .dbline 352
 06F2           L51:
 06F2                   .dbline 349
 06F2 A394              inc R10
 06F4           L53:
 06F4                   .dbline 349
 06F4 8A2D              mov R24,R10
 06F6 8430              cpi R24,4
 06F8 70F3              brlo L50
 06FA                   .dbline 353
 06FA           ;       {
 06FA           ;       msg[1].Data[i] =  DI_data[i+8]; 
 06FA           ;       }
 06FA           ;     for(i=4;i<8;i++)
 06FA 84E0              ldi R24,4
 06FC A82E              mov R10,R24
 06FE 09C0              xjmp L60
 0700           L57:
 0700                   .dbline 354
 0700                   .dbline 355
 0700 80E0              ldi R24,<_msg+12+4
 0702 90E0              ldi R25,>_msg+12+4
 0704 EA2D              mov R30,R10
 0706 FF27              clr R31
 0708 E80F              add R30,R24
 070A F91F              adc R31,R25
 070C 2224              clr R2
 070E 2082              std z+0,R2
 0710                   .dbline 356
 0710           L58:
 0710                   .dbline 353
 0710 A394              inc R10
 0712           L60:
 0712                   .dbline 353
 0712 8A2D              mov R24,R10
 0714 8830              cpi R24,8
 0716 A0F3              brlo L57
 0718                   .dbline 357
 0718           ;       {
 0718           ;       msg[1].Data[i]=0x00;
 0718           ;       }
 0718           ;     can_tx (msg[1]);
 0718 80E0              ldi R24,<_msg+12
 071A 90E0              ldi R25,>_msg+12
 071C FE01              movw R30,R28
 071E 7096              adiw R30,16
 0720 0CE0              ldi R16,12
 0722 10E0              ldi R17,0
 0724 FA93              st -y,R31
 0726 EA93              st -y,R30
 0728 9A93              st -y,R25
 072A 8A93              st -y,R24
 072C 0E940000          xcall asgnblk
 0730 8E01              movw R16,R28
 0732 005F              subi R16,240  ; offset = 16
 0734 1F4F              sbci R17,255
 0736 0E940000          xcall _can_tx
 073A                   .dbline 358
 073A           ;       send_count++;
 073A 80910000          lds R24,_send_count
 073E 8F5F              subi R24,255    ; addi 1
 0740 80930000          sts _send_count,R24
 0744                   .dbline 359
 0744           ;       Send_Flag = 0x00;
 0744 2224              clr R2
 0746 20920400          sts _Send_Flag,R2
 074A                   .dbline 360
 074A           ;        WDR();
 074A A895              wdr
 074C                   .dbline 361
 074C           ;      }
 074C           L42:
 074C                   .dbline 363
 074C           L18:
 074C                   .dbline 263
 074C D0CD              xjmp L17
 074E           X0:
 074E                   .dbline -2
 074E           L6:
 074E 6C96              adiw R28,28
 0750                   .dbline 0 ; func end
 0750 0895              ret
 0752                   .dbsym 

⌨️ 快捷键说明

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