📄 spi.asm
字号:
;单片机发送2个数据
LIST P=16F877
INCLUDE<P16F877.INC>
ORG 0X00
GOTO MAIN
MAIN BSF STATUS,RP0 ;在体1里面设置TRISC和SSPSTAT
BCF STATUS,RP1
MOVLW 0X00
MOVWF TRISC
MOVLW 0X80
MOVWF SSPSTAT
BCF STATUS,RP0 ;在体0里面设置SSPCON
MOVLW 0X30
MOVWF SSPCON
;设置完成启动发送
LOOP MOVLW 0X3F ;发送的第1个数先送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY ;延时
MOVLW 0X06 ;发送的第2个数送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY ;延时
MOVLW 0X5B ;发送的第3个数送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY
MOVLW 0X4F ;发送的第4个数送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY
MOVLW 0X66 ;发送的第5个数送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY
MOVLW 0X6D ;发送的第6个数送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY
MOVLW 0X7D ;发送的第7个数送到W寄存器
CALL FASONG ;调用发送程序
CALL DELAY
GOTO LOOP
FASONG MOVWF SSPBUF ;要发送的数据已经在W里面,需要将其取出并且送到SSPBUF中
BCF STATUS,RP1
BCF STATUS,RP0
LOOP1 BTFSS PIR1,SSPIF ;测试SSPIF是否为1,即是否已经完成了发送数据
GOTO LOOP1 ;SSPIF=0,即发未完成,继续查询,直到发送完成
RETURN ;SSPIF=1,发送完成,返回
DELAY movlw 0xff
movwf 77h
lp0 movlw 0xff
movwf 78h
lp1 nop
nop
nop
nop
nop
decfsz 78h,1
goto lp1
decfsz 77h,1
goto lp0
return
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -