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

📄 510_spi_slave.dt

📁 台弯义隆芯片spi控制使用设计实例说明Application of spi in em。
💻 DT
字号:
;****************************************************************;
; TILTE:       EM78P510 SPI Transfer DEMO CODE                   ;
; FUNCTION:    EM78P510 SPI Transfer as Slaver                   ;
; COMPANY:     ELAN MICROELECTRONICS (SZ) LTD.                   ;
;****************************************************************;
; EM78P510 as SLAVER,
; Fmain: crystal, Fsub: crystal
;-----------------------------------------------------------------
R0          ==      0x00    ; Indirect Address Register
R4          ==      0x04    ; RAM Select Register
PORTA       ==      0x0A    ; PortA IO register
TWTCR       ==      0x0D    ; TCC and WDT timer control register
BUFFER      ==      0x1F    ; Buffer
; Bank 2
SPIS        ==      0x0C    ; SPI status register
    RBF     ==      0
SPIC        ==      0x0D    ; SPI control register
    SSE     ==      4       ; SPI shift enable bit
SPIR        ==      0x0E    ; SPI read buffer
SPIW        ==      0x0F    ; SPI write buffer
; Bank 4
PIOCRA      ==      0x0A    ; PortA I/O control register
PIOCR9      ==      0x09    ; Port9 IO control register
;-----------------------------------------------------------------
        ORG     0x00
        JMP     Main
        ORG     0x20
;-----------------------------------------------------------------
Main:
        MOV     A, @0x00        ; Disable WDT
        MOV     TWTCR, A
        MOV     PORTA, A        ; PortA output logic "0"
        BANK    4
        MOV     A, @0x10        ; Set PA4 (SI) as input pin
        MOV     PIOCRA, A       ; SO,SCK output pin
        Bank    2
        MOV     A, @00100000b   ; Shift left, SDO delay time: 16clk,
        MOV     SPIS, A         ; disable open-drain
        MOV     A, @01101111b   ; Data shift out rising edge, is on hold during low
        MOV     SPIC, A         ; Enable SPI mode, after data output sdo remain low
                                ; MCU is slaver
LOOP1:
        MOV     A, @0x0A        ; Receive 10 byte data
        MOV     BUFFER, A
        MOV     A, @0xD0        ; The start address is 0x10
        MOV     R4, A
LOOP2:
        BANK    2
        BS      SPIC, SSE       ; Start to shift data
        JBS     SPIS, RBF       ; Finish to receive 8 bits?
        JMP     $-1
        NOP
        MOV     A, SPIR         ; Read the data received.
        ;BC      SPIS, RBF
        MOV     R0, A
        INC     R4
        DJZ     BUFFER          ; Finish to receive 10 bytes data?
        JMP     LOOP2           ; Receive next byte data
        JMP     LOOP1           ; Repeat to receive next 10 bytes data
        END

⌨️ 快捷键说明

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