📄 vspi.asm
字号:
;******************VSPI****************
;虚拟SPI总线软件包
;入口参数:待发送数据在SPIBUF中。
;出口参数:接收到的数据在SPIBUF中。
;占用资源:W,STATUS,RB,023H,024H,1重堆栈。
;说 明:1.总线空闲时,时钟为高电平。
; 2.时钟上升沿移出数据,下降沿移入数据。
; 3.高位在前,低位在后。
IFNDEF VSPI1
#DEFINE VSPI1
#DEFINE VSCK PORTB,1 ;SPI时钟信号线
#DEFINE VSDO PORTB,2 ;SPI数据输出线
#DEFINE VSDI PORTB,3 ;SPI数据输入线
#DEFINE SCKIO TRISB,1 ;SCK属性
#DEFINE SDOIO TRISB,2 ;SDO属性
#DEFINE SDIIO TRISB,3 ;SDI属性
SPIBUF EQU SOU ;数据缓冲器
BCOUNT EQU CNT ;位计数器
VSPI MOVLW 8
MOVWF BCOUNT
BSF VSCK
BSF VSDO
BSF VSDI
BSF STATUS,RP0
BCF SCKIO
BCF SDOIO
BSF SDIIO ;设置口属性
BCF STATUS,RP0
SPILOOP BCF VSCK ;时钟下降沿
NOP
NOP
BCF STATUS,C
BTFSC VSDI
BSF STATUS,C ;读入一位数据
RLF SPIBUF,F
BCF VSDO
BTFSC STATUS,C
BSF VSDO ;送出一位数据
NOP
NOP
BSF VSCK ;时钟上升沿
NOP
DECFSZ BCOUNT,F
GOTO SPILOOP
BSF STATUS,RP0
BSF SCKIO
BSF SDOIO
BSF SDIIO ;设置口属性
BCF STATUS,RP0
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -