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

📄 ican-mcp2515.lst

📁 完成数据的采集
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000090   ....               LDR.N    R2,??DataTable25  ;; 0x40010c0c
   \   00000092   1360               STR      R3,[R2, #+0]
     62              return DataIn;
   \   00000094   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000096   7047               BX       LR               ;; return
     63          }
     64          //-------------------------------------------------------------
     65          //-------------------------------------------------------------------------
     66          //  SPIByteWrite()
     67          //-------------------------------------------------------------------------

   \                                 In section .XML, align 4, keep-with-next
     68          void SPIByteWrite(unsigned char addr, unsigned char value )
     69          {
   \                     SPIByteWrite:
   \   00000000   31B5               PUSH     {R0,R4,R5,LR}
   \   00000002   0400               MOVS     R4,R0
   \   00000004   0D00               MOVS     R5,R1
     70            Clr_bit(IO_CS,mCS) ;      //mCS = LOW;
   \   00000006   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000008   0068               LDR      R0,[R0, #+0]
   \   0000000A   2021               MOVS     R1,#+32
   \   0000000C   8843               BICS     R0,R0,R1
   \   0000000E   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   00000010   0860               STR      R0,[R1, #+0]
     71            WriteSPI(CAN_WRITE);
   \   00000012   0220               MOVS     R0,#+2
   \   00000014   ........           BL       WriteSPI
     72            WriteSPI(addr);
   \   00000018   2000               MOVS     R0,R4
   \   0000001A   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   0000001C   ........           BL       WriteSPI
     73            WriteSPI(value);
   \   00000020   2800               MOVS     R0,R5
   \   00000022   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000024   ........           BL       WriteSPI
     74            Set_bit(IO_CS,mCS);       //mCS = HIGH;;
   \   00000028   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   0000002A   0068               LDR      R0,[R0, #+0]
   \   0000002C   50F02000           ORRS     R0,R0,#0x20
   \   00000030   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   00000032   0860               STR      R0,[R1, #+0]
     75          }
   \   00000034   01B0               ADD      SP,SP,#+4
   \   00000036   30BD               POP      {R4,R5,PC}       ;; return
     76          
     77          
     78          //-----------------------------------------------------------------------------
     79          //  SPIByteRead()
     80          //-----------------------------------------------------------------------------

   \                                 In section .XML, align 4, keep-with-next
     81          unsigned char SPIByteRead(unsigned char addr)
     82          {
   \                     SPIByteRead:
   \   00000000   31B5               PUSH     {R0,R4,R5,LR}
   \   00000002   0400               MOVS     R4,R0
     83            unsigned char tempdata;
     84          	Clr_bit(IO_CS,mCS);             //mCS = LOW;;
   \   00000004   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000006   0068               LDR      R0,[R0, #+0]
   \   00000008   2021               MOVS     R1,#+32
   \   0000000A   8843               BICS     R0,R0,R1
   \   0000000C   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   0000000E   0860               STR      R0,[R1, #+0]
     85            WriteSPI(CAN_READ);
   \   00000010   0320               MOVS     R0,#+3
   \   00000012   ........           BL       WriteSPI
     86            WriteSPI(addr);
   \   00000016   2000               MOVS     R0,R4
   \   00000018   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   0000001A   ........           BL       WriteSPI
     87            tempdata = ReadSPI();
   \   0000001E   ........           BL       ReadSPI
   \   00000022   0500               MOVS     R5,R0
     88            Set_bit(IO_CS,mCS);						  //mCS = HIGH;;
   \   00000024   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000026   0068               LDR      R0,[R0, #+0]
   \   00000028   50F02000           ORRS     R0,R0,#0x20
   \   0000002C   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   0000002E   0860               STR      R0,[R1, #+0]
     89            return tempdata;
   \   00000030   2800               MOVS     R0,R5
   \   00000032   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000034   01B0               ADD      SP,SP,#+4
   \   00000036   30BD               POP      {R4,R5,PC}       ;; return
     90          }
     91          //-----------------------------------------------------------------------------
     92          //  SPIReset()
     93          //-----------------------------------------------------------------------------

   \                                 In section .XML, align 4, keep-with-next
     94          void SPIReset(void)
     95          {
   \                     SPIReset:
   \   00000000   01B5               PUSH     {R0,LR}
     96          	Clr_bit(IO_CS,mCS);//mCS = LOW;
   \   00000002   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000004   0068               LDR      R0,[R0, #+0]
   \   00000006   2021               MOVS     R1,#+32
   \   00000008   8843               BICS     R0,R0,R1
   \   0000000A   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   0000000C   0860               STR      R0,[R1, #+0]
     97          	WriteSPI(CAN_RESET);
   \   0000000E   C020               MOVS     R0,#+192
   \   00000010   ........           BL       WriteSPI
     98            Set_bit(IO_CS,mCS);
   \   00000014   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000016   0068               LDR      R0,[R0, #+0]
   \   00000018   50F02000           ORRS     R0,R0,#0x20
   \   0000001C   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   0000001E   0860               STR      R0,[R1, #+0]
     99          }
   \   00000020   01B0               ADD      SP,SP,#+4
   \   00000022   00BD               POP      {PC}             ;; return

   \                                 In section .XML, align 4, keep-with-next
    100          SPIFastRead(unsigned char m)
    101          {
   \                     SPIFastRead:
   \   00000000   31B5               PUSH     {R0,R4,R5,LR}
   \   00000002   0400               MOVS     R4,R0
    102          	unsigned char tempdata;
    103          	Clr_bit(IO_CS,mCS);             //mCS = LOW;;
   \   00000004   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000006   0068               LDR      R0,[R0, #+0]
   \   00000008   2021               MOVS     R1,#+32
   \   0000000A   8843               BICS     R0,R0,R1
   \   0000000C   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   0000000E   0860               STR      R0,[R1, #+0]
    104            WriteSPI(m);
   \   00000010   2000               MOVS     R0,R4
   \   00000012   C0B2               UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
   \   00000014   ........           BL       WriteSPI
    105            tempdata = ReadSPI();
   \   00000018   ........           BL       ReadSPI
   \   0000001C   0500               MOVS     R5,R0
    106            Set_bit(IO_CS,mCS);						  //mCS = HIGH;;
   \   0000001E   ....               LDR.N    R0,??DataTable41  ;; 0x4001100c
   \   00000020   0068               LDR      R0,[R0, #+0]
   \   00000022   50F02000           ORRS     R0,R0,#0x20
   \   00000026   ....               LDR.N    R1,??DataTable41  ;; 0x4001100c
   \   00000028   0860               STR      R0,[R1, #+0]
    107            return tempdata;
   \   0000002A   EDB2               UXTB     R5,R5            ;; ZeroExtS R5,R5,#+24,#+24
   \   0000002C   2800               MOVS     R0,R5
   \   0000002E   01B0               ADD      SP,SP,#+4
   \   00000030   30BD               POP      {R4,R5,PC}       ;; return
    108          }

   \                                 In section .XML, align 4, keep-with-next
    109          SPIFastWrite()
    110          {
    111          }
   \                     SPIFastWrite:
   \   00000000   7047               BX       LR               ;; return
    112          //-----------------------------------------------------------------------------
    113          //----------------------------------------------------

   \                                 In section .XML, align 4, keep-with-next
    114          void		ConfCAN(CAN_BUS *CANx,volatile CAN_BUS *CANS,const Int16U *p)
    115          {
   \                     ConfCAN:
   \   00000000   71B4               PUSH     {R0,R4-R6}
    116                      unsigned char  x,y; 
    117                      
    118                   
    119                      
    120                CANS->SiIDH=*(p+C_PrductADD);//发送的标准标识符滤波10-3	,产品地址	     	     	
   \   00000002   1588               LDRH     R5,[R2, #+0]
   \   00000004   0D70               STRB     R5,[R1, #+0]
    121          	     
    122                CANS->SiIDL=0;
   \   00000006   0025               MOVS     R5,#+0
   \   00000008   4D70               STRB     R5,[R1, #+1]
    123          		  if(CANx->SiIDL&0Xe0)CANS->SiIDL|=0xe0;//功能码.标准标识符滤波位0,IDH的b5与IDL的b5
   \   0000000A   4578               LDRB     R5,[R0, #+1]
   \   0000000C   15F0E00F           TST      R5,#0xE0
   \   00000010   03D0               BEQ.N    ??ConfCAN_0
   \   00000012   4D78               LDRB     R5,[R1, #+1]
   \   00000014   55F0E005           ORRS     R5,R5,#0xE0
   \   00000018   4D70               STRB     R5,[R1, #+1]
    124          		  CANS->SiIDL|=8;                       //mcp2515报文滤波用于0=标准帧1=扩展帧//本应用中为扩展帧
   \                     ??ConfCAN_0:
   \   0000001A   4D78               LDRB     R5,[R1, #+1]
   \   0000001C   55F00805           ORRS     R5,R5,#0x8
   \   00000020   4D70               STRB     R5,[R1, #+1]
    125          		  CANS->EIDM=CANx->EIDM&0xc0;//通讯类型
   \   00000022   8578               LDRB     R5,[R0, #+2]
   \   00000024   15F0C005           ANDS     R5,R5,#0xC0
   \   00000028   8D70               STRB     R5,[R1, #+2]
    126          		  CANS->EIDM|=CANx->SiIDH&0X3F;
   \   0000002A   8D78               LDRB     R5,[R1, #+2]
   \   0000002C   0678               LDRB     R6,[R0, #+0]
   \   0000002E   B606               LSLS     R6,R6,#+26       ;; ZeroExtS R6,R6,#+26,#+26
   \   00000030   B60E               LSRS     R6,R6,#+26
   \   00000032   2E43               ORRS     R6,R6,R5
   \   00000034   8E70               STRB     R6,[R1, #+2]
    127          		  CANS->EIDL=CANx->EIDL;  
   \   00000036   C578               LDRB     R5,[R0, #+3]
   \   00000038   CD70               STRB     R5,[R1, #+3]
    128          		  		                     //CAN.EIDL start address ,CAN.DATA[0] len
    129          		  CANS->DLC=0;
   \   0000003A   0025               MOVS     R5,#+0
   \   0000003C   0D71               STRB     R5,[R1, #+4]
    130          		  x=CANx->EIDL;                                //起始地址		
   \   0000003E   C578               LDRB     R5,[R0, #+3]
   \   00000040   2B00               MOVS     R3,R5
    131          		  p+=x;
   \   00000042   DBB2               UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
   \   00000044   0225               MOVS     R5,#+2
   \   00000046   03FB0522           MLA      R2,R3,R5,R2
    132          		  for(x=0;(x<4)&&(CANx->DATA[0]!=0);x++)//CAN.DATA[0]数据长度
   \   0000004A   0025               MOVS     R5,#+0
   \   0000004C   2B00               MOVS     R3,R5
   \                     ??ConfCAN_1:
   \   0000004E   DBB2               UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
   \   00000050   042B               CMP      R3,#+4
   \   00000052   26D2               BCS.N    ??ConfCAN_2
   \   00000054   4579               LDRB     R5,[R0, #+5]
   \   00000056   002D               CMP      R5,#+0
   \   00000058   23D0               BEQ.N    ??ConfCAN_2
    133          		  {	    
    134                              y=2*x;
   \   0000005A   0225               MOVS     R5,#+2
   \   0000005C   03FB05F4           MUL      R4,R3,R5
    135          		    CANS->DATA[y]=*p/256,CANS->DLC++;;
   \   00000060   1588               LDRH     R5,[R2, #+0]
   \   00000062   5FF48076           MOVS     R6,#+256
   \   00000066   95FBF6F5           SDIV     R5,R5,R6
   \   0000006A   E4B2               UXTB     R4,R4            ;; ZeroExtS R4,R4,#+24,#+24
   \   0000006C   0E19               ADDS     R6,R1,R4
   \   0000006E   7571               STRB     R5,[R6, #+5]
   \   00000070   0D79               LDRB     R5,[R1, #+4]
   \   00000072   6D1C               ADDS     R5,R5,#+1
   \   00000074   0D71               STRB     R5,[R1, #+4]

⌨️ 快捷键说明

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