日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> SPI總線的軟件模擬

SPI總線的軟件模擬

作者:admin 來源:不詳 發(fā)布時間:2018-05-08  瀏覽:12

 對于沒有提供SPI接口的單片機而言,通?墒褂密浖霓k法來模擬SPI的總線操作,包括串行時鐘、數(shù)據(jù)輸入和輸出。

 Atmel公司生產(chǎn)的EEPROM具有SPI接口,存儲容量為4Kb的AT25040就有SPI接口,80C51系列單片機與AT25040的SPI總線接口接線如圖所示。

圖 SPI總線接口接線圖<?XML:NAMESPACE PREFIX = O />

圖9-6中,P1.0模擬SPI的數(shù)據(jù)輸出端(MOSI),P1.1模擬SPI的SCK輸出端,P1.2模擬SPI的從機選擇端(SS),P1.3模擬SPI的數(shù)據(jù)輸入端(MISO)。下面給出模擬SPI串行輸入、串行輸出和串行輸入/輸出的3個子程序。

1.MCU串行輸入子程序SPIIN

從AT25040的SO端接收8位數(shù)據(jù)并放入寄存器R0中。參考程序如下:

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

                                CLR          P1.2                    ;選擇從機

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

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

                                NOP                                  ;延時

                                NOP

                                MOV         C, P1.3                  ;從機輸出送進位C

                                RLC         A                        ;左移至累加器A

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

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

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

                                RET

2.MCU串行輸出子程序SPIOUT

將80C51單片機中R0寄存器的內(nèi)容傳送到AT25040的SI端。參考程序如下:

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

                                CLR          P1.2                    ;選擇從機

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

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

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

                                NOP                                  ;延時

                                NOP

                                RLC         A                        ;左移至累加器A,最高為至C

                                MOV         P1.0, C                  ;進位C送從機輸入

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

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

                                RET

3.MCU串行輸入/輸出子程序 SPIIO

將80C51單片機R0寄存器的內(nèi)容傳送到AT25040的SI端,同時從AT25040的SO端接收8位數(shù)據(jù)。參考程序如下:

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

                                CLR         P1.2                    ;選擇從機

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

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

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

                                NOP                                 ;延時

                                NOP

                                MOV         C, P1.3                  ;從機輸出送進位C

                                RLC         A                        ;左移至累加器A,最高為至C

                                MOV         P1.0, C                  ;進位C送從機輸入

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

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

                                RET

  這些子程序適用于在串行時鐘的上升沿輸入和下降沿輸出的各種串行外圍接口芯片(如D/A和A/D轉(zhuǎn)換芯片、實時時鐘芯片、LED顯示驅(qū)動芯片等)。對于下降沿輸入、上升沿輸出的各種串行外圍接口芯片,只要改變P1.1的輸出電平順序,這些子程序也同樣適用。

  如先置P1.1為低電平,之后再次置P1.1為高電平,再置P1.1為低電平等等。

編輯:admin  最后修改時間:2018-05-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4