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

📄 ican-mcp2515.lst

📁 完成数据的采集
💻 LST
📖 第 1 页 / 共 5 页
字号:
    136                              CANS->DATA[y+1]=*p&0xff,CANS->DLC++;;
   \   00000076   E4B2               UXTB     R4,R4            ;; ZeroExtS R4,R4,#+24,#+24
   \   00000078   0D19               ADDS     R5,R1,R4
   \   0000007A   1688               LDRH     R6,[R2, #+0]
   \   0000007C   AE71               STRB     R6,[R5, #+6]
   \   0000007E   0D79               LDRB     R5,[R1, #+4]
   \   00000080   6D1C               ADDS     R5,R5,#+1
   \   00000082   0D71               STRB     R5,[R1, #+4]
    137          		    p++;
   \   00000084   921C               ADDS     R2,R2,#+2
    138          		    CANx->EIDL++;
   \   00000086   C578               LDRB     R5,[R0, #+3]
   \   00000088   6D1C               ADDS     R5,R5,#+1
   \   0000008A   C570               STRB     R5,[R0, #+3]
    139          		    if(CANx->DATA[0]>=1)CANx->DATA[0]--;
   \   0000008C   4579               LDRB     R5,[R0, #+5]
   \   0000008E   012D               CMP      R5,#+1
   \   00000090   03D3               BCC.N    ??ConfCAN_3
   \   00000092   4579               LDRB     R5,[R0, #+5]
   \   00000094   6D1E               SUBS     R5,R5,#+1
   \   00000096   4571               STRB     R5,[R0, #+5]
   \   00000098   01E0               B.N      ??ConfCAN_4
    140          		    else		CANx->DATA[0]=0;
   \                     ??ConfCAN_3:
   \   0000009A   0025               MOVS     R5,#+0
   \   0000009C   4571               STRB     R5,[R0, #+5]
    141          		  }
   \                     ??ConfCAN_4:
   \   0000009E   5B1C               ADDS     R3,R3,#+1
   \   000000A0   D5E7               B.N      ??ConfCAN_1
    142          		  if(CANx->DATA[0]==0)CANS->SiIDL|=0x3;	 // 数据发完时C0
   \                     ??ConfCAN_2:
   \   000000A2   4579               LDRB     R5,[R0, #+5]
   \   000000A4   002D               CMP      R5,#+0
   \   000000A6   04D1               BNE.N    ??ConfCAN_5
   \   000000A8   4D78               LDRB     R5,[R1, #+1]
   \   000000AA   55F00305           ORRS     R5,R5,#0x3
   \   000000AE   4D70               STRB     R5,[R1, #+1]
   \   000000B0   03E0               B.N      ??ConfCAN_6
    143          		  else							  CANS->SiIDL|=0X1;
   \                     ??ConfCAN_5:
   \   000000B2   4D78               LDRB     R5,[R1, #+1]
   \   000000B4   55F00105           ORRS     R5,R5,#0x1
   \   000000B8   4D70               STRB     R5,[R1, #+1]
    144          #if 0	  	
    145          		  CANS->SiIDH=0XAA;
    146                            CANS->EIDM=0XAA;
    147                             CANS->EIDL=0X1;
    148                             CANS->DLC=0;
    149                             CANS->DATA[0]=0XBB;
    150                             CANS->DATA[1]=0X7F;
    151                             CANS->DATA[2]=0X7F;
    152                             CANS->DATA[3]=0X7F;
    153                             CANS->DATA[4]=0X7F;
    154                             CANS->DATA[5]=0X7F;
    155                             CANS->DATA[6]=0X7F;
    156                             CANS->DATA[7]=0X7F;
    157          		  CANS->SiIDL=8;
    158          #endif		  	
    159          }
   \                     ??ConfCAN_6:
   \   000000BA   01B0               ADD      SP,SP,#+4
   \   000000BC   70BC               POP      {R4-R6}
   \   000000BE   7047               BX       LR               ;; return
    160          //---------------------------------------------------------
    161          //---------------------------------------------------------

   \                                 In section .XML, align 4, keep-with-next
    162          WriteCAN(const CAN_BUS *WCAN,unsigned char c)
    163          {
   \                     WriteCAN:
   \   00000000   F1B5               PUSH     {R0,R4-R7,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0F00               MOVS     R7,R1
    164          	unsigned char c1,c2,c3;
    165          	c3=c;
   \   00000006   3E00               MOVS     R6,R7
    166          	SPIByteWrite(c,WCAN->SiIDH);
   \   00000008   2178               LDRB     R1,[R4, #+0]
   \   0000000A   3800               MOVS     R0,R7
   \   0000000C   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   0000000E   ........           BL       SPIByteWrite
    167          	SPIByteWrite(++c,WCAN->SiIDL);
   \   00000012   7F1C               ADDS     R7,R7,#+1
   \   00000014   6178               LDRB     R1,[R4, #+1]
   \   00000016   3800               MOVS     R0,R7
   \   00000018   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   0000001A   ........           BL       SPIByteWrite
    168          	SPIByteWrite(++c,WCAN->EIDM);
   \   0000001E   7F1C               ADDS     R7,R7,#+1
   \   00000020   A178               LDRB     R1,[R4, #+2]
   \   00000022   3800               MOVS     R0,R7
   \   00000024   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000026   ........           BL       SPIByteWrite
    169          	SPIByteWrite(++c,WCAN->EIDL);
   \   0000002A   7F1C               ADDS     R7,R7,#+1
   \   0000002C   E178               LDRB     R1,[R4, #+3]
   \   0000002E   3800               MOVS     R0,R7
   \   00000030   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000032   ........           BL       SPIByteWrite
    170          	SPIByteWrite(++c,WCAN->DLC);
   \   00000036   7F1C               ADDS     R7,R7,#+1
   \   00000038   2179               LDRB     R1,[R4, #+4]
   \   0000003A   3800               MOVS     R0,R7
   \   0000003C   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   0000003E   ........           BL       SPIByteWrite
    171          	c1=WCAN->DLC&0xf;
   \   00000042   2079               LDRB     R0,[R4, #+4]
   \   00000044   0007               LSLS     R0,R0,#+28       ;; ZeroExtS R0,R0,#+28,#+28
   \   00000046   000F               LSRS     R0,R0,#+28
   \   00000048   8DF80000           STRB     R0,[SP, #+0]
    172          	for(c2=0;c2<c1;c2++)		
   \   0000004C   0020               MOVS     R0,#+0
   \   0000004E   0500               MOVS     R5,R0
   \                     ??WriteCAN_0:
   \   00000050   9DF80000           LDRB     R0,[SP, #+0]
   \   00000054   EDB2               UXTB     R5,R5            ;; ZeroExtS R5,R5,#+24,#+24
   \   00000056   8542               CMP      R5,R0
   \   00000058   09D2               BCS.N    ??WriteCAN_1
    173          	SPIByteWrite(++c,WCAN->DATA[c2]);
   \   0000005A   7F1C               ADDS     R7,R7,#+1
   \   0000005C   EDB2               UXTB     R5,R5            ;; ZeroExtS R5,R5,#+24,#+24
   \   0000005E   6019               ADDS     R0,R4,R5
   \   00000060   4179               LDRB     R1,[R0, #+5]
   \   00000062   3800               MOVS     R0,R7
   \   00000064   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000066   ........           BL       SPIByteWrite
   \   0000006A   6D1C               ADDS     R5,R5,#+1
   \   0000006C   F0E7               B.N      ??WriteCAN_0
    174          	
    175            if(c3==TXB0SIDH)SPIByteWrite(TXB0CTRL,8);
   \                     ??WriteCAN_1:
   \   0000006E   F6B2               UXTB     R6,R6            ;; ZeroExtS R6,R6,#+24,#+24
   \   00000070   312E               CMP      R6,#+49
   \   00000072   04D1               BNE.N    ??WriteCAN_2
   \   00000074   0821               MOVS     R1,#+8
   \   00000076   3020               MOVS     R0,#+48
   \   00000078   ........           BL       SPIByteWrite
   \   0000007C   0EE0               B.N      ??WriteCAN_3
    176          	else if(c3==TXB1SIDH)SPIByteWrite(TXB1CTRL,8);
   \                     ??WriteCAN_2:
   \   0000007E   F6B2               UXTB     R6,R6            ;; ZeroExtS R6,R6,#+24,#+24
   \   00000080   412E               CMP      R6,#+65
   \   00000082   04D1               BNE.N    ??WriteCAN_4
   \   00000084   0821               MOVS     R1,#+8
   \   00000086   4020               MOVS     R0,#+64
   \   00000088   ........           BL       SPIByteWrite
   \   0000008C   06E0               B.N      ??WriteCAN_3
    177          	else if(c3==TXB2SIDH)SPIByteWrite(TXB2CTRL,8);
   \                     ??WriteCAN_4:
   \   0000008E   F6B2               UXTB     R6,R6            ;; ZeroExtS R6,R6,#+24,#+24
   \   00000090   512E               CMP      R6,#+81
   \   00000092   03D1               BNE.N    ??WriteCAN_3
   \   00000094   0821               MOVS     R1,#+8
   \   00000096   5020               MOVS     R0,#+80
   \   00000098   ........           BL       SPIByteWrite
    178          }
   \                     ??WriteCAN_3:
   \   0000009C   01B0               ADD      SP,SP,#+4
   \   0000009E   F0BD               POP      {R4-R7,PC}       ;; return
    179          /////////////////////////////////////////////////////////////
    180          

   \                                 In section .XML, align 4, keep-with-next
    181          void Init2515(Int8U m)
    182          {
   \                     Init2515:
   \   00000000   31B5               PUSH     {R0,R4,R5,LR}
   \   00000002   0500               MOVS     R5,R0
    183            Int16U  i; 
    184            SPIReset();
   \   00000004   ........           BL       SPIReset
    185            delay_nop(100);
   \   00000008   6420               MOVS     R0,#+100
   \   0000000A   ........           BL       delay_nop
    186            
    187            SPIByteWrite(RXB0CTRL,0x00);//清RXB0  
   \   0000000E   0021               MOVS     R1,#+0
   \   00000010   6020               MOVS     R0,#+96
   \   00000012   ........           BL       SPIByteWrite
    188            //Clear masks to RX all messages
    189            SPIByteWrite(RXM0SIDH,0x00);//标准标识低位
   \   00000016   0021               MOVS     R1,#+0
   \   00000018   2020               MOVS     R0,#+32
   \   0000001A   ........           BL       SPIByteWrite
    190            SPIByteWrite(RXM0SIDL,0x00);//标准标识高位
   \   0000001E   0021               MOVS     R1,#+0
   \   00000020   2120               MOVS     R0,#+33
   \   00000022   ........           BL       SPIByteWrite
    191            //Clear filter... really only concerned to clear EXIDE bit
    192            SPIByteWrite(RXF0SIDH,0x00);//验收滤波器H位
   \   00000026   0021               MOVS     R1,#+0
   \   00000028   0020               MOVS     R0,#+0
   \   0000002A   ........           BL       SPIByteWrite
    193            SPIByteWrite(RXF0SIDL,0x08);//验收滤波器L位
   \   0000002E   0821               MOVS     R1,#+8
   \   00000030   0120               MOVS     R0,#+1
   \   00000032   ........           BL       SPIByteWrite
    194            SPIByteWrite(RXF0EID8,0x3F);//验收滤波器扩展8~15位
   \   00000036   3F21               MOVS     R1,#+63
   \   00000038   0220               MOVS     R0,#+2
   \   0000003A   ........           BL       SPIByteWrite
    195            SPIByteWrite(RXF0EID0,0x0);//验收滤波器扩展0-7位
   \   0000003E   0021               MOVS     R1,#+0
   \   00000040   0320               MOVS     R0,#+3
   \   00000042   ........           BL       SPIByteWrite
    196          
    197            //Set CNF1
    198            m=CAN_RATE_TAB[m];
   \   00000046   EDB2               UXTB     R5,R5            ;; ZeroExtS R5,R5,#+24,#+24
   \   00000048   3348               LDR.N    R0,??Init2515_0  ;; CAN_RATE_TAB
   \   0000004A   455D               LDRB     R5,[R0, R5]
    199            SPIByteWrite(CNF1,m);//分频CAN_125kbps
   \   0000004C   2900               MOVS     R1,R5
   \   0000004E   C9B2               UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
   \   00000050   2A20               MOVS     R0,#+42
   \   00000052   ........           BL       SPIByteWrite
    200          
    201            //Set CNF2
    202            SPIByteWrite(CNF2,0x80 | PHSEG1_3TQ | PRSEG_1TQ);
   \   00000056   9021               MOVS     R1,#+144
   \   00000058   2920               MOVS     R0,#+41
   \   0000005A   ........           BL       SPIByteWrite
    203          
    204            //Set CNF3
    205            SPIByteWrite(CNF3, PHSEG2_3TQ);
   \   0000005E   0221               MOVS     R1,#+2
   \   00000060   2820               MOVS     R0,#+40
   \   00000062   ........           BL       SPIByteWrite
    206          
    207            //Set TXB0 DLC and Data for a "Write Register" Input Message to the MCP25020
    208            SPIByteWrite(TXB0SIDH,0xA0);    //发送器标识符高位
   \   00000066   A021               MOVS     R1,#+160
   \   00000068   3120               MOVS     R0,#+49
   \   0000006A   ........           BL       SPIByteWrite
    209            SPIByteWrite(TXB0SIDL,0xe8);    //

⌨️ 快捷键说明

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