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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)串口通信控制步進(jìn)電機(jī)

          單片機(jī)串口通信控制步進(jìn)電機(jī)

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏

          /**
          * @brief步進(jìn)電機(jī)配置(根據(jù)輸出軸轉(zhuǎn)的圈數(shù)來確定轉(zhuǎn)子的拍數(shù)beats)
          * @param 無
          * @retval 無
          */
          void motor_Config(ulong angle)
          {
          //在計(jì)算之前先關(guān)閉中斷
          EA = 0;
          beats = (angle*64*8*8)/360;
          EA = 1;
          }

          /**
          * @brief 定時(shí)器T0定時(shí)配置
          * @param uint xms
          * @retval 無
          */
          void timer0_Config()
          {
          TMOD &= 0xF0;//清零T0控制位
          TMOD |= 0x01;//T1方式1
          TH0 = 0xF8;
          TL0 = 0xCC;//2ms
          TR0 = 1;
          ET0 = 1;
          EA = 1;
          }

          /**
          * @brief 串口通信配置
          * @param 無
          * @retval 無
          */
          void Uart_Config(uint baud)
          {
          SCON |= 0x50;//SM0-SM2 REN TB8 RB8 TI RI
          TMOD &= 0x0F;//清零T1控制位
          TMOD |= 0x20;//設(shè)定定時(shí)器T1八位自動(dòng)重裝模式,計(jì)數(shù)設(shè)定串口波特率
          TH1 = 256-(11059200/12/32/baud);//波特率 = 2^SMOD/32 * T1(溢出率) T1(溢出率) = 1/[(256-X)*(12/11059200)]
          TL1 = TH1;
          TR1 = 1;
          ET1 = 0;//關(guān)閉T1的定時(shí)中斷
          ES = 1;//打開串口中斷
          EA = 1;//開總中斷
          }

          /**
          * @brief T0中斷服務(wù)子程序
          * @param 無
          * @retval 無
          */
          void timer0_Int() interrupt 1 using 3
          {
          static uchar step = 0;
          uchar buf = 0;//存放相值
          TH0 = 0xF8;
          TL0 = 0xCC;
          if (beats)
          {
          if (!dir)
          {
          buf = (P1 & 0xF0);//buf暫存P1的高字節(jié),清零低字節(jié)
          buf |= table[step++];//將相值存入buf
          step &= 0x07;//與方式實(shí)現(xiàn)到8歸零
          P1 = buf;
          beats--;
          }
          else
          {
          buf = (P1 & 0xF0);
          buf |= table[step--];
          if (step <= 0)
          {
          step = 7;
          }
          P1 = buf;
          beats--;
          }
          }
          else
          {
          P1 |= 0x0F;//關(guān)閉所有的相,即步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng)
          }
          }

          /**
          * @brief 串口中斷服務(wù)子程序
          * @param 無
          * @retval 無
          */
          void Uart_Int() interrupt 4 using 0
          {
          if (RI)
          {
          RI = 0;
          if (SBUF > 1)
          {
          angle = SBUF;
          }
          else
          {
          dir = SBUF;
          }
          }
          }


          上一頁 1 2 下一頁

          評(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); })();