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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么示數(shù)不動啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:116352 發(fā)表于 2016-5-1 17:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大神請指教   本程序測得是增量式編碼器位置  說白了就是計數(shù)A B脈沖  但是燒進(jìn)去之后示數(shù)一直是0  轉(zhuǎn)動編碼器不會有反應(yīng)  前后改了幾次實在是改不出來了  求大神支招


#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;          //編碼器脈沖計數(shù)
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;        //設(shè)置定時器模式
        TMOD |= 0x01;        //設(shè)置定時器模式
        TL0 = 0x30;                //設(shè)置定時初值
        TH0 = 0xF8;                //設(shè)置定時初值
        PT0 = 0;
        TF0 = 0;                //清除TF0標(biāo)志
        ET0 = 1;
        TR0 = 1;                //定時器0開始計時
        PT0 = 1;                //數(shù)碼管刷新優(yōu)先
        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;        //設(shè)置定時器模式
        TMOD |= 0x01;        //設(shè)置定時器模式
        TL0 = 0x30;                //設(shè)置定時初值
        TH0 = 0xF8;                //設(shè)置定時初值
        PT0 = 0;
        TF0 = 0;                //清除TF0標(biāo)志
        ET0 = 1;
        TR0 = 1;                //定時器0開始計時
        PT0 = 1;                //數(shù)碼管刷新優(yōu)先
        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;                //設(shè)置定時初值
        TH0 = 0xF8;                //設(shè)置定時初值
                switch(i)         //位選,選擇點亮的數(shù)碼管,
                {
                        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]];//發(fā)送段碼
                j=5;       
                i++;
                if(i==8)
                {
                 i=0;
                }                                         //掃描間隔時間設(shè)定
                while(j--);       
                GPIO_DIG=0x00;//消隱

}

void exint1() interrupt 0           //(location at 0013H)
{
  static  bit  Curr_encoder_b;  //定義一個變量來儲存當(dāng)前B信號
   static  bit  Last_encoder_b;  //定義一個變量來儲存上次B腳信號
   static  bit  updata= 0;
   if(PINA && PINB)           //編碼器無轉(zhuǎn)動退出
   {
     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--;              
          }
        }

}


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产在线拍偷自揄拍视频 | 亚洲在线免费观看 | 亚洲色图图片 | 中文字幕国产在线 | 在线中文字幕视频 | 国产精品欧美一区二区三区不卡 | 亚洲在线一区二区 | 婷婷色国产偷v国产偷v小说 | 亚洲福利一区二区 | 欧美一二三四成人免费视频 | 国产精品夜间视频香蕉 | 视频在线一区二区 | 免费观看一级毛片视频 | 久久com | 亚洲一区二区在线播放 | 91精品一区二区三区久久久久久 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 91精品国产综合久久久久久蜜臀 | 精品一区二区三区在线观看国产 | 在线观看中文字幕一区二区 | 午夜看片| 国产精品一区在线观看你懂的 | 91中文 | 亚洲精品成人av久久 | 欧美精品久久久 | 中文字幕一区在线观看视频 | 日韩综合在线 | 日韩av一区在线观看 | av色站| 中文在线一区二区 | 国产成人福利在线 | 成年人黄色一级片 | 福利视频亚洲 | 免费一级欧美在线观看视频 | 日本久久精| 精品久久久久久久久亚洲 | 成人一区在线观看 | 国产精品视频一 | 免费午夜剧场 | 久久成人精品视频 | 99久久久久久99国产精品免 |