宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
122
; 7 6 5 4 3 2 1 0
;SPCTL SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0
if MASTER
MOV SPCTL,#11111100B ;0FCH, 忽略 SS 脚, 设为主机
;SSIG=1: 忽略 SS 脚
;SPEN=1:允许 SPI 工作
;DORD=1:先传低位 LSB
;MSTR=1:设为主机
;CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。
;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。
;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4
else
MOV SPCTL,#11101100B ;0ECH, 忽略 SS 脚, 设为从机
;SSIG=1: 忽略 SS 脚
;SPEN=1:允许 SPI 工作
;DORD=1:先传低位 LSB
;MSTR=0:设为从机
;CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。
;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。
;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4
endif
MOV SPSTAT,#11000000B ;清 0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)
;向该两个标志位写 "1" 会将它们清 0
MOV A, #00001000B
ORL AUXR, A ;令 ESPI(AUXR.3)=1,允许 SPIF(SPSTAT.7)产生中断
SETB EADC_SPI ;开 ADC 中断和 SPI 中断共享的总中断控制位
RET
;------------------------------------------------------------------------------
RS232_Send_Byte: ;RS232 串口发送一个字节
CLR TI ;清零串口发送中断标志
MOV SBUF, A
RS232_Send_Wait:
JNB TI, RS232_Send_Wait ;等待发送完毕, 未发送完毕跳回本行
CLR TI ;清零串口发送中断标志
RET
;------------------------------------------------------------------------------
;此段程序只有主 MCU 调用
SPI_Send_Byte: ;SPI 发送一个字节
CLR EADC_SPI ;关 ADC 中断和 SPI 中断共享的总中断控制位
MOV SPDAT, A ;SPI 发送数据
SPI_Send_Byte_Wait:
MOV A, SPSTAT ;等待 SPIF=1 即等待 SPI 发送完毕
ANL A, #80H