为什么WFIFI BBS控制不了舵机?


#include "reg52.h"

#define uchar unsigned char
#define uint unsigned int

/***С³µ¿ØÖƶ¨Òå**/
#define DIR P1
#define QIAN 0xaa 
#define HOU 0x55 
#define ZUO 0xa50
#define YOU 0x5a
#define STOP 0x00 

void uart_init();
void Time0_init();
void uart_timer();
void uart_tx_string(uchar *str);
void uart_tx_byte(uchar str);
void Delayms(unsigned int n);
void Delayus(unsigned int n);

sbit SEV_PWM = P0^0;  
sbit SEH_PWM = P0^1;  
 
uchar count = 0;
uchar SEV_count = 15;
uchar SEH_count = 15;

uchar rec;//½ÓÊÕµ½µÄ×Ö½Ú
uchar buff[9]="00000000";//½ÓÊÕµ½µÄÊý¾Ý°ü
uchar flag;//Êý¾Ý°ü¿ªÊ¼½ÓÊÕ±êÖ¾
uchar num; //Êý×éϱê
uchar buf_ready;//½ÓÊÕµ½Êý¾Ý°üÖÃ1

/*********************************************************
º¯ÊýÃû£ºÖ÷º¯Êý
*********************************************************/
void main()
{
        uart_init();
          Time0_init();
          uart_timer();
                DIR = STOP;
        Delayms(1);
          buff[1] = 0x80;
          buff[2] = 0x80;
                buff[3] = 0x80;
                buff[4] = 0x80;
        uart_tx_string("hello    car!\n");
        while(1)
        {
                                if(buf_ready == 1)//½ÓÊÕÒ»×éÊý¾ÝÍê³É±êÖ¾
                                {
                                            buf_ready = 0;
                                }
                                
                            
                if(buff[1]>0x80)
          
        {
            SEV_count++;
            if(SEV_count >= 25)
            {
                SEV_count = 25;
            }
            count = 0; 
            
        }   
        else if(buff[1]<0x80)
        {
            SEV_count--;
            if(SEV_count <= 5)
            {
                SEV_count = 5;
            }
            count = 0;
           
        }   
        else if (buff[2]>0x80)
        {
            SEH_count++;
            if(SEH_count >= 25)
            {
                SEH_count = 25; 
            }
            count = 0;
            
        }   
        else if(buff[2]<0x80)
        {
            SEH_count--;
            if(SEH_count <= 5) 
            {
                SEH_count = 5;
            }
            count = 0;
        }
        else 
                
            SEH_count = 15;
            SEV_count = 15;
            count = 0;
            
                        
                        
                                
                              if(buff[3]>0xb0){DIR = QIAN;Delayus(buff[3]-0xa0);DIR = STOP;Delayus(0x20);}//buff[3]¿ØÖÆÇ°ºó
                                else if(buff[3]<0x40){DIR = HOU;Delayus(0x60-buff[3]);DIR = STOP;Delayus(0x20);}//ͨ¹ýÑÓʱ¿ØÖÆËÙ¶È
                                
                                else if(buff[4]>0xd0){DIR = YOU;Delayus(20);DIR = STOP;Delayus(5);}//buff[4]¿ØÖÆ×óÓÒ
                                else if(buff[4]<0x20){DIR = ZUO;Delayus(20);DIR = STOP;Delayus(5);}
                                else DIR = STOP;
                            }
        }


/*********************************************************
º¯ÊýÃû£º´®¿ÚÖжÏ
*********************************************************/
void uart_timer() interrupt 4
{
        if(RI == 0)
                {
                    return;
                }
         {
                     ES = 0;
                     RI = 0;                     
                rec=SBUF;
                                if(rec==0x66 && flag==0)//Êý¾ÝÍ·
                                {
                                            flag = 1;  
                                            num=0;
                                            buff[0] = rec;
                                }
                                else if(flag == 1)//¿ªÊ¼½ÓÊÕÊý¾Ý°übuff[8]
                                {
                                    
                                            num++;
                                            buff[num] = rec;
                                            if(num==7 && buff[7]==0x99)//½ÓÊÕµ½Êý¾Ýβ
                                            {
                                                    buf_ready = 1;
                                                    flag = 0;
                                                    num = 0;
                                            }
                                            else if(num == 7)//½ÓÊÕ´íÎó
                                            {
                                                    flag = 0;
                                                    num = 0;
                                            }
                            
                                }
                 }
    ES = 1;
}
/*********************************************************
º¯ÊýÃû£º´®¿Ú³õʼ»¯
²¨ÌØÂÊ£º9600
¾§Õñ£º11.059M
*********************************************************/
void uart_init()
{
          IP = 0x08;
          TMOD &= 0x00;
          PCON &= 0x7F;
            TMOD |= 0x21;
                TH1=0xfd; //9600
                TL1=0xfd;
                PCON |= 0x80 ;//9600
                SCON=0x50;
          ET1=0;
                TR1=1; //start Timer1
                EA=1;
                ES=1;
        TH0 = 0xff;   
        TL0 = 0xa4;

        ET0 = 1;      
        TR0 = 1;     
}

void Time0_init() interrupt 1
{
    TR0 = 0;      
    TH0 = 0xff;   
    TL0 = 0xa4;
    
    if(count <= SEH_count) 
    {
       
        SEH_PWM = 1;
    }
    else
    {
        SEH_PWM = 0;
    }
    
    if(count <= SEV_count) 
    {
        SEV_PWM = 1;
    }
    else
    {
        SEV_PWM = 0;
    }
    count++;
    if (count >= 200) 
    {
        count = 0;
    }
    TR0 = 1; 

}
/*********************************************************
º¯ÊýÃû£º´®¿Ú·¢ËÍÒ»¸ö×Ö½Ú
*********************************************************/
void uart_tx_byte(uchar str)
{
        SBUF=str;
        while(!TI);
                Delayms(2);
}

/*********************************************************
º¯ÊýÃû£º´®¿Ú·¢ËÍÒ»¸ö×Ö·û´®
*********************************************************/
void uart_tx_string(uchar *str)
{
        while(*str!='\0')
        {
                uart_tx_byte(*str++);
                Delayms(2);
        }
}

/*********************************************************
º¯ÊýÃû£ºÑÓʱº¯Êý
*********************************************************/
void Delayms(unsigned int n)
{
        unsigned int i,j;
        for(j=n;j>0;j--)
                for(i=112;i>0;i--);
}

void Delayus(unsigned int n)
{
        while(n--);
}

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html