背景图片
编码器程序(定时扫描版本) - 啊和的博客

编码器程序(定时扫描版本) - 啊和的博客 编码器程序(定时扫描版本) - 啊和的博客

编码器程序(定时扫描版本)

此程序可用在任何单片机上

不占用硬件中断口

   
   /************************编码器变量*******************************/
bit Encoder_A_Old,Encoder_B_Old,BMQ_R_AH,BMQ_R_BH,BMQ_R_AL,BMQ_R_BL,BMQ_L_AH;
bit BMQ_L_BH,BMQ_L_AL,BMQ_L_BL,Encoder_Add,Encoder_Rec,Encoder_A_Now,Encoder_B_Now;
bit BMQ_IO_A_SATTE,BMQ_IO_B_SATTE;
unsigned char Twice_Effective,Twice_Effective1;
/************************编码器变量*******************************/
   
   
   /***********************以下程序放定时中断***********************************/
    if(FLAG_BMQ_1MS)  //1MS扫描一次
    {
      FLAG_BMQ_1MS=0;
      /******************************编码器检测驱动************************************/


      Encoder_A_Now=BMQ_A_IO;   //IO端口
      Encoder_B_Now=BMQ_B_IO;   //IO端口
      if (Encoder_A_Old==0&&Encoder_A_Now==1)
      {
        if (Encoder_B_Now==1)
        {
          BMQ_L_AH=1;
        } else
        {
          BMQ_R_AH=1;
        }
      }
      if (Encoder_B_Old==0&&Encoder_B_Now==1)
      {
        if (Encoder_A_Now==1)
        {
          BMQ_R_BH=1;
        } else
        {
          BMQ_L_BH=1;
        }
      }
      if (Encoder_A_Old==1&&Encoder_A_Now==0)
      {
        if (Encoder_B_Now==1)
        {
          BMQ_R_AL=1;
        } else
        {
          BMQ_L_AL=1;
        }
      }
      if (Encoder_B_Old==1&&Encoder_B_Now==0)
      {
        if (Encoder_A_Now==1)
        {
          BMQ_L_BL=1;
        } else
        {
          BMQ_R_BL=1;
        }
      }
      Encoder_Add=Encoder_Rec=0;
      if (BMQ_R_AH==1&&BMQ_R_BH==1) {
        Encoder_Add=1;
      }
      if (BMQ_R_AL==1&&BMQ_R_BL==1) {
        Encoder_Add=1;
      }
      if (BMQ_L_AH==1&&BMQ_L_BH==1) {
        Encoder_Rec=1;
      }
      if (BMQ_L_AL==1&&BMQ_L_BL==1) {
        Encoder_Rec=1;
      }
      if (Encoder_Add)
      {
        BMQ_R_AH=0;
        BMQ_R_BH=0;
        BMQ_R_AL=0;
        BMQ_R_BL=0;
        BMQ_L_AH=0;
        BMQ_L_BH=0;
        BMQ_L_AL=0;
        BMQ_L_BL=0;
        Twice_Effective++;
        Twice_Effective1=0;
        if(Twice_Effective>=2)
        {
          Twice_Effective=0;

                   // //向右转
                   //自己加上自己的程序
          
        }

      }
      if (Encoder_Rec)
      {
        BMQ_R_AH=0;
        BMQ_R_BH=0;
        BMQ_R_AL=0;
        BMQ_R_BL=0;
        BMQ_L_AH=0;
        BMQ_L_BH=0;
        BMQ_L_AL=0;
        BMQ_L_BL=0;
        Twice_Effective1++;
        Twice_Effective=0;
        if(Twice_Effective1>=2)
        {
          Twice_Effective1=0;      //向左转

                              //自己加上自己的程序
        }

      }
      Encoder_A_Old=BMQ_A_IO;      //IO端口
      Encoder_B_Old=BMQ_B_IO;       //IO端口
      /******************************编码器驱动END************************************/
    }


评论 0

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论