久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1784|回復: 0
收起左側

為什么示數不動啊

[復制鏈接]
ID:116352 發表于 2016-5-1 17:34 | 顯示全部樓層 |閱讀模式
大神請指教   本程序測得是增量式編碼器位置  說白了就是計數A B脈沖  但是燒進去之后示數一直是0  轉動編碼器不會有反應  前后改了幾次實在是改不出來了  求大神支招


#include <REG51.H>
#include <intrins.h>

#define  uchar unsigned char

#define GPIO_DIG P0

sbit LSA=P2^0;
sbit LSB=P2^1;
sbit LSC=P2^2;
sbit PINA = P1^0;          //A相
sbit PINB = P1^1;          //B相
sbit PIND  = P1^2;
static unsigned int  counter = 0;          //編碼器脈沖計數
int xx[3]={0,0,0};
unsigned char code DIG_CODE[17]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
};


/************************************
void Timer0Init(void)
{
        TMOD &= 0xF0;        //設置定時器模式
        TMOD |= 0x01;        //設置定時器模式
        TL0 = 0x30;                //設置定時初值
        TH0 = 0xF8;                //設置定時初值
        PT0 = 0;
        TF0 = 0;                //清除TF0標志
        ET0 = 1;
        TR0 = 1;                //定時器0開始計時
        PT0 = 1;                //數碼管刷新優先
        EA = 1;
}


*****利用STC89系列的外中斷模式*******

void Inti_INT0()
{
                            //set INT1 int type (1:Falling only 0:Low level)
                          //enable INT1 interrupt
     EA = 1;  
}
************************************/
void main (void)
{
       
        TMOD &= 0xF0;        //設置定時器模式
        TMOD |= 0x01;        //設置定時器模式
        TL0 = 0x30;                //設置定時初值
        TH0 = 0xF8;                //設置定時初值
        PT0 = 0;
        TF0 = 0;                //清除TF0標志
        ET0 = 1;
        TR0 = 1;                //定時器0開始計時
        PT0 = 1;                //數碼管刷新優先
        EA = 1;

       
  while(1)
  {       

  }
}

void Timer0() interrupt 1
{
static        unsigned char i;
        unsigned int j;
        unsigned char check[8];
        check[0]=counter/100;
        check[1]=counter%100/10;
        check[2]=counter%100%10;
        check[3]=0;
        check[4]=0;
        check[5]=0;
        check[6]=0;
        check[7]=0;
        TL0 = 0x30;                //設置定時初值
        TH0 = 0xF8;                //設置定時初值
                switch(i)         //位選,選擇點亮的數碼管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//顯示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//顯示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//顯示第2位
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//顯示第3位
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//顯示第4位
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//顯示第5位
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//顯示第6位
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//顯示第7位       
                }
                GPIO_DIG=DIG_CODE[check[i]];//發送段碼
                j=5;       
                i++;
                if(i==8)
                {
                 i=0;
                }                                         //掃描間隔時間設定
                while(j--);       
                GPIO_DIG=0x00;//消隱

}

void exint1() interrupt 0           //(location at 0013H)
{
  static  bit  Curr_encoder_b;  //定義一個變量來儲存當前B信號
   static  bit  Last_encoder_b;  //定義一個變量來儲存上次B腳信號
   static  bit  updata= 0;
   if(PINA && PINB)           //編碼器無轉動退出
   {
     updata = 0;
     return;
   }

         Last_encoder_b = PINB;
        while(!PINA)
        {
         Curr_encoder_b = PINB;
         updata = 1;
        }
        if(updata)
        {
          updata = 0;
          if(Last_encoder_b==1&&Curr_encoder_b==0)
          {
          if(counter == 400)
            return;       
           counter++;
          }
          else if(Last_encoder_b==0&&Curr_encoder_b==1)
          {
          if(counter == 0)
                    return;
           counter--;              
          }
        }

}


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区精华 | 国色天香成人网 | 国产精品一区二区福利视频 | 91精品国产乱码麻豆白嫩 | 91高清免费观看 | 亚州精品天堂中文字幕 | 中文字幕高清 | 视频国产一区 | 在线91 | 午夜影院黄 | 亚洲欧美v | 欧美一级黄色片在线观看 | 国产精品国产精品 | av黄色在线观看 | 久久高清 | 国产97久久 | www.99久久.com| 性高湖久久久久久久久aaaaa | 2018天天干天天操 | 国产精品久久久久久久久久 | 久久午夜精品 | 免费精品视频 | 久久这里有精品 | 亚洲欧美日本在线 | 午夜免费网站 | 日韩国产在线 | 欧美激情精品久久久久 | 成人av一区二区在线观看 | 欧美韩一区二区三区 | 国产精品视频一区二区三区 | 99久久免费观看 | 成人在线小视频 | 国产成人99久久亚洲综合精品 | 国产精品国产精品国产专区不卡 | 国内精品免费久久久久软件老师 | 成人片免费看 | 国产一区二区三区免费观看在线 | 一区二区三区国产 | 久久99国产精品 | 欧美精品1区2区3区 精品国产欧美一区二区 | 91新视频 |