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

📄 ican-mcp2515.s

📁 完成数据的采集
💻 S
📖 第 1 页 / 共 2 页
字号:
///////////////////////////////////////////////////////////////////////////////
//                                                                            /
//                                                      06/Dec/2008  17:12:51 /
// IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION                   /
// Copyright 1999-2007 IAR Systems. All rights reserved.                      /
//                                                                            /
//    Cpu mode     =  thumb                                                   /
//    Endian       =  little                                                  /
//    Source file  =  E:\ELE\yten\pro\message\ican-mcp2515.c                  /
//    Command line =  E:\ELE\yten\pro\message\ican-mcp2515.c -D EMB_FLASH     /
//                    -lCN E:\ELE\yten\pro\Debug\List\ -lb                    /
//                    E:\ELE\yten\pro\Debug\List\ -o                          /
//                    E:\ELE\yten\pro\Debug\Obj\ --no_cse --no_unroll         /
//                    --no_inline --no_code_motion --no_tbaa --no_clustering  /
//                    --no_scheduling --debug --endian little --cpu           /
//                    Cortex-M3 -e --fpu None --dlib_config "C:\Program       /
//                    Files\IAR Systems\Embedded Workbench 5.0                /
//                    Evaluation\ARM\INC\DLib_Config_Normal.h" -I             /
//                    E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I  /
//                    "C:\Program Files\IAR Systems\Embedded Workbench 5.0    /
//                    Evaluation\ARM\INC\" --section .text=.XML -On           /
//    List file    =  E:\ELE\yten\pro\Debug\List\ican-mcp2515.s               /
//                                                                            /
//                                                                            /
///////////////////////////////////////////////////////////////////////////////

        NAME `ican-mcp2515`

        EXTERN WWDG_ClearFlag
        EXTERN delay_nop

        PUBLIC CAN_BAUD
        PUBLIC CAN_RATE_TAB
        PUBLIC ConfCAN
        PUBLIC Init2515
        PUBLIC RTS
        PUBLIC Read2551
        PUBLIC ReadCAN
        PUBLIC ReadSPI
        PUBLIC SPIByteRead
        PUBLIC SPIByteWrite
        PUBLIC SPIFastRead
        PUBLIC SPIFastWrite
        PUBLIC SPIReset
        PUBLIC WriteCAN
        PUBLIC WriteSPI


        SECTION `.rodata`:CONST:NOROOT(2)
// unsigned char const __data CAN_RATE_TAB[3]
CAN_RATE_TAB:
        DATA
        DC8 1, 4, 24, 0

        SECTION `.rodata`:CONST:NOROOT(2)
CAN_BAUD:
        DATA
        DC8 1, 4, 18, 0

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
WriteSPI:
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MVNS     R3,#+1024
        ANDS     R3,R3,R2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        STR      R3,[R2, #+0]
        MOVS     R2,#+0
        MOVS     R1,R2
??WriteSPI_0:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+8
        BCS.N    ??WriteSPI_1
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        LSLS     R2,R0,R1
        LSLS     R2,R2,#+24
        BPL.N    ??WriteSPI_2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        ORRS     R2,R2,#0x2
        LDR.N    R3,??DataTable25  ;; 0x40010c0c
        STR      R2,[R3, #+0]
        B.N      ??WriteSPI_3
??WriteSPI_2:
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MOVS     R3,#+2
        BICS     R2,R2,R3
        LDR.N    R3,??DataTable25  ;; 0x40010c0c
        STR      R2,[R3, #+0]
??WriteSPI_3:
        nop              
        nop              
        nop              
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        ORRS     R2,R2,#0x400
        LDR.N    R3,??DataTable25  ;; 0x40010c0c
        STR      R2,[R3, #+0]
        nop              
        nop              
        nop              
        nop              
        nop              
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MVNS     R3,#+1024
        ANDS     R3,R3,R2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        STR      R3,[R2, #+0]
        nop              
        nop              
        nop              
        nop              
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MOVS     R3,#+2
        BICS     R2,R2,R3
        LDR.N    R3,??DataTable25  ;; 0x40010c0c
        STR      R2,[R3, #+0]
        ADDS     R1,R1,#+1
        B.N      ??WriteSPI_0
??WriteSPI_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
ReadSPI:
        MOVS     R2,#+0
        MOVS     R0,R2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MVNS     R3,#+1024
        ANDS     R3,R3,R2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        STR      R3,[R2, #+0]
        MOVS     R2,#+0
        MOVS     R1,R2
??ReadSPI_0:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+7
        BCS.N    ??ReadSPI_1
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        ORRS     R2,R2,#0x400
        LDR.N    R3,??DataTable25  ;; 0x40010c0c
        STR      R2,[R3, #+0]
        nop              
        nop              
        LDR.N    R2,??DataTable23  ;; 0x40010c08
        LDR      R3,[R2, #+0]
        MOVS     R2,#+1
        ANDS     R2,R2,R3
        LDR.N    R3,??DataTable23  ;; 0x40010c08
        STR      R2,[R3, #+0]
        CMP      R2,#+0
        BEQ.N    ??ReadSPI_2
        ORRS     R0,R0,#0x1
        B.N      ??ReadSPI_3
??ReadSPI_2:
        ANDS     R0,R0,#0xFE
??ReadSPI_3:
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        LSLS     R0,R0,#+1
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MVNS     R3,#+1024
        ANDS     R3,R3,R2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        STR      R3,[R2, #+0]
        nop              
        nop              
        ADDS     R1,R1,#+1
        B.N      ??ReadSPI_0
??ReadSPI_1:
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        ORRS     R2,R2,#0x400
        LDR.N    R3,??DataTable25  ;; 0x40010c0c
        STR      R2,[R3, #+0]
        LDR.N    R2,??DataTable23  ;; 0x40010c08
        LDR      R3,[R2, #+0]
        MOVS     R2,#+1
        ANDS     R2,R2,R3
        LDR.N    R3,??DataTable23  ;; 0x40010c08
        STR      R2,[R3, #+0]
        CMP      R2,#+0
        BEQ.N    ??ReadSPI_4
        ORRS     R0,R0,#0x1
        B.N      ??ReadSPI_5
??ReadSPI_4:
        ANDS     R0,R0,#0xFE
??ReadSPI_5:
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        LDR      R2,[R2, #+0]
        MVNS     R3,#+1024
        ANDS     R3,R3,R2
        LDR.N    R2,??DataTable25  ;; 0x40010c0c
        STR      R3,[R2, #+0]
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable23:
        DC32     0x40010c08

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable25:
        DC32     0x40010c0c

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
SPIByteWrite:
        PUSH     {R0,R4,R5,LR}
        MOVS     R4,R0
        MOVS     R5,R1
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        MOVS     R1,#+32
        BICS     R0,R0,R1
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        MOVS     R0,#+2
        BL       WriteSPI
        MOVS     R0,R4
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       WriteSPI
        MOVS     R0,R5
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       WriteSPI
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        ORRS     R0,R0,#0x20
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        ADD      SP,SP,#+4
        POP      {R4,R5,PC}       ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
SPIByteRead:
        PUSH     {R0,R4,R5,LR}
        MOVS     R4,R0
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        MOVS     R1,#+32
        BICS     R0,R0,R1
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        MOVS     R0,#+3
        BL       WriteSPI
        MOVS     R0,R4
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       WriteSPI
        BL       ReadSPI
        MOVS     R5,R0
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        ORRS     R0,R0,#0x20
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        MOVS     R0,R5
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        ADD      SP,SP,#+4
        POP      {R4,R5,PC}       ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
SPIReset:
        PUSH     {R0,LR}
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        MOVS     R1,#+32
        BICS     R0,R0,R1
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        MOVS     R0,#+192
        BL       WriteSPI
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        ORRS     R0,R0,#0x20
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        ADD      SP,SP,#+4
        POP      {PC}             ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
SPIFastRead:
        PUSH     {R0,R4,R5,LR}
        MOVS     R4,R0
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        MOVS     R1,#+32
        BICS     R0,R0,R1
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        MOVS     R0,R4
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       WriteSPI
        BL       ReadSPI
        MOVS     R5,R0
        LDR.N    R0,??DataTable41  ;; 0x4001100c
        LDR      R0,[R0, #+0]
        ORRS     R0,R0,#0x20
        LDR.N    R1,??DataTable41  ;; 0x4001100c
        STR      R0,[R1, #+0]
        UXTB     R5,R5            ;; ZeroExtS R5,R5,#+24,#+24
        MOVS     R0,R5
        ADD      SP,SP,#+4
        POP      {R4,R5,PC}       ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable41:
        DC32     0x4001100c

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
SPIFastWrite:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
ConfCAN:
        PUSH     {R0,R4-R6}
        LDRH     R5,[R2, #+0]
        STRB     R5,[R1, #+0]
        MOVS     R5,#+0
        STRB     R5,[R1, #+1]
        LDRB     R5,[R0, #+1]
        TST      R5,#0xE0
        BEQ.N    ??ConfCAN_0
        LDRB     R5,[R1, #+1]
        ORRS     R5,R5,#0xE0
        STRB     R5,[R1, #+1]
??ConfCAN_0:
        LDRB     R5,[R1, #+1]
        ORRS     R5,R5,#0x8
        STRB     R5,[R1, #+1]
        LDRB     R5,[R0, #+2]
        ANDS     R5,R5,#0xC0
        STRB     R5,[R1, #+2]
        LDRB     R5,[R1, #+2]
        LDRB     R6,[R0, #+0]
        LSLS     R6,R6,#+26       ;; ZeroExtS R6,R6,#+26,#+26
        LSRS     R6,R6,#+26
        ORRS     R6,R6,R5
        STRB     R6,[R1, #+2]
        LDRB     R5,[R0, #+3]
        STRB     R5,[R1, #+3]
        MOVS     R5,#+0
        STRB     R5,[R1, #+4]
        LDRB     R5,[R0, #+3]
        MOVS     R3,R5
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        MOVS     R5,#+2
        MLA      R2,R3,R5,R2
        MOVS     R5,#+0
        MOVS     R3,R5
??ConfCAN_1:
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+4
        BCS.N    ??ConfCAN_2
        LDRB     R5,[R0, #+5]
        CMP      R5,#+0
        BEQ.N    ??ConfCAN_2
        MOVS     R5,#+2
        MUL      R4,R3,R5
        LDRH     R5,[R2, #+0]
        MOVS     R6,#+256
        SDIV     R5,R5,R6
        UXTB     R4,R4            ;; ZeroExtS R4,R4,#+24,#+24
        ADDS     R6,R1,R4
        STRB     R5,[R6, #+5]
        LDRB     R5,[R1, #+4]
        ADDS     R5,R5,#+1
        STRB     R5,[R1, #+4]
        UXTB     R4,R4            ;; ZeroExtS R4,R4,#+24,#+24
        ADDS     R5,R1,R4
        LDRH     R6,[R2, #+0]
        STRB     R6,[R5, #+6]
        LDRB     R5,[R1, #+4]
        ADDS     R5,R5,#+1
        STRB     R5,[R1, #+4]
        ADDS     R2,R2,#+2
        LDRB     R5,[R0, #+3]
        ADDS     R5,R5,#+1
        STRB     R5,[R0, #+3]
        LDRB     R5,[R0, #+5]
        CMP      R5,#+1
        BCC.N    ??ConfCAN_3
        LDRB     R5,[R0, #+5]
        SUBS     R5,R5,#+1
        STRB     R5,[R0, #+5]
        B.N      ??ConfCAN_4
??ConfCAN_3:
        MOVS     R5,#+0
        STRB     R5,[R0, #+5]
??ConfCAN_4:
        ADDS     R3,R3,#+1
        B.N      ??ConfCAN_1
??ConfCAN_2:
        LDRB     R5,[R0, #+5]
        CMP      R5,#+0
        BNE.N    ??ConfCAN_5
        LDRB     R5,[R1, #+1]
        ORRS     R5,R5,#0x3
        STRB     R5,[R1, #+1]
        B.N      ??ConfCAN_6
??ConfCAN_5:
        LDRB     R5,[R1, #+1]
        ORRS     R5,R5,#0x1
        STRB     R5,[R1, #+1]
??ConfCAN_6:
        ADD      SP,SP,#+4
        POP      {R4-R6}
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
WriteCAN:
        PUSH     {R0,R4-R7,LR}
        MOVS     R4,R0
        MOVS     R7,R1
        MOVS     R6,R7
        LDRB     R1,[R4, #+0]
        MOVS     R0,R7
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       SPIByteWrite
        ADDS     R7,R7,#+1
        LDRB     R1,[R4, #+1]
        MOVS     R0,R7
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       SPIByteWrite
        ADDS     R7,R7,#+1
        LDRB     R1,[R4, #+2]
        MOVS     R0,R7
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       SPIByteWrite
        ADDS     R7,R7,#+1
        LDRB     R1,[R4, #+3]
        MOVS     R0,R7
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       SPIByteWrite
        ADDS     R7,R7,#+1
        LDRB     R1,[R4, #+4]
        MOVS     R0,R7
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BL       SPIByteWrite

⌨️ 快捷键说明

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