新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > SPI總線在51系列單片機(jī)系統(tǒng)中的應(yīng)用

SPI總線在51系列單片機(jī)系統(tǒng)中的應(yīng)用

作者: 時間:2011-08-13 來源:網(wǎng)絡(luò) 收藏
3.1 MCU串行輸入子程序SPIIN

  從X25F008的SPISO線上接收8位數(shù)據(jù)并放入寄存器R0中的應(yīng)用子程序如下:

  SPIIN:SETB P1.1 ;使P1.1(時鐘)輸出為1

  CLR P1.2 ;選擇從機(jī)

  MOV R1,#08H ;置循環(huán)次數(shù)

  SPIIN1:CLR P1.1 ;使P1.1(時鐘)輸出為0

  NOP ;延時

  NOP

  MOV C,P1.3 ;從機(jī)輸出SPISO送進(jìn)位C

  RLC A ;左移至累加器ACC

  SETB P1.1 ;使P1.0(時鐘)輸出為1

  DJNZ R1,SPIIN1 ;判斷是否循環(huán)8次(8位數(shù)據(jù))

  MOV R0,A ;8位數(shù)據(jù)送R0

  RET

  3.2 MCU串行輸出子程序SPIOUT

  將MCS51單片機(jī)中R0寄存器的內(nèi)容傳送到X25F008的SPISI線上的程序如下:

  SPIOUT:SETB P1.1 ;使P1.1(時鐘)輸出為1

  CLR P1.2 ;選擇從機(jī)

  MOV R1,#08H ;置循環(huán)次數(shù)

  MOV A,R0 ;8位數(shù)據(jù)送累加器ACC

  SPIOUT1:CLR P1.1 ;使P1.1(時鐘)輸出為0

  NOP ;延時

  NOP

  RLC A ;左移至累加器ACC最高位至C

  MOV P1.0,C ;進(jìn)位C送從機(jī)輸入SPISI線上

  SETB P1.1 ;使P1.1(時鐘)輸出為1

  DJNZ R1,SPIOUT1 ;判是否循環(huán)8次(8位數(shù)據(jù))

  RET

  3.3 MCU串行輸入/輸出子程序SPIIO

  將MCS51單片機(jī)R0寄存器的內(nèi)容傳送到X25F008的SPISI中,同時從X25F008的SPISO接收8位數(shù)據(jù)的程序如下:

  SPIIO:SETB P1.1 ;使P1.1(時鐘)輸出為1

  CLR P1.2 ;選擇從機(jī)

  MOV R1,#08H ;置循環(huán)次數(shù)

  MOV A,R0 ;8位數(shù)據(jù)送累加器ACC

  SPIIO1:CLR P1.1 ;使P1.1(時鐘)輸出為0

  NOP ;延時

  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(時鐘)輸出為1

  DJNZ R1,SPIIO1 ;判斷是否循環(huán)8次(8位數(shù)據(jù))

  RET

  4 結(jié)束語

  本文介紹了通過接口實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)方法,給出了用MCS51單片機(jī)匯編語言模擬SPI串行總線的輸入、輸出,輸入/輸出以傳送8位數(shù)據(jù)的子程序。實(shí)際上,也可以根據(jù)SPI串行總線的操作時序特點(diǎn)來在MCS96系列、ATMEL89系列等單片機(jī)上實(shí)現(xiàn)的接口。


上一頁 1 2 下一頁

關(guān)鍵詞: SPI總線 51系列單片機(jī)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉