欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 51單片機(jī)按鍵控制舵機(jī)程序有問(wèn)題 求幫助 [打印本頁(yè)]

作者: wangtongming    時(shí)間: 2019-10-15 00:53
標(biāo)題: 51單片機(jī)按鍵控制舵機(jī)程序有問(wèn)題 求幫助
我這也有個(gè)程序不好用 有大神幫忙看看問(wèn)題出在哪了

#include <reg52.h>
#define Stop 0    //宏定義,停止
#define Left 1      //宏定義,左轉(zhuǎn)
#define Right 2      //宏定義,右轉(zhuǎn)


sbit ControlPort = P1^0;  //舵機(jī)信號(hào)端口
sbit KeyLeft = P1^1;      //左轉(zhuǎn)按鍵端口
sbit KeyRight = P1^2;      //右轉(zhuǎn)按鍵端口
sbit KeyStop = P1^3;      //歸位按鍵端口

unsigned char TimeOutCounter = 0,LeftOrRight = 0;  //TimeOutCounter:定時(shí)器溢出計(jì)數(shù)      LeftOrRight:舵機(jī)左右旋轉(zhuǎn)標(biāo)志

void InitialTimer ( void )     
{
    TMOD=0x10;   //定時(shí)/計(jì)數(shù)器1工作于方式1
    TH1 = ( 65535 - 500 ) / 256;      //0.25ms
    TL1 = ( 65535 - 500 ) % 256;
    EA=1;        //開(kāi)總中斷
    ET1=1;       //允許定時(shí)/計(jì)數(shù)器1 中斷
    TR1=1;       //啟動(dòng)定時(shí)/計(jì)數(shù)器1 中斷
}

void ControlLeftOrRight ( void )   //控制舵機(jī)函數(shù)
{
    if( KeyStop == 0 )
    {
        while ( !KeyStop );       //使標(biāo)志等于Stop(0),在中斷函數(shù)中將用到
        LeftOrRight = Stop;
    }

    if( KeyLeft == 0 )
    {
        while ( !KeyLeft );       //使標(biāo)志等于Left(1),在中斷函數(shù)中將用到
        LeftOrRight = Left;
    }

    if( KeyRight == 0 )
    {
        while ( !KeyRight );   //使標(biāo)志等于Right(2),在中斷函數(shù)中將用到
        LeftOrRight = Right;
    }

}

void main ( void )     //主函數(shù)
{
    InitialTimer();
    for(;;)
    {
        ControlLeftOrRight();
    }
}

void Timer1 ( void ) interrupt 3  //定時(shí)器中斷函數(shù)
{
    TH1 = ( 65535 - 500 ) / 256;
    TL1 = ( 65535 - 500 ) % 256;
    TimeOutCounter ++;

    switch ( LeftOrRight )
    {
        case 0 :      //為0時(shí),舵機(jī)歸位,脈寬1.5ms
        {
            if( TimeOutCounter <= 6 )
            {
                ControlPort = 1;
            }
            else
            {
                ControlPort = 0;
            }
            break;
        }
        case 1 :     //為1時(shí),舵機(jī)左轉(zhuǎn),脈寬1ms(理論值),實(shí)際可以調(diào)試得出
        {
            if( TimeOutCounter <= 2 )
            {
                ControlPort = 1;
            }
            else
            {
                ControlPort = 0;
            }
            break;
        }
        case 2 :   //為2時(shí),舵機(jī)右轉(zhuǎn),脈寬2ms(理論值),實(shí)際可以調(diào)試得出
        {
            if( TimeOutCounter <= 10 )
            {
                ControlPort = 1;
            }
            else
            {
                ControlPort = 0;
            }
            break;
        }
        default : break;
    }
   
    if( TimeOutCounter == 80 )     //周期20ms(理論值),比較可靠,最好不要修改
    {
        TimeOutCounter = 0;
    }
}







歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1