68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

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

SPI總線的軟件模擬

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

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

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

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

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

1.MCU串行輸入子程序SPIIN

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

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

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

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

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

                                NOP                                  ;延時(shí)

                                NOP

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

                                RLC         A                        ;左移至累加器A

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

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

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

                                RET

2.MCU串行輸出子程序SPIOUT

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

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

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

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

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

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

                                NOP                                  ;延時(shí)

                                NOP

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

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

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

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

                                RET

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

將80C51單片機(jī)R0寄存器的內(nèi)容傳送到AT25040的SI端,同時(shí)從AT25040的SO端接收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ù)送累加器A

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

                                NOP                                 ;延時(shí)

                                NOP

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

                                RLC         A                        ;左移至累加器A,最高為至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

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

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

編輯:admin  最后修改時(shí)間: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

怀柔区| 临沂市| 新昌县| 延川县| 库车县| 嘉义市| 泸水县| 南靖县| 武强县| 翁源县| 梨树县| 彭山县| 南京市| 江华| 通许县| 平泉县| 惠水县| 大荔县| 汾西县| 南溪县| 拉萨市| 贺兰县| 昌江| 涿鹿县| 同江市| 额尔古纳市| 商河县| 铅山县| 泰来县| 台中市| 金川县| 陵水| 武穴市| 桃江县| 扬州市| 车致| 西峡县| 宝坻区| 樟树市| 黎平县| 佛教|