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

📄 510_spi_mt.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 10 dates
; the send date: 0FH, F0H, 5AH, A5H, 5FH,F5H, AFH, FAH, 55H, AAH;
;  Fmain: crystal, Fsub: crystal
;-----------------------------------------------------------------
TCC         ==      0x01    ; Time Clock/Counter
PC          ==      0x02    ; Program Counter & Stack
STATUS      ==      0x03    ;
    C       ==      0       ; Carry flag
    Z       ==      2       ; Zero flag
PORTA       ==      0x0A    ; PortA I/O register
TWTCR       ==      0x0D    ; TCC and WDT timer control register
RE          ==      0x0E    ; Interrupt mask register
RF          ==      0x0F    ; Interrupt status register
    SPIF    ==      4       ; Interrupt flag of SPI
Data_Buf    ==      0x10    ; Data buffer
; Bank 2
SPIS        ==      0x0C    ; SPI status register
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     0X18            ; SPI interrupt vector
        JMP     SPI_INT         ; To SPI interrupt program
        ORG     0x20
;-----------------------------------------------------------------
SPI_INT:
        ; User code
        ; …
        BC      RF, SPIF
        RETI
;-----------------------------------------------------------------
Main:
        MOV     A, @0x0F        ; Disable WDT, TCC clock source is Fsub
        MOV     TWTCR, A        ; Tcc 2s 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
LOOP:
        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 data
        JBC     SPIC, SSE       ; Wait to finish shift data
        JMP     $-1
        BANK    0
        JBS     RF, 0           ; Wait for 2s to shift next data
        JMP     $-1
        CLR     RF              ; Clear TCC flag
        INC     Data_Buf
        MOV     A, @0x0A        ; After shifting 10 bytes data, loop
        SUB     A, Data_Buf
        JBC     STATUS, C
        CLR     Data_Buf
        JMP     LOOP
        ;-----------------------------------
Data_Tbl:
        ADD     PC, A
        RETL    0x0F        ; 0
        RETL    0xF0        ; 1
        RETL    0x5A        ; 2
        RETL    0xA5        ; 3
        RETL    0x5F        ; 4
        RETL    0xF5        ; 5
        RETL    0xAF        ; 6
        RETL    0xFA        ; 7
        RETL    0x55        ; 8
        RETL    0xAA        ; 9
        NOP
        NOP
        ;-----------------------------------
        END

⌨️ 快捷键说明

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