SPI總線(xiàn)在系統(tǒng)中的應(yīng)用
MOV R0,A ;8位數(shù)據(jù)送R0
RET
3.2 MCU串行輸出子程序SPIOUT
將MCS51單片機(jī)中R0寄存器的內(nèi)容傳送到X25F008的SPISI線(xiàn)上的程序如下:
SPIOUT:SETB P1.1 ;使P1.1(時(shí)鐘)輸出為1
CLR P1.2 ;選擇從機(jī)
MOV R1,#08H ;置循環(huán)次數(shù)
MOV A,R0 ;8位數(shù)據(jù)送累加器ACC
SPIOUT1:CLR P1.1 ;使P1.1(時(shí)鐘)輸出為0
NOP ;延時(shí)
NOP
RLC A ;左移至累加器ACC最高位至C
MOV P1.0,C ;進(jìn)位C送從機(jī)輸入SPISI線(xiàn)上
SETB P1.1 ;使P1.1(時(shí)鐘)輸出為1
DJNZ R1,SPIOUT1 ;判是否循環(huán)8次(8位數(shù)據(jù))
RET
3.3 MCU串行輸入/輸出子程序SPIIO
將MCS51單片機(jī)R0寄存器的內(nèi)容傳送到X25F008的SPISI中,同時(shí)從X25F008的SPISO接收8位數(shù)據(jù)的程序如下:
SPIIO:SETB P1.1 ;使P1.1(時(shí)鐘)輸出為1
CLR P1.2 ;選擇從機(jī)
MOV R1,#08H ;置循環(huán)次數(shù)
MOV A,R0 ;8位數(shù)據(jù)送累加器ACC
SPIIO1:CLR P1.1 ;使P1.1(時(shí)鐘)輸出為0
NOP ;延時(shí)
NOP
MOV C,P1.3 ;從機(jī)輸出SPISO送進(jìn)位C
RLC A ;左移至累加器ACC最高位至C
MOV P1.0,C ;進(jìn)位C送從機(jī)輸入
SETB P1.1 ;使P1.1(時(shí)鐘)輸出為1
DJNZ R1,SPIIO1 ;判斷是否循環(huán)8次(8位數(shù)據(jù))
RET
4 結(jié)束語(yǔ)
本文介紹了通過(guò)SPI總線(xiàn)接口實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)方法,給出了用MCS51單片機(jī)匯編語(yǔ)言模擬SPI串行總線(xiàn)的輸入、輸出,輸入/輸出以傳送8位數(shù)據(jù)的子程序。實(shí)際上,也可以根據(jù)SPI串行總線(xiàn)的操作時(shí)序特點(diǎn)來(lái)在MCS96系列、ATMEL89系列等單片機(jī)上實(shí)現(xiàn)SPI總線(xiàn)的接口。
評(píng)論