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

📄 can.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0028                   .dbline 50
 0028                   .dbline 51
 0028 84E0              ldi R24,4
 002A 849F              mul R24,R20
 002C F001              movw R30,R0
 002E 80E0              ldi R24,<_CANMOBID
 0030 90E0              ldi R25,>_CANMOBID
 0032 E80F              add R30,R24
 0034 F91F              adc R31,R25
 0036 0081              ldd R16,z+0
 0038 1181              ldd R17,z+1
 003A 2281              ldd R18,z+2
 003C 3381              ldd R19,z+3
 003E 83E0              ldi R24,3
 0040 90E0              ldi R25,0
 0042 8A93              st -y,R24
 0044 0E940000          xcall lsl32
 0048 0883              std y+0,R16
 004A 1983              std y+1,R17
 004C 2A83              std y+2,R18
 004E 3B83              std y+3,R19
 0050                   .dbline 52
 0050 6881              ldd R22,y+0
 0052 7981              ldd R23,y+1
 0054                   .dbline 53
 0054 2880              ldd R2,y+0
 0056 3980              ldd R3,y+1
 0058 4A80              ldd R4,y+2
 005A 5B80              ldd R5,y+3
 005C 5201              movw R10,R4
 005E                   .dbline 54
 005E 84E0              ldi R24,4
 0060 849F              mul R24,R20
 0062 F001              movw R30,R0
 0064 80E0              ldi R24,<_CANIDT+3
 0066 90E0              ldi R25,>_CANIDT+3
 0068 E80F              add R30,R24
 006A F91F              adc R31,R25
 006C 6083              std z+0,R22
 006E                   .dbline 55
 006E 84E0              ldi R24,4
 0070 849F              mul R24,R20
 0072 F001              movw R30,R0
 0074 80E0              ldi R24,<_CANIDT+2
 0076 90E0              ldi R25,>_CANIDT+2
 0078 E80F              add R30,R24
 007A F91F              adc R31,R25
 007C 1B01              movw R2,R22
 007E 232C              mov R2,R3
 0080 3324              clr R3
 0082 2082              std z+0,R2
 0084                   .dbline 56
 0084 84E0              ldi R24,4
 0086 849F              mul R24,R20
 0088 F001              movw R30,R0
 008A 80E0              ldi R24,<_CANIDT+1
 008C 90E0              ldi R25,>_CANIDT+1
 008E E80F              add R30,R24
 0090 F91F              adc R31,R25
 0092 A082              std z+0,R10
 0094                   .dbline 57
 0094 84E0              ldi R24,4
 0096 849F              mul R24,R20
 0098 F001              movw R30,R0
 009A 80E0              ldi R24,<_CANIDT
 009C 90E0              ldi R25,>_CANIDT
 009E E80F              add R30,R24
 00A0 F91F              adc R31,R25
 00A2 1501              movw R2,R10
 00A4 232C              mov R2,R3
 00A6 3324              clr R3
 00A8 2082              std z+0,R2
 00AA                   .dbline 58
 00AA 80910000          lds R24,_Pass_Flag
 00AE 8F5F              subi R24,255    ; addi 1
 00B0 80930000          sts _Pass_Flag,R24
 00B4                   .dbline 59
 00B4 0000              nop
 00B6                   .dbline 60
 00B6           L4:
 00B6                   .dbline 49
 00B6 4395              inc R20
 00B8           L6:
 00B8                   .dbline 49
 00B8 4630              cpi R20,6
 00BA 08F4              brsh X0
 00BC B5CF              xjmp L3
 00BE           X0:
 00BE                   .dbline 61
 00BE           ;       {
 00BE           ;        temp=CANMOBID[i]<<3;                      //ID初始化
 00BE           ;        temp1=(unsigned int)temp;
 00BE           ;        temp2=(unsigned int)(temp/0x00010000);
 00BE           ;        CANIDT[i][3]=(Uchar)temp1;
 00BE           ;        CANIDT[i][2]=(Uchar)(temp1>>8);
 00BE           ;        CANIDT[i][1]=(Uchar)temp2;
 00BE           ;        CANIDT[i][0]=(Uchar)(temp2>>8); 
 00BE           ;        Pass_Flag = Pass_Flag + 1;
 00BE           ;        NOP();
 00BE           ;       }
 00BE           ;     if(Pass_Flag!=0x06)
 00BE 80910000          lds R24,_Pass_Flag
 00C2 8630              cpi R24,6
 00C4 11F0              breq L10
 00C6                   .dbline 62
 00C6           ;         RESET;
 00C6 0C940000          jmp 0x00000
 00CA           L10:
 00CA                   .dbline 63
 00CA           ;        WDR();
 00CA A895              wdr
 00CC                   .dbline 65
 00CC           ;        
 00CC           ;        Pass_Flag = 0x00;
 00CC 2224              clr R2
 00CE 20920000          sts _Pass_Flag,R2
 00D2                   .dbline 66
 00D2           ;       for(i=0;i<6;i++)
 00D2 4427              clr R20
 00D4 48C0              xjmp L15
 00D6           L12:
 00D6                   .dbline 67
 00D6                   .dbline 68
 00D6 84E0              ldi R24,4
 00D8 849F              mul R24,R20
 00DA F001              movw R30,R0
 00DC 80E0              ldi R24,<_CANMOBMD
 00DE 90E0              ldi R25,>_CANMOBMD
 00E0 E80F              add R30,R24
 00E2 F91F              adc R31,R25
 00E4 0081              ldd R16,z+0
 00E6 1181              ldd R17,z+1
 00E8 2281              ldd R18,z+2
 00EA 3381              ldd R19,z+3
 00EC 83E0              ldi R24,3
 00EE 90E0              ldi R25,0
 00F0 8A93              st -y,R24
 00F2 0E940000          xcall lsl32
 00F6 0883              std y+0,R16
 00F8 1983              std y+1,R17
 00FA 2A83              std y+2,R18
 00FC 3B83              std y+3,R19
 00FE                   .dbline 69
 00FE 6881              ldd R22,y+0
 0100 7981              ldd R23,y+1
 0102                   .dbline 70
 0102 2880              ldd R2,y+0
 0104 3980              ldd R3,y+1
 0106 4A80              ldd R4,y+2
 0108 5B80              ldd R5,y+3
 010A 5201              movw R10,R4
 010C                   .dbline 71
 010C 84E0              ldi R24,4
 010E 849F              mul R24,R20
 0110 F001              movw R30,R0
 0112 80E0              ldi R24,<_CANIDM+3
 0114 90E0              ldi R25,>_CANIDM+3
 0116 E80F              add R30,R24
 0118 F91F              adc R31,R25
 011A 6083              std z+0,R22
 011C                   .dbline 72
 011C 84E0              ldi R24,4
 011E 849F              mul R24,R20
 0120 F001              movw R30,R0
 0122 80E0              ldi R24,<_CANIDM+2
 0124 90E0              ldi R25,>_CANIDM+2
 0126 E80F              add R30,R24
 0128 F91F              adc R31,R25
 012A 1B01              movw R2,R22
 012C 232C              mov R2,R3
 012E 3324              clr R3
 0130 2082              std z+0,R2
 0132                   .dbline 73
 0132 84E0              ldi R24,4
 0134 849F              mul R24,R20
 0136 F001              movw R30,R0
 0138 80E0              ldi R24,<_CANIDM+1
 013A 90E0              ldi R25,>_CANIDM+1
 013C E80F              add R30,R24
 013E F91F              adc R31,R25
 0140 A082              std z+0,R10
 0142                   .dbline 74
 0142 84E0              ldi R24,4
 0144 849F              mul R24,R20
 0146 F001              movw R30,R0
 0148 80E0              ldi R24,<_CANIDM
 014A 90E0              ldi R25,>_CANIDM
 014C E80F              add R30,R24
 014E F91F              adc R31,R25
 0150 1501              movw R2,R10
 0152 232C              mov R2,R3
 0154 3324              clr R3
 0156 2082              std z+0,R2
 0158                   .dbline 75
 0158 80910000          lds R24,_Pass_Flag
 015C 8F5F              subi R24,255    ; addi 1
 015E 80930000          sts _Pass_Flag,R24
 0162                   .dbline 76
 0162 0000              nop
 0164                   .dbline 77
 0164           L13:
 0164                   .dbline 66
 0164 4395              inc R20
 0166           L15:
 0166                   .dbline 66
 0166 4630              cpi R20,6
 0168 08F4              brsh X1
 016A B5CF              xjmp L12
 016C           X1:
 016C                   .dbline 78
 016C           ;       {
 016C           ;        temp=CANMOBMD[i]<<3;
 016C           ;        temp1=(unsigned int)temp;               //低16位
 016C           ;        temp2=(unsigned int)(temp/0x00010000);  //高16位
 016C           ;        CANIDM[i][3]=(Uchar)temp1;
 016C           ;        CANIDM[i][2]=(Uchar)(temp1>>8);
 016C           ;        CANIDM[i][1]=(Uchar)temp2;
 016C           ;        CANIDM[i][0]=(Uchar)(temp2>>8); 
 016C           ;        Pass_Flag = Pass_Flag + 1;
 016C           ;        NOP();
 016C           ;       }
 016C           ;        if(Pass_Flag!=0x06)
 016C 80910000          lds R24,_Pass_Flag
 0170 8630              cpi R24,6
 0172 11F0              breq L19
 0174                   .dbline 79
 0174           ;         RESET;
 0174 0C940000          jmp 0x00000
 0178           L19:
 0178                   .dbline 82
 0178           ;     //reset all MObs
 0178           ;       
 0178           ;        Pass_Flag = 0x00;
 0178 2224              clr R2
 017A 20920000          sts _Pass_Flag,R2
 017E                   .dbline 83
 017E           ;     for (i=0; i<15; i++)
 017E 4427              clr R20
 0180 28C0              xjmp L24
 0182           L21:
 0182                   .dbline 84
 0182           ;     {
 0182                   .dbline 85
 0182           ;         CANPAGE = (i<<4);           //select MOb
 0182 842F              mov R24,R20
 0184 8F70              andi R24,#0x0F
 0186 8295              swap R24
 0188 8093ED00          sts 237,R24
 018C                   .dbline 86
 018C           ;         CANCDMOB = 0;                 //disable MOb
 018C 2224              clr R2
 018E 2092EF00          sts 239,R2
 0192                   .dbline 87
 0192           ;         CANSTMOB = 0;               //clear status
 0192 2092EE00          sts 238,R2
 0196                   .dbline 88
 0196           ;         CANIDT1 = 0;                  //clear ID
 0196 2092F300          sts 243,R2
 019A                   .dbline 89
 019A           ;         CANIDT2 = 0;
 019A 2092F200          sts 242,R2
 019E                   .dbline 90
 019E           ;         CANIDT3 = 0;
 019E 2092F100          sts 241,R2
 01A2                   .dbline 91
 01A2           ;         CANIDT4 = 0;
 01A2 2092F000          sts 240,R2
 01A6                   .dbline 92
 01A6           ;         CANIDM1 = 0;                  //clear mask
 01A6 2092F700          sts 247,R2
 01AA                   .dbline 93
 01AA           ;         CANIDM2 = 0;
 01AA 2092F600          sts 246,R2
 01AE                   .dbline 94
 01AE           ;         CANIDM3 = 0;
 01AE 2092F500          sts 245,R2
 01B2                   .dbline 95
 01B2           ;         CANIDM4 = 0;
 01B2 2092F400          sts 244,R2
 01B6                   .dbline 96
 01B6           ;         for (j=0; j<8; j++)
 01B6 6627              clr R22
 01B8 04C0              xjmp L28
 01BA           L25:
 01BA                   .dbline 97
 01BA 2224              clr R2
 01BC 2092FA00          sts 250,R2
 01C0           L26:
 01C0                   .dbline 96
 01C0 6395              inc R22
 01C2           L28:
 01C2                   .dbline 96
 01C2 6830              cpi R22,8
 01C4 D0F3              brlo L25
 01C6                   .dbline 99
 01C6 80910000          lds R24,_Pass_Flag
 01CA 8F5F              subi R24,255    ; addi 1
 01CC 80930000          sts _Pass_Flag,R24
 01D0                   .dbline 100
 01D0           L22:
 01D0                   .dbline 83
 01D0 4395              inc R20
 01D2           L24:
 01D2                   .dbline 83
 01D2 4F30              cpi R20,15
 01D4 B0F2              brlo L21
 01D6                   .dbline 101
 01D6           ;             CANMSG = 0;         //clear data
 01D6           ;                       
 01D6           ;            Pass_Flag = Pass_Flag + 1;         
 01D6           ;     }
 01D6           ;         if(Pass_Flag!=0x0f)

⌨️ 快捷键说明

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