<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機SPI總線的實現

          51單片機SPI總線的實現

          作者: 時間:2016-11-27 來源:網絡 收藏
          //-----------------------函數聲明,變量定義------------------------------------------------------

          #include

          本文引用地址:http://www.ex-cimer.com/article/201611/322566.htm

          #include

          sbit SCK=P1^0;// 將p1.0口模擬時鐘輸出

          sbit MOSI=P1^1;// 將p1.1口模擬主機輸出

          sbit MISO=P1^2;// 將p1.1口模擬主機輸入

          sbit SS1=P1^3;// 將p1.1口模擬片選

          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

          //-----------------------------------------------------------------------------------------------

          // 函數名稱: SPISendByte

          // 入口參數: ch

          // 函數功能: 發(fā)送一個字節(jié)

          //------------------------------------------------------------------------------------------------

          voidSPISendByte(unsignedcharch)

          {

          unsignedcharidata n=8;// 向SDA上發(fā)送一位數據字節(jié),共八位

          SCK = 1 ;//時鐘置高

          SS1 = 0 ;//選擇從機

          while(n--)

          {

          delayNOP();

          SCK = 0 ;//時鐘置低

          if((ch&0x80) == 0x80)// 若要發(fā)送的數據最高位為1則發(fā)送位1

          {

          MOSI = 1;// 傳送位1

          }

          else

          {

          MOSI = 0;// 否則傳送位0

          }

          delayNOP();

          ch = ch<<1;// 數據左移一位

          SCK = 1 ;//時鐘置高

          }

          }

          //------------------------------------------------------------------------------------------------

          // 函數名稱: SPIreceiveByte

          // 返回接收的數據

          // 函數功能: 接收一字節(jié)子程序

          //------------------------------------------------------------------------------------------------

          unsignedcharSPIreceiveByte()

          {

          unsignedcharidata n=8;// 從MISO線上讀取一上數據字節(jié),共八位

          unsignedchartdata;

          SCK = 1;//時鐘為高

          SS1 = 0;//選擇從機

          while(n--)

          {

          delayNOP();

          SCK = 0;//時鐘為低

          delayNOP();

          tdata = tdata<<1;// 左移一位,或_crol_(temp,1)

          if(MISO == 1)

          tdata = tdata|0x01;// 若接收到的位為1,則數據的最后一位置1

          else

          tdata = tdata&0xfe;// 否則數據的最后一位置0

          SCK=1;

          }

          return(tdata);

          }

          //------------------------------------------------------------------------------------------------

          // 函數名稱: SPIsend_receiveByte

          // 入口參數: ch

          // 返回接收的數據

          // 函數功能:串行輸入/輸出子程序

          //------------------------------------------------------------------------------------------------

          unsignedcharSPIsend_receiveByte(unsignedcharch)

          {

          unsignedcharidata n=8;// 從MISO線上讀取一上數據字節(jié),共八位

          unsignedchartdata;

          SCK = 1;//時鐘為高

          SS1 = 0;//選擇從機

          while(n--)

          {

          delayNOP();

          SCK = 0;//時鐘為低

          delayNOP();

          {

          tdata = tdata<<1;// 左移一位,或_crol_(temp,1)

          if(MISO == 1)

          tdata = tdata|0x01;// 若接收到的位為1,則數據的最后一位置1

          else

          tdata = tdata&0xfe;// 否則數據的最后一位置0

          }

          {

          if((ch&0x80) == 0x80)// 若要發(fā)送的數據最高位為1則發(fā)送位1

          {

          MOSI = 1;// 傳送位1

          }

          else

          {

          MOSI = 0;// 否則傳送位0

          }

          ch = ch<<1;// 數據左移一位

          }

          SCK=1;

          }

          return(tdata);

          }



          關鍵詞: 51單片機SPI總

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();