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

📄 stm32f10x_i2c.s

📁 完成数据的采集
💻 S
📖 第 1 页 / 共 2 页
字号:
        THUMB
I2C_SendData:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        STRH     R1,[R0, #+16]
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_ReceiveData:
        LDRH     R0,[R0, #+16]
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_Send7bitAddress:
        UXTB     R2,R2            ;; ZeroExtS R2,R2,#+24,#+24
        CMP      R2,#+0
        BEQ.N    ??I2C_Send7bitAddress_0
        ORRS     R1,R1,#0x1
        B.N      ??I2C_Send7bitAddress_1
??I2C_Send7bitAddress_0:
        ANDS     R1,R1,#0xFE
??I2C_Send7bitAddress_1:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        STRH     R1,[R0, #+16]
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_ReadRegister:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        LDRH     R0,[R0, R1]
        UXTH     R0,R0            ;; ZeroExtS R0,R0,#+16,#+16
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_SoftwareResetCmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_SoftwareResetCmd_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x8000
        STRH     R2,[R0, #+0]
        B.N      ??I2C_SoftwareResetCmd_1
??I2C_SoftwareResetCmd_0:
        LDRH     R2,[R0, #+0]
        LSLS     R2,R2,#+17       ;; ZeroExtS R2,R2,#+17,#+17
        LSRS     R2,R2,#+17
        STRH     R2,[R0, #+0]
??I2C_SoftwareResetCmd_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_SMBusAlertConfig:
        MOVS     R2,#+8192
        UXTH     R1,R1            ;; ZeroExtS R1,R1,#+16,#+16
        CMP      R1,R2
        BNE.N    ??I2C_SMBusAlertConfig_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x2000
        STRH     R2,[R0, #+0]
        B.N      ??I2C_SMBusAlertConfig_1
??I2C_SMBusAlertConfig_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_SMBusAlertConfig_2  ;; 0xcfff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_SMBusAlertConfig_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_SMBusAlertConfig_2:
        DC32     0xcfff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_TransmitPEC:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_TransmitPEC_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x1000
        STRH     R2,[R0, #+0]
        B.N      ??I2C_TransmitPEC_1
??I2C_TransmitPEC_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??DataTable6  ;; 0xefff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_TransmitPEC_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable6:
        DC32     0xefff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_PECPositionConfig:
        MOVS     R2,#+2048
        UXTH     R1,R1            ;; ZeroExtS R1,R1,#+16,#+16
        CMP      R1,R2
        BNE.N    ??I2C_PECPositionConfig_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x800
        STRH     R2,[R0, #+0]
        B.N      ??I2C_PECPositionConfig_1
??I2C_PECPositionConfig_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??DataTable7  ;; 0xf7ff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_PECPositionConfig_1:
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        DATA
??DataTable7:
        DC32     0xf7ff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_CalculatePEC:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_CalculatePEC_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x20
        STRH     R2,[R0, #+0]
        B.N      ??I2C_CalculatePEC_1
??I2C_CalculatePEC_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_CalculatePEC_2  ;; 0xffdf
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_CalculatePEC_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_CalculatePEC_2:
        DC32     0xffdf

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GetPEC:
        MOVS     R1,R0
        LDRH     R2,[R1, #+24]
        UXTH     R2,R2            ;; ZeroExtS R2,R2,#+16,#+16
        LSRS     R2,R2,#+8
        MOVS     R0,R2
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_ARPCmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BEQ.N    ??I2C_ARPCmd_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x10
        STRH     R2,[R0, #+0]
        B.N      ??I2C_ARPCmd_1
??I2C_ARPCmd_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_ARPCmd_2  ;; 0xffef
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_ARPCmd_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_ARPCmd_2:
        DC32     0xffef

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_StretchClockCmd:
        UXTB     R1,R1            ;; ZeroExtS R1,R1,#+24,#+24
        CMP      R1,#+0
        BNE.N    ??I2C_StretchClockCmd_0
        LDRH     R2,[R0, #+0]
        ORRS     R2,R2,#0x80
        STRH     R2,[R0, #+0]
        B.N      ??I2C_StretchClockCmd_1
??I2C_StretchClockCmd_0:
        LDRH     R2,[R0, #+0]
        LDR.N    R3,??I2C_StretchClockCmd_2  ;; 0xff7f
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+0]
??I2C_StretchClockCmd_1:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_StretchClockCmd_2:
        DC32     0xff7f

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_FastModeDutyCycleConfig:
        MOVS     R2,#+16384
        UXTH     R1,R1            ;; ZeroExtS R1,R1,#+16,#+16
        CMP      R1,R2
        BEQ.N    ??I2C_FastModeDutyCycleConfig_0
        LDRH     R2,[R0, #+28]
        LDR.N    R3,??I2C_FastModeDutyCycleConfig_1  ;; 0xbfff
        ANDS     R3,R3,R2
        STRH     R3,[R0, #+28]
        B.N      ??I2C_FastModeDutyCycleConfig_2
??I2C_FastModeDutyCycleConfig_0:
        LDRH     R2,[R0, #+28]
        ORRS     R2,R2,#0x4000
        STRH     R2,[R0, #+28]
??I2C_FastModeDutyCycleConfig_2:
        BX       LR               ;; return
        Nop      
        DATA
??I2C_FastModeDutyCycleConfig_1:
        DC32     0xbfff

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GetLastEvent:
        PUSH     {R0,R4}
        MOVS     R1,R0
        MOVS     R4,#+0
        MOVS     R0,R4
        MOVS     R4,#+0
        MOVS     R2,R4
        MOVS     R4,#+0
        MOVS     R3,R4
        LDRH     R4,[R1, #+20]
        MOVS     R2,R4
        LDRH     R4,[R1, #+24]
        MOVS     R3,R4
        LSLS     R3,R3,#+16
        MOVS     R4,R3
        ORRS     R4,R4,R2
        LSLS     R4,R4,#+8        ;; ZeroExtS R4,R4,#+8,#+8
        LSRS     R4,R4,#+8
        MOVS     R0,R4
        ADD      SP,SP,#+4
        POP      {R4}
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_CheckEvent:
        PUSH     {R0,R4-R6}
        MOVS     R2,R0
        MOVS     R6,#+0
        MOVS     R3,R6
        MOVS     R6,#+0
        MOVS     R4,R6
        MOVS     R6,#+0
        MOVS     R5,R6
        MOVS     R6,#+0
        MOVS     R0,R6
        LDRH     R6,[R2, #+20]
        MOVS     R4,R6
        LDRH     R6,[R2, #+24]
        MOVS     R5,R6
        LSLS     R5,R5,#+16
        MOVS     R6,R5
        ORRS     R6,R6,R4
        LSLS     R6,R6,#+8        ;; ZeroExtS R6,R6,#+8,#+8
        LSRS     R6,R6,#+8
        MOVS     R3,R6
        CMP      R3,R1
        BNE.N    ??I2C_CheckEvent_0
        MOVS     R6,#+1
        MOVS     R0,R6
        B.N      ??I2C_CheckEvent_1
??I2C_CheckEvent_0:
        MOVS     R6,#+0
        MOVS     R0,R6
??I2C_CheckEvent_1:
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        ADD      SP,SP,#+4
        POP      {R4-R6}
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GetFlagStatus:
        PUSH     {R0,R4-R6}
        MOVS     R2,R0
        MOVS     R6,#+0
        MOVS     R0,R6
        MOVS     R6,#+0
        MOVS     R3,R6
        MOVS     R6,#+0
        MOVS     R4,R6
        MOVS     R6,#+0
        MOVS     R5,R6
        LDRH     R6,[R2, #+20]
        MOVS     R4,R6
        LDRH     R6,[R2, #+24]
        MOVS     R5,R6
        LSLS     R5,R5,#+16
        MOVS     R6,R5
        ORRS     R6,R6,R4
        MOVS     R3,R6
        LSLS     R1,R1,#+8        ;; ZeroExtS R1,R1,#+8,#+8
        LSRS     R1,R1,#+8
        MOVS     R6,R1
        ANDS     R6,R6,R3
        SUBS     R6,R6,#+1
        SBCS     R6,R6,R6
        MVNS     R6,R6
        LSRS     R6,R6,#+31
        MOVS     R0,R6
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        ADD      SP,SP,#+4
        POP      {R4-R6}
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_ClearFlag:
        PUSH     {R4,R5}
        MOVS     R4,#+0
        MOVS     R2,R4
        MOVS     R4,#+0
        MOVS     R3,R4
        LSLS     R4,R1,#+8        ;; ZeroExtS R4,R1,#+8,#+8
        LSRS     R4,R4,#+8
        MOVS     R2,R4
        LSRS     R4,R1,#+28
        MOVS     R3,R4
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+1
        BNE.N    ??I2C_ClearFlag_0
        LDRH     R4,[R0, #+20]
        MOVS     R5,R2
        BICS     R4,R4,R5
        STRH     R4,[R0, #+20]
        B.N      ??I2C_ClearFlag_1
??I2C_ClearFlag_0:
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+2
        BNE.N    ??I2C_ClearFlag_2
        LDRH     R4,[R0, #+20]
        B.N      ??I2C_ClearFlag_1
??I2C_ClearFlag_2:
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+6
        BNE.N    ??I2C_ClearFlag_3
        LDRH     R4,[R0, #+20]
        LDRH     R5,[R0, #+0]
        ORRS     R5,R5,#0x1
        STRH     R5,[R0, #+0]
        B.N      ??I2C_ClearFlag_1
??I2C_ClearFlag_3:
        LDRH     R4,[R0, #+20]
        LDRH     R5,[R0, #+24]
??I2C_ClearFlag_1:
        POP      {R4,R5}
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_GetITStatus:
        PUSH     {R0,R4-R6}
        MOVS     R2,R0
        MOVS     R6,#+0
        MOVS     R0,R6
        MOVS     R6,#+0
        MOVS     R3,R6
        MOVS     R6,#+0
        MOVS     R4,R6
        MOVS     R6,#+0
        MOVS     R5,R6
        LDRH     R6,[R2, #+20]
        MOVS     R4,R6
        LDRH     R6,[R2, #+24]
        MOVS     R5,R6
        LSLS     R5,R5,#+16
        MOVS     R6,R5
        ORRS     R6,R6,R4
        MOVS     R3,R6
        LSLS     R1,R1,#+8        ;; ZeroExtS R1,R1,#+8,#+8
        LSRS     R1,R1,#+8
        MOVS     R6,R1
        ANDS     R6,R6,R3
        SUBS     R6,R6,#+1
        SBCS     R6,R6,R6
        MVNS     R6,R6
        LSRS     R6,R6,#+31
        MOVS     R0,R6
        UXTB     R0,R0            ;; ZeroExtS R0,R0,#+24,#+24
        ADD      SP,SP,#+4
        POP      {R4-R6}
        BX       LR               ;; return

        SECTION `.XML`:CODE:NOROOT(2)
        THUMB
I2C_ClearITPendingBit:
        PUSH     {R4,R5}
        MOVS     R4,#+0
        MOVS     R2,R4
        MOVS     R4,#+0
        MOVS     R3,R4
        LSLS     R4,R1,#+8        ;; ZeroExtS R4,R1,#+8,#+8
        LSRS     R4,R4,#+8
        MOVS     R2,R4
        LSRS     R4,R1,#+28
        MOVS     R3,R4
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+1
        BNE.N    ??I2C_ClearITPendingBit_0
        LDRH     R4,[R0, #+20]
        MOVS     R5,R2
        BICS     R4,R4,R5
        STRH     R4,[R0, #+20]
        B.N      ??I2C_ClearITPendingBit_1
??I2C_ClearITPendingBit_0:
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+2
        BNE.N    ??I2C_ClearITPendingBit_2
        LDRH     R4,[R0, #+20]
        B.N      ??I2C_ClearITPendingBit_1
??I2C_ClearITPendingBit_2:
        UXTB     R3,R3            ;; ZeroExtS R3,R3,#+24,#+24
        CMP      R3,#+6
        BNE.N    ??I2C_ClearITPendingBit_3
        LDRH     R4,[R0, #+20]
        LDRH     R5,[R0, #+0]
        ORRS     R5,R5,#0x1
        STRH     R5,[R0, #+0]
        B.N      ??I2C_ClearITPendingBit_1
??I2C_ClearITPendingBit_3:
        LDRH     R4,[R0, #+20]
        LDRH     R5,[R0, #+24]
??I2C_ClearITPendingBit_1:
        POP      {R4,R5}
        BX       LR               ;; return

        END
// 
// 1 352 bytes in section .XML
// 
// 1 352 bytes of CODE memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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