|
9 SPI
1. SPI operation on Master Mode and send data by polling method.
lda P_IOC_Buf
and #11110000B
ora #00000001B
sta P_IOC_Buf
lda P_IOC_Attrib
and #11110000B
sta P_IOC_Attrib
lda P_IOC_Dir
and #11111011B
ora #00001011B
sta P_IOC_Dir ; set PC2 as input(SDI),pc0.pc1.pc3 as output
lda #$AB
sta P_SPI_Ctrl0
lda #$43
sta P_SPI_Ctrl1
set P_SPI_Status,CB_SPI_INTIF ;clear TX/RX INT flag
set P_INT_Flag2,CB_INT_SPIIF
?L_Tx:
clr P_IOC_Data,0
lda #$5F
sta P_SPI_TxData ; send data #$5F incessantly
?L_Loop:
tst P_SPI_Status,CB_SPI_INTIF ;RX INT ?
beq ?L_Loop ; no
set P_IOC_Data,0
set P_SPI_Status,CB_SPI_INTIF ;clear TX/RX INT flag
jmp ?L_Tx |
2. SPI operation on Slave Mode and send data by polling method.
lda P_IOC_Buf
and #11111000B
sta P_IOC_Buf
lda P_IOC_Attrib
and #11110000B
sta P_IOC_Attrib
lda P_IOC_Dir
and #11111000B
ora #00001000B
sta P_IOC_Dir ;set PC[0:2] as input,pc3 as output
lda #$EB
sta P_SPI_Ctrl0
lda #$C1
sta P_SPI_Ctrl1
set P_SPI_Status,CB_SPI_INTIF ;clear TX/RX INT flag
set P_INT_Flag2,CB_INT_SPIIF
?L_Tx:
tst P_SPI_Status,CB_SPI_INTIF
beq ?L_Tx ;no
set P_SPI_Status,CB_SPI_INTIF ;clear TX/RX INT flag
lda #$5F
sta P_SPI_TxData ;send data #$5F |
3. SPI operation on Slave Mode and receive data by polling method.
lda P_IOC_Buf
and #11111000B
sta P_IOC_Buf
lda P_IOC_Attrib
and #11110000B
sta P_IOC_Attrib
lda P_IOC_Dir
and #11111000B
ora #00001000B
sta P_IOC_Dir ;set PC[0:2] as input,pc3 as output
lda #$EB
sta P_SPI_Ctrl0
lda #$C1
sta P_SPI_Ctrl1
set P_SPI_Status,CB_SPI_INTIF ;clear TX/RX INT flag
set P_INT_Flag2,CB_INT_SPIIF
?L_Rx:
tst P_SPI_Status,CB_SPI_INTIF ;RX INT ?
beq ?L_Rx ;no
lda P_SPI_RxData ;read data |
|