找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2504|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC89C52 雙電機(jī)測(cè)速尋跡程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:190116 發(fā)表于 2017-5-9 14:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg52.h>            // 引用標(biāo)準(zhǔn)庫(kù)的頭文件
#include <intrins.h>   

#define uchar unsigned char
#define uint  unsigned int  
//=================電機(jī)驅(qū)動(dòng)=====================
sbit    dianji_r = P3^0;  //右邊電機(jī)控制口,低電平轉(zhuǎn)?
sbit    dianji_l = P3^7;  //左邊電機(jī)控制口,低電平轉(zhuǎn)  
//=============循跡感應(yīng)接口======================
sbit    xjmk_r    =    P3^2;// 右邊尋跡模塊檢測(cè)口 INT0
sbit    xjmk_l  =    P3^3;// 左邊尋跡模塊檢測(cè)口 INT1     


void    check_righet();//右邊時(shí)候檢測(cè)到黑線測(cè)試程序
void    check_left();//左邊時(shí)候檢測(cè)到黑線測(cè)試程序   

void delay_50us(uint t);
void delayms(uint Ms);   


uchar r_count;//右邊傳感器檢測(cè)到的次數(shù)計(jì)數(shù)單元
uchar l_count;
uint time;  
//***********************主程序******************************
main()   
{     
  time=50;            dianji_r=0;//上電時(shí)右側(cè)電機(jī)運(yùn)行
    dianji_l=0;//上電時(shí)左側(cè)電機(jī)運(yùn)行        EA=1;
    EX1=1;
    EX0=1;
    IT1=0;
    IT0=0;

   xjmk_r=1;//置IO為1,準(zhǔn)備讀取數(shù)據(jù)
     xjmk_l=1;
     _nop_();
     r_count=0;
     l_count=0;
      while(1)
      {
             _nop_();
       //  check_righet();//調(diào)用右邊尋跡檢測(cè)傳感器     
      //   check_left();//
        if(r_count>=1)
          {

                 delayms(time);
                 dianji_r=0;
                 dianji_l=0;
                 r_count=0;
               _nop_();
          }
          if(l_count>=1)
          {  

                  delayms(time);
                  dianji_r=0;
                  dianji_l=0;
                  l_count=0;
                  _nop_();
           }



        }

  }
  void init0int() interrupt 2
  {
       l_count=5;
       dianji_l=1;
       dianji_r=0;
       if(r_count>0)
       {   EX0=0;
           delayms(20);
           if(time>=20)time-=19;
           EX0=0;
        }
      return;

  }

  void init1int() interrupt 0
  {
      r_count=5;
     dianji_r=1;          dianji_l=0;
     if(l_count>0)
     { EX1=0;
      delayms(20);
      if(time>=20)time-=19;
      EX1=1;}
     return;  }  //*******************************************************************************
  //函數(shù)名稱:
  //功能:左邊邊時(shí)候檢測(cè)到黑線測(cè)試程序
void    check_left()
{
    if(xjmk_l==0)//檢測(cè)右邊的傳感器是否感應(yīng)到黑線
         {                 delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
                _nop_();                if(xjmk_l==0)//再次檢測(cè)
               {                                     delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
                  if(xjmk_l==0)                             {
                     l_count++;
                     xjmk_l=1;                       }
               }
          }
}   //*******************************************************************************  //函數(shù)名稱:
        //功能:右邊時(shí)候檢測(cè)到黑線測(cè)試程序
        void    check_righet()
        {
            if(xjmk_r==0)//檢測(cè)右邊的傳感器是否感應(yīng)到黑線                          {
               delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)
               if(xjmk_r==0)//再次檢測(cè)
               {
                  delay_50us(1);//延時(shí),去除機(jī)械振動(dòng)                                          if(xjmk_r==0)
                  {
                     r_count++;
                     xjmk_r=1;
                    }
               }
          }
}  //*******************************************************************************
//函數(shù)名稱:void delay_50US(unsigned int t)
//功能:延時(shí)50*t(us)
void delay_50us(uint t)
{
    uchar j;
    for(;t>0;t--)
    {
       for(j=19;j>0;j--);
    }
}
/*====================================================================
設(shè)定延時(shí)時(shí)間:x*1ms  ====================================================================*/
void delayms(uint Ms)
{
   uint i,TempCyc;
   for(i=0;i<Ms;i++)
   {
     TempCyc =70;
     while(TempCyc--);
   }
}  


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表