📄 spi.tmp
字号:
//3.1 MCU串行输入子程序SPIIN
//从X25F008的SPISO线上接收8位数据并放入寄存器R0中的应用子程序如下:
SPIIN:SETB P1.1 ;//使P1.1(时钟)输出为1
CLR P1.2 //选择从机
MOV R1,#08H// ;置循环次数
SPIIN1:CLR P1.1// ;使P1.1(时钟)输出为0
NOP ;延时
NOP
MOV C,P1.3 ;从机输出SPISO送进位C
RLC A ;左移至累加器ACC
SETB P1.1 ;使P1.0(时钟)输出为1
DJNZ R1,SPIIN1 ;判断是否循环8次(8位数据)
MOV R0,A ;8位数据送R0
RET
3.2 MCU串行输出子程序SPIOUT
将MCS51单片机中R0寄存器的内容传送到X25F008的SPISI线上的程序如下:
SPIOUT:SETB P1.1 ;使P1.1(时钟)输出为1
CLR P1.2 ;选择从机
MOV R1,#08H ;置循环次数
MOV A,R0 ;8位数据送累加器ACC
SPIOUT1:CLR P1.1 ;使P1.1(时钟)输出为0
NOP ;延时
NOP
RLC A ;左移至累加器ACC最高位至C
MOV P1.0,C ;进位C送从机输入SPISI线上
SETB P1.1 ;使P1.1(时钟)输出为1
DJNZ R1,SPIOUT1 ;判是否循环8次(8位数据)
RET
3.3 MCU串行输入/输出子程序SPIIO
将MCS51单片机R0寄存器的内容传送到X25F008的SPISI中,同时从X25F008的SPISO接收8位数据的程序如下:
SPIIO:SETB P1.1 ;使P1.1(时钟)输出为1
CLR P1.2 ;选择从机
MOV R1,#08H ;置循环次数
MOV A,R0 ;8位数据送累加器ACC
SPIIO1:CLR P1.1 ;使P1.1(时钟)输出为0
NOP ;延时
NOP
MOV C,P1.3 ;从机输出SPISO送进位C
RLC A ;左移至累加器ACC最高位至C
MOV P1.0,C ;进位C送从机输入
SETB P1.1 ;使P1.1(时钟)输出为1
DJNZ R1,SPIIO1 ;判断是否循环8次(8位数据)
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -