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

📄 can.lis

📁 can tongxunCAN128的底层驱动
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0046 3B83              std y+3,R19
 0048                   .dbline 52
 0048 6881              ldd R22,y+0
 004A 7981              ldd R23,y+1
 004C                   .dbline 53
 004C 2880              ldd R2,y+0
 004E 3980              ldd R3,y+1
 0050 4A80              ldd R4,y+2
 0052 5B80              ldd R5,y+3
 0054 5201              movw R10,R4
 0056                   .dbline 54
 0056 84E0              ldi R24,4
 0058 849F              mul R24,R20
 005A F001              movw R30,R0
 005C 80E0              ldi R24,<_CANIDT+3
 005E 90E0              ldi R25,>_CANIDT+3
 0060 E80F              add R30,R24
 0062 F91F              adc R31,R25
 0064 6083              std z+0,R22
 0066                   .dbline 55
 0066 84E0              ldi R24,4
 0068 849F              mul R24,R20
 006A F001              movw R30,R0
 006C 80E0              ldi R24,<_CANIDT+2
 006E 90E0              ldi R25,>_CANIDT+2
 0070 E80F              add R30,R24
 0072 F91F              adc R31,R25
 0074 1B01              movw R2,R22
 0076 232C              mov R2,R3
 0078 3324              clr R3
 007A 2082              std z+0,R2
 007C                   .dbline 56
 007C 84E0              ldi R24,4
 007E 849F              mul R24,R20
 0080 F001              movw R30,R0
 0082 80E0              ldi R24,<_CANIDT+1
 0084 90E0              ldi R25,>_CANIDT+1
 0086 E80F              add R30,R24
 0088 F91F              adc R31,R25
 008A A082              std z+0,R10
 008C                   .dbline 57
 008C 84E0              ldi R24,4
 008E 849F              mul R24,R20
 0090 F001              movw R30,R0
 0092 80E0              ldi R24,<_CANIDT
 0094 90E0              ldi R25,>_CANIDT
 0096 E80F              add R30,R24
 0098 F91F              adc R31,R25
 009A 1501              movw R2,R10
 009C 232C              mov R2,R3
 009E 3324              clr R3
 00A0 2082              std z+0,R2
 00A2                   .dbline 58
 00A2 0000              nop
 00A4                   .dbline 59
 00A4           L4:
 00A4                   .dbline 49
 00A4 4395              inc R20
 00A6           L6:
 00A6                   .dbline 49
 00A6 4F30              cpi R20,15
 00A8 08F4              brsh X0
 00AA BACF              xjmp L3
 00AC           X0:
 00AC                   .dbline 61
 00AC           ;       {
 00AC           ;        temp=CANMOBID[i]<<3;
 00AC           ;        temp1=(unsigned int)temp;
 00AC           ;        temp2=(unsigned int)(temp/0x00010000);
 00AC           ;        CANIDT[i][3]=(Uchar)temp1;
 00AC           ;        CANIDT[i][2]=(Uchar)(temp1>>8);
 00AC           ;        CANIDT[i][1]=(Uchar)temp2;
 00AC           ;        CANIDT[i][0]=(Uchar)(temp2>>8); 
 00AC           ;        NOP();
 00AC           ;       }
 00AC           ;       
 00AC           ;       for(i=0;i<15;i++)
 00AC 4427              clr R20
 00AE 43C0              xjmp L13
 00B0           L10:
 00B0                   .dbline 62
 00B0                   .dbline 63
 00B0 84E0              ldi R24,4
 00B2 849F              mul R24,R20
 00B4 F001              movw R30,R0
 00B6 80E0              ldi R24,<_CANMOBMD
 00B8 90E0              ldi R25,>_CANMOBMD
 00BA E80F              add R30,R24
 00BC F91F              adc R31,R25
 00BE 0081              ldd R16,z+0
 00C0 1181              ldd R17,z+1
 00C2 2281              ldd R18,z+2
 00C4 3381              ldd R19,z+3
 00C6 83E0              ldi R24,3
 00C8 90E0              ldi R25,0
 00CA 8A93              st -y,R24
 00CC 0E940000          xcall lsl32
 00D0 0883              std y+0,R16
 00D2 1983              std y+1,R17
 00D4 2A83              std y+2,R18
 00D6 3B83              std y+3,R19
 00D8                   .dbline 64
 00D8 6881              ldd R22,y+0
 00DA 7981              ldd R23,y+1
 00DC                   .dbline 65
 00DC 2880              ldd R2,y+0
 00DE 3980              ldd R3,y+1
 00E0 4A80              ldd R4,y+2
 00E2 5B80              ldd R5,y+3
 00E4 5201              movw R10,R4
 00E6                   .dbline 66
 00E6 84E0              ldi R24,4
 00E8 849F              mul R24,R20
 00EA F001              movw R30,R0
 00EC 80E0              ldi R24,<_CANIDM+3
 00EE 90E0              ldi R25,>_CANIDM+3
 00F0 E80F              add R30,R24
 00F2 F91F              adc R31,R25
 00F4 6083              std z+0,R22
 00F6                   .dbline 67
 00F6 84E0              ldi R24,4
 00F8 849F              mul R24,R20
 00FA F001              movw R30,R0
 00FC 80E0              ldi R24,<_CANIDM+2
 00FE 90E0              ldi R25,>_CANIDM+2
 0100 E80F              add R30,R24
 0102 F91F              adc R31,R25
 0104 1B01              movw R2,R22
 0106 232C              mov R2,R3
 0108 3324              clr R3
 010A 2082              std z+0,R2
 010C                   .dbline 68
 010C 84E0              ldi R24,4
 010E 849F              mul R24,R20
 0110 F001              movw R30,R0
 0112 80E0              ldi R24,<_CANIDM+1
 0114 90E0              ldi R25,>_CANIDM+1
 0116 E80F              add R30,R24
 0118 F91F              adc R31,R25
 011A A082              std z+0,R10
 011C                   .dbline 69
 011C 84E0              ldi R24,4
 011E 849F              mul R24,R20
 0120 F001              movw R30,R0
 0122 80E0              ldi R24,<_CANIDM
 0124 90E0              ldi R25,>_CANIDM
 0126 E80F              add R30,R24
 0128 F91F              adc R31,R25
 012A 1501              movw R2,R10
 012C 232C              mov R2,R3
 012E 3324              clr R3
 0130 2082              std z+0,R2
 0132                   .dbline 70
 0132 0000              nop
 0134                   .dbline 71
 0134           L11:
 0134                   .dbline 61
 0134 4395              inc R20
 0136           L13:
 0136                   .dbline 61
 0136 4F30              cpi R20,15
 0138 08F4              brsh X1
 013A BACF              xjmp L10
 013C           X1:
 013C                   .dbline 73
 013C           ;       {
 013C           ;        temp=CANMOBMD[i]<<3;
 013C           ;        temp1=(unsigned int)temp;
 013C           ;        temp2=(unsigned int)(temp/0x00010000);
 013C           ;        CANIDM[i][3]=(Uchar)temp1;
 013C           ;        CANIDM[i][2]=(Uchar)(temp1>>8);
 013C           ;        CANIDM[i][1]=(Uchar)temp2;
 013C           ;        CANIDM[i][0]=(Uchar)(temp2>>8); 
 013C           ;        NOP();
 013C           ;       }
 013C           ;     //reset all MObs
 013C           ;     for (i=0; i<15; i++)
 013C 4427              clr R20
 013E 23C0              xjmp L20
 0140           L17:
 0140                   .dbline 74
 0140           ;     {
 0140                   .dbline 75
 0140           ;         CANPAGE = (i<<4);           //select MOb
 0140 842F              mov R24,R20
 0142 8F70              andi R24,#0x0F
 0144 8295              swap R24
 0146 8093ED00          sts 237,R24
 014A                   .dbline 76
 014A           ;         CANCDMOB = 0;                 //disable MOb
 014A 2224              clr R2
 014C 2092EF00          sts 239,R2
 0150                   .dbline 77
 0150           ;         CANSTMOB = 0;               //clear status
 0150 2092EE00          sts 238,R2
 0154                   .dbline 78
 0154           ;         CANIDT1 = 0;                  //clear ID
 0154 2092F300          sts 243,R2
 0158                   .dbline 79
 0158           ;         CANIDT2 = 0;
 0158 2092F200          sts 242,R2
 015C                   .dbline 80
 015C           ;         CANIDT3 = 0;
 015C 2092F100          sts 241,R2
 0160                   .dbline 81
 0160           ;         CANIDT4 = 0;
 0160 2092F000          sts 240,R2
 0164                   .dbline 82
 0164           ;         CANIDM1 = 0;                  //clear mask
 0164 2092F700          sts 247,R2
 0168                   .dbline 83
 0168           ;         CANIDM2 = 0;
 0168 2092F600          sts 246,R2
 016C                   .dbline 84
 016C           ;         CANIDM3 = 0;
 016C 2092F500          sts 245,R2
 0170                   .dbline 85
 0170           ;         CANIDM4 = 0;
 0170 2092F400          sts 244,R2
 0174                   .dbline 86
 0174           ;         for (j=0; j<8; j++)
 0174 6627              clr R22
 0176 04C0              xjmp L24
 0178           L21:
 0178                   .dbline 87
 0178 2224              clr R2
 017A 2092FA00          sts 250,R2
 017E           L22:
 017E                   .dbline 86
 017E 6395              inc R22
 0180           L24:
 0180                   .dbline 86
 0180 6830              cpi R22,8
 0182 D0F3              brlo L21
 0184                   .dbline 88
 0184           L18:
 0184                   .dbline 73
 0184 4395              inc R20
 0186           L20:
 0186                   .dbline 73
 0186 4F30              cpi R20,15
 0188 D8F2              brlo L17
 018A                   .dbline 96
 018A           ;             CANMSG = 0;         //clear data
 018A           ;     }
 018A           ; 
 018A           ;     //bit timing -> datasheet page 260 (check table) 250Kbps
 018A           ;     //CANBT1 = 0x02;            //16Mhz,1Mbps
 018A           ;     //CANBT2 = 0x04;
 018A           ;     //CANBT3 = 0x13;
 018A           ;     
 018A           ;       //canbaud= EEPROM_read(0x0020);
 018A           ;       CANBT1 = CanBaud[2][0];         
 018A E0E0              ldi R30,<_CanBaud+6
 018C F0E0              ldi R31,>_CanBaud+6
 018E E491              lpm R30,Z
 0190 E093E200          sts 226,R30
 0194                   .dbline 97
 0194           ;     CANBT2 = CanBaud[2][1];
 0194 E0E0              ldi R30,<_CanBaud+6+1
 0196 F0E0              ldi R31,>_CanBaud+6+1
 0198 E491              lpm R30,Z
 019A E093E300          sts 227,R30
 019E                   .dbline 98
 019E           ;     CANBT3 = CanBaud[2][2];
 019E E0E0              ldi R30,<_CanBaud+6+2
 01A0 F0E0              ldi R31,>_CanBaud+6+2
 01A2 E491              lpm R30,Z
 01A4 E093E400          sts 228,R30
 01A8                   .dbline 102
 01A8           ;       
 01A8           ;     //configure MObi
 01A8           ;       /******************************************************************/
 01A8           ;    for (i=0; i<15; i++)
 01A8 4427              clr R20
 01AA 5AC0              xjmp L33
 01AC           L30:
 01AC                   .dbline 103
 01AC                   .dbline 104
 01AC 842F              mov R24,R20
 01AE 8F70              andi R24,#0x0F
 01B0 8295              swap R24
 01B2 8093ED00          sts 237,R24
 01B6                   .dbline 105
 01B6 84E0              ldi R24,4
 01B8 849F              mul R24,R20
 01BA F001              movw R30,R0
 01BC 80E0              ldi R24,<_CANIDT
 01BE 90E0              ldi R25,>_CANIDT
 01C0 E80F              add R30,R24
 01C2 F91F              adc R31,R25
 01C4 2080              ldd R2,z+0
 01C6 2092F300          sts 243,R2
 01CA                   .dbline 106
 01CA 84E0              ldi R24,4
 01CC 849F              mul R24,R20
 01CE F001              movw R30,R0
 01D0 80E0              ldi R24,<_CANIDT+1
 01D2 90E0              ldi R25,>_CANIDT+1
 01D4 E80F              add R30,R24
 01D6 F91F              adc R31,R25
 01D8 2080              ldd R2,z+0
 01DA 2092F200          sts 242,R2
 01DE                   .dbline 107
 01DE 84E0              ldi R24,4
 01E0 849F              mul R24,R20
 01E2 F001              movw R30,R0
 01E4 80E0              ldi R24,<_CANIDT+2
 01E6 90E0              ldi R25,>_CANIDT+2
 01E8 E80F              add R30,R24
 01EA F91F              adc R31,R25
 01EC 2080              ldd R2,z+0
 01EE 2092F100          sts 241,R2
 01F2                   .dbline 108
 01F2 84E0              ldi R24,4
 01F4 849F              mul R24,R20
 01F6 F001              movw R30,R0
 01F8 80E0              ldi R24,<_CANIDT+3
 01FA 90E0              ldi R25,>_CANIDT+3
 01FC E80F              add R30,R24
 01FE F91F              adc R31,R25
 0200 2080              ldd R2,z+0
 0202 2092F000          sts 240,R2
 0206                   .dbline 109
 0206 84E0              ldi R24,4
 0208 849F              mul R24,R20
 020A F001              movw R30,R0

⌨️ 快捷键说明

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