| |
|
|
警告:由于格式的原因,直接从网页上复制程序,粘贴到编译环境里面,编译时会出错。敬请直接下载word档,从word里面直接复制到编译环境里面即可。 ( word原文件下载) |
SPI的设置
1. 主机模式,采用查询方式发送数据
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. 从机模式,采用查询方式发送数据
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. 从机模式,采用查询方式接收数据
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 |
|
|