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

📄 can.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0526           L71:
 0526                   .dbline 217
 0526           ;       
 0526           ;       err_temp = CANREC;                   //读取接收错误计数器
 0526 A090EB00          lds R10,235
 052A                   .dbline 218
 052A           ;       if(err_temp>128)
 052A 80E8              ldi R24,128
 052C 8A15              cp R24,R10
 052E 10F4              brsh L73
 0530                   .dbline 219
 0530           ;       RESET;
 0530 0C940000          jmp 0x00000
 0534           L73:
 0534                   .dbline 221
 0534           ;       
 0534           ;       if(RCtemp2&(0x07))
 0534 8DA1              ldd R24,y+37
 0536 9EA1              ldd R25,y+38
 0538 8770              andi R24,7
 053A 9070              andi R25,0
 053C 8030              cpi R24,0
 053E 8907              cpc R24,R25
 0540 A1F1              breq L75
 0542           X4:
 0542                   .dbline 222
 0542           ;       {
 0542                   .dbline 223
 0542           ;       for(i=0;i<3;i++)                    //查询前三个邮箱中断状态
 0542 0024              clr R0
 0544 0CA2              std y+36,R0
 0546 2DC0              xjmp L80
 0548           L77:
 0548                   .dbline 224
 0548           ;       {
 0548                   .dbline 225
 0548           ;         tempp=(1<<i);
 0548 2CA1              ldd R18,y+36
 054A 3327              clr R19
 054C 01E0              ldi R16,1
 054E 10E0              ldi R17,0
 0550 0E940000          xcall lsl16
 0554 6801              movw R12,R16
 0556                   .dbline 226
 0556           ;         RCF=(RCtemp2&tempp);
 0556 ADA0              ldd R10,y+37
 0558 BEA0              ldd R11,y+38
 055A A022              and R10,R16
 055C B122              and R11,R17
 055E                   .dbline 227
 055E           ;          if(RCF!=0)
 055E AA20              tst R10
 0560 11F4              brne X5
 0562 BB20              tst R11
 0564 D9F0              breq L81
 0566           X5:
 0566                   .dbline 228
 0566           ;           {  
 0566                   .dbline 229
 0566           ;                CANPAGE = i<<4;
 0566 8CA1              ldd R24,y+36
 0568 8F70              andi R24,#0x0F
 056A 8295              swap R24
 056C 8093ED00          sts 237,R24
 0570                   .dbline 230
 0570           ;                sta_temp = CANSTMOB;
 0570 E090EE00          lds R14,238
 0574                   .dbline 231
 0574           ;                CANSTMOB &= ~(1<<TXOK);
 0574 8091EE00          lds R24,238
 0578 8F7B              andi R24,191
 057A 8093EE00          sts 238,R24
 057E                   .dbline 232
 057E           ;                CANCDMOB = 0x18; 
 057E 88E1              ldi R24,24
 0580 8093EF00          sts 239,R24
 0584                   .dbline 233
 0584           ;                if(sta_temp&0x40)             //是发送完成中断
 0584 8E2D              mov R24,R14
 0586 8074              andi R24,64
 0588 49F0              breq L83
 058A                   .dbline 234
 058A           ;                {
 058A                   .dbline 235
 058A           ;                 send_count = 0;              //清发送计数器
 058A 2224              clr R2
 058C 20920000          sts _send_count,R2
 0590                   .dbline 236
 0590           ;                    if(LED)
 0590                   .dbline 238
 0590           ;                        
 0590           ;                  PORTB |=  0x40;
 0590 2E9A              sbi 0x5,6
 0592 03C0              xjmp L86
 0594           L85:
 0594                   .dbline 241
 0594           ;                     else 
 0594           ;                         
 0594           ;                      PORTB &=  0xbf;
 0594 85B1              in R24,0x5
 0596 8F7B              andi R24,191
 0598 85B9              out 0x5,R24
 059A           L86:
 059A                   .dbline 243
 059A           ;                  
 059A           ;                   WDR();
 059A A895              wdr
 059C                   .dbline 244
 059C           ;                }
 059C           L83:
 059C                   .dbline 245
 059C           ;               }
 059C           L81:
 059C                   .dbline 246
 059C           L78:
 059C                   .dbline 223
 059C 0CA0              ldd R0,y+36
 059E 0394              inc R0
 05A0 0CA2              std y+36,R0
 05A2           L80:
 05A2                   .dbline 223
 05A2 8CA1              ldd R24,y+36
 05A4 8330              cpi R24,3
 05A6 80F2              brlo L77
 05A8                   .dbline 247
 05A8           ;       }
 05A8           ;       }
 05A8 EDC0              xjmp L76
 05AA           L75:
 05AA                   .dbline 248
 05AA           ;       else if(RCtemp2&(0x38))
 05AA 8DA1              ldd R24,y+37
 05AC 9EA1              ldd R25,y+38
 05AE 8873              andi R24,56
 05B0 9070              andi R25,0
 05B2 8030              cpi R24,0
 05B4 8907              cpc R24,R25
 05B6 09F4              brne X8
 05B8 E5C0              xjmp L87
 05BA           X8:
 05BA           X6:
 05BA                   .dbline 249
 05BA           ;       {
 05BA                   .dbline 250
 05BA           ;     for(i=3;i<6;i++)                       //判断哪个邮箱产生接收中断
 05BA 83E0              ldi R24,3
 05BC 8CA3              std y+36,R24
 05BE DEC0              xjmp L92
 05C0           L89:
 05C0                   .dbline 251
 05C0           ;        {
 05C0                   .dbline 252
 05C0           ;         tempp=(1<<i);
 05C0 2CA1              ldd R18,y+36
 05C2 3327              clr R19
 05C4 01E0              ldi R16,1
 05C6 10E0              ldi R17,0
 05C8 0E940000          xcall lsl16
 05CC 6801              movw R12,R16
 05CE                   .dbline 253
 05CE           ;         RCF=(RCtemp2&tempp);
 05CE ADA0              ldd R10,y+37
 05D0 BEA0              ldd R11,y+38
 05D2 A022              and R10,R16
 05D4 B122              and R11,R17
 05D6                   .dbline 254
 05D6           ;         if(RCF!=0)
 05D6 AA20              tst R10
 05D8 19F4              brne X7
 05DA BB20              tst R11
 05DC 09F4              brne X9
 05DE CBC0              xjmp L93
 05E0           X9:
 05E0           X7:
 05E0                   .dbline 255
 05E0           ;           {  
 05E0                   .dbline 256
 05E0           ;                   if(LED)
 05E0                   .dbline 257
 05E0           ;              PORTB |= 0X80;
 05E0 2F9A              sbi 0x5,7
 05E2 03C0              xjmp L96
 05E4           L95:
 05E4                   .dbline 259
 05E4           ;                       else
 05E4           ;                     PORTB &= 0X7f;
 05E4 85B1              in R24,0x5
 05E6 8F77              andi R24,127
 05E8 85B9              out 0x5,R24
 05EA           L96:
 05EA                   .dbline 260
 05EA           ;                 CANPAGE = i<<4;
 05EA 8CA1              ldd R24,y+36
 05EC 8F70              andi R24,#0x0F
 05EE 8295              swap R24
 05F0 8093ED00          sts 237,R24
 05F4                   .dbline 261
 05F4           ;                  WDR();
 05F4 A895              wdr
 05F6                   .dbline 262
 05F6           ;                 for (nb_data = 0; nb_data <8; nb_data++)  
 05F6 EE24              clr R14
 05F8 10C0              xjmp L100
 05FA           L97:
 05FA                   .dbline 263
 05FA                   .dbline 264
 05FA 8CE0              ldi R24,12
 05FC 0CA0              ldd R0,y+36
 05FE 809D              mul R24,R0
 0600 1001              movw R2,R0
 0602 80E0              ldi R24,<_rece_data-36+4
 0604 90E0              ldi R25,>_rece_data-36+4
 0606 280E              add R2,R24
 0608 391E              adc R3,R25
 060A EE2D              mov R30,R14
 060C FF27              clr R31
 060E E20D              add R30,R2
 0610 F31D              adc R31,R3
 0612 2090FA00          lds R2,250
 0616 2082              std z+0,R2
 0618                   .dbline 265
 0618           L98:
 0618                   .dbline 262
 0618 E394              inc R14
 061A           L100:
 061A                   .dbline 262
 061A 8E2D              mov R24,R14
 061C 8830              cpi R24,8
 061E 68F3              brlo L97
 0620                   .dbline 266
 0620           ;             {
 0620           ;               rece_data[i-3].Data[nb_data]=CANMSG;
 0620           ;              }
 0620           ;          rece_data[i-3].ID = 0;
 0620 8CE0              ldi R24,12
 0622 0CA0              ldd R0,y+36
 0624 809D              mul R24,R0
 0626 F001              movw R30,R0
 0628 80E0              ldi R24,<_rece_data-36
 062A 90E0              ldi R25,>_rece_data-36
 062C E80F              add R30,R24
 062E F91F              adc R31,R25
 0630 40E0              ldi R20,0
 0632 50E0              ldi R21,0
 0634 60E0              ldi R22,0
 0636 70E0              ldi R23,0
 0638 4083              std z+0,R20
 063A 5183              std z+1,R21
 063C 6283              std z+2,R22
 063E 7383              std z+3,R23
 0640                   .dbline 267
 0640           ;        rece_data[i-3].ID |= ((unsigned long) CANIDT1<<24);    //get identifier
 0640 8CE0              ldi R24,12
 0642 0CA0              ldd R0,y+36
 0644 809D              mul R24,R0
 0646 1001              movw R2,R0
 0648 80E0              ldi R24,<_rece_data-36
 064A 90E0              ldi R25,>_rece_data-36
 064C 280E              add R2,R24
 064E 391E              adc R3,R25
 0650 88E1              ldi R24,24
 0652 90E0              ldi R25,0
 0654 0091F300          lds R16,243
 0658 1127              clr R17
 065A 2227              clr R18
 065C 3327              clr R19
 065E 8A93              st -y,R24
 0660 0E940000          xcall lsl32
 0664 F101              movw R30,R2
 0666 4080              ldd R4,z+0
 0668 5180              ldd R5,z+1
 066A 6280              ldd R6,z+2
 066C 7380              ldd R7,z+3
 066E 402A              or R4,R16
 0670 512A              or R5,R17
 0672 622A              or R6,R18
 0674 732A              or R7,R19
 0676 4082              std z+0,R4
 0678 5182              std z+1,R5
 067A 6282              std z+2,R6
 067C 7382              std z+3,R7
 067E                   .dbline 268
 067E           ;        rece_data[i-3].ID |= ((unsigned long) CANIDT2<<16);
 067E 8CE0              ldi R24,12
 0680 0CA0              ldd R0,y+36
 0682 809D              mul R24,R0
 0684 1001              movw R2,R0
 0686 80E0              ldi R24,<_rece_data-36
 0688 90E0              ldi R25,>_rece_data-36
 068A 280E              add R2,R24
 068C 391E              adc R3,R25
 068E 4090F200          lds R4,242
 0692 5524              clr R5
 0694 6624              clr R6
 0696 7724              clr R7
 0698 3201              movw R6,R4
 069A 4424              clr R4
 069C 5524              clr R5
 069E F101              movw R30,R2
 06A0 4081              ldd R20,z+0
 06A2 5181              ldd R21,z+1
 06A4 6281              ldd R22,z+2
 06A6 7381              ldd R23,z+3
 06A8 4429              or R20,R4
 06AA 5529              or R21,R5
 06AC 6629              or R22,R6
 06AE 7729              or R23,R7
 06B0 4083              std z+0,R20
 06B2 5183              std z+1,R21
 06B4 6283              std z+2,R22
 06B6 7383              std z+3,R23
 06B8         

⌨️ 快捷键说明

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