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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)SPI總線的實(shí)現(xiàn)

          51單片機(jī)SPI總線的實(shí)現(xiàn)

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          //-----------------------函數(shù)聲明,變量定義------------------------------------------------------

          #include

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

          #include

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

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

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

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

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

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

          // 函數(shù)名稱: SPISendByte

          // 入口參數(shù): ch

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

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

          voidSPISendByte(unsignedcharch)

          {

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

          SCK = 1 ;//時(shí)鐘置高

          SS1 = 0 ;//選擇從機(jī)

          while(n--)

          {

          delayNOP();

          SCK = 0 ;//時(shí)鐘置低

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

          {

          MOSI = 1;// 傳送位1

          }

          else

          {

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

          }

          delayNOP();

          ch = ch<<1;// 數(shù)據(jù)左移一位

          SCK = 1 ;//時(shí)鐘置高

          }

          }

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

          // 函數(shù)名稱: SPIreceiveByte

          // 返回接收的數(shù)據(jù)

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

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

          unsignedcharSPIreceiveByte()

          {

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

          unsignedchartdata;

          SCK = 1;//時(shí)鐘為高

          SS1 = 0;//選擇從機(jī)

          while(n--)

          {

          delayNOP();

          SCK = 0;//時(shí)鐘為低

          delayNOP();

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

          if(MISO == 1)

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

          else

          tdata = tdata&0xfe;// 否則數(shù)據(jù)的最后一位置0

          SCK=1;

          }

          return(tdata);

          }

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

          // 函數(shù)名稱: SPIsend_receiveByte

          // 入口參數(shù): ch

          // 返回接收的數(shù)據(jù)

          // 函數(shù)功能:串行輸入/輸出子程序

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

          unsignedcharSPIsend_receiveByte(unsignedcharch)

          {

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

          unsignedchartdata;

          SCK = 1;//時(shí)鐘為高

          SS1 = 0;//選擇從機(jī)

          while(n--)

          {

          delayNOP();

          SCK = 0;//時(shí)鐘為低

          delayNOP();

          {

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

          if(MISO == 1)

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

          else

          tdata = tdata&0xfe;// 否則數(shù)據(jù)的最后一位置0

          }

          {

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

          {

          MOSI = 1;// 傳送位1

          }

          else

          {

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

          }

          ch = ch<<1;// 數(shù)據(jù)左移一位

          }

          SCK=1;

          }

          return(tdata);

          }



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

          評(píng)論


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

          關(guān)閉
          看屁屁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); })();