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

📄 spi_mt_com.dt

📁 台弯义隆芯片spi控制使用设计实例说明Application of spi in em。
💻 DT
字号:
;****************************************************************;
; TILTE:       EM78P510 SPI Transfer DEMO CODE                   ;
; FUNCTION:    EM78P510 SPI Transfer as Master                   ;
; COMPANY:     ELAN MICROELECTRONICS (SZ) LTD.                   ;
;****************************************************************;
; EM78P510 as MASTER,
; send and receive date
; Fmain: crystal, Fsub: crystal
;-----------------------------------------------------------------
R0          ==      0x00    ; Indirect Address Register
TCC         ==      0x01    ; Time Clock/Counter
PC          ==      0x02    ; Program Counter & Stack
STATUS      ==      0x03    ;
    C       ==      0       ; Carry flag
    Z       ==      2       ; Zero flag
R4          ==      0x04    ; RAM Select Register
PORTA       ==      0x0A    ; PortA I/O register
TWTCR       ==      0x0D    ; TCC and WDT timer control register
RE          ==      0x0E    ; Interrupt mask register
RF          ==      0x0F    ; Interrupt status register
Data_Buf    ==      0x1F    ; Data 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
;-----------------------------------------------------------------
        ORG     0x00
        JMP     Main
        ORG     0x20
;-----------------------------------------------------------------
Main:
        MOV     A, @0x0D        ; Disable WDT, TCC clock source is Fsub
        MOV     TWTCR, A        ; Tcc 0.5s overflow
        CLR     TCC             ; Clear TCC
        CLR     Data_Buf        ; Clear data_buf
        CLR     PORTA           ; PortA output logic "0"
        MOV     A, @0x01
        MOV     RE, A           ; Enable TCC interrupt
        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, @01001100b   ; Data shift out rising edge, is on hold during low
        MOV     SPIC, A         ; Enable SPI mode, after data output sdo remain low
                                ; Selecting SPI Baud Rate is Fosc/32
LOOP1:
        CLR     Data_Buf
        MOV     A, @0xD0        ; The start address is 0x10
        MOV     R4, A
LOOP2:
        MOV     A, Data_Buf     ; To get data to transfer
        CALL    Data_Tbl
        BANK    2
        MOV     SPIW, A         ; Write data to buffer
        BS      SPIC, SSE       ; Start to shift the data
        JBC     SPIC, SSE       ; Finish to shift 8 bits?
        JMP     $-1
        JBS     SPIS, RBF       ; Finish to receive 8 bits?
        JMP     $-1
        NOP
        MOV     A, SPIR         ; Read the data received.
        MOV     R0, A
        ;BC      SPIS, RBF
        INC     R4
        BANK    0
        JBS     RF, 0           ; Wait for 0.5s
        JMP     $-1
        CLR     RF              ; Clear TCC flag
        INC     Data_Buf
        MOV     A, @0x0A
        SUB     A, Data_Buf
        JBS     STATUS, C       ; Finish to receive 10 bytes data?
        JMP     LOOP2           ; Receive next byte data
        JMP     LOOP1           ; Repeat to receive next 10 bytes data
        ;-----------------------------------
Data_Tbl:
        ADD     PC, A
        RETL    0xFE        ; 0
        RETL    0xFC        ; 1
        RETL    0xF8        ; 2
        RETL    0xF0        ; 3
        RETL    0xE0        ; 4
        RETL    0xC0        ; 5
        RETL    0x80        ; 6
        RETL    0x00        ; 7
        RETL    0x55        ; 8
        RETL    0xAA        ; 9
        NOP
        NOP
        ;-----------------------------------
        END

⌨️ 快捷键说明

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