call spiout ;调用子程序输出
movf spi_wt,w ;加载待写数据
movwf spi_out ;置入寄存器
call spiout ;调用子程序输出
bsf PORTB,cs ;触发写入操作
nop ;延时
retlw 0 ;从子程序返回
;输出子程序,用spiout名称调用
spiout movlw 0x08 ;加载输出位数
movwf spi_cnt ;置入寄存器
nspiout rlf spi_out ;先输出最高位
btfsc STATUS,C ;是否为1
bsf PORTB,SDO ;输出1
btfss STATUS,C ;是否为0
bcf PORTB,SDO ;输出0
nop ;延时
bsf PORTB,SCK ;时钟信号上升沿
nop ;延时
bcf PORTB,SCK ;时钟信号下降沿
decfsz spi_cnt ;检查输出位数
goto nspiout ;输出下一位
retlw 0 ;从子程序返回
;顺序读子程序,用名称spicrd调用
spicrd bcf STATUS,RP0
bcf PORTB,cs ;片选
bcf PORTB,SCK ;模式0
movlw E8H ;加载操作码
movwf spi_out ;置入寄存器
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

