找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2307|回复: 2
收起左侧

求大神指教:无线控制两轮车问题

[复制链接]
ID:66970 发表于 2015-4-11 23:05 | 显示全部楼层 |阅读模式
本程序用无线控制小车,为什么发送前进或者后退时只有一个轮子先转动,另一个轮子需要一段时间才能转动
#include<REG52.H>
#define uchar unsigned char
uchar count;
sbit P00=P0^0; //控制左电机(+)
sbit P01=P0^1;//控制左电机
sbit P02=P0^2;//控制右电机(+)
sbit P03=P0^3;//控制右电机

fun1()
{ P00=1;P01=0;P02=1;P03=0;}//        前进
fun2()
{ P00=0;P01=1;P02=0;P03=1;}        //后退
fun3()
{ P00=0;P01=0;P02=1;P03=0;}         //左转
fun4()
{ P00=1;P01=0;P02=0;P03=0;}        //右转
fun5()
{ P00=0;P01=0;P02=0;P03=0;}        //停止

        bit M3_start_flag=0;
        bit M4_start_flag=0;
        bit M3_forward_flag=0;
        bit M4_forward_flag=0;

uchar M3A_count=0;
uchar M3B_count=0;
uchar M4A_count=0;
uchar M4B_count=0;

uchar SEH_count=15;
uchar SEV_count=14;

uchar command=0;




sbit M3A=P2^0;
sbit M3B=P2^1;
sbit M4A=P2^2;
sbit M4B=P2^3;



void Com_Init()
{
          
        TMOD= 0x22;                       
        SCON= 0x50;                       
        TH1        = TL1 = 0xfd;       
        IE        = 0x92;                       
       
        TR1        = 1;       
}
void Time0_Init()         //定时器初始化
{
        TMOD=0x01;  //使用定时器T0的模式1       
        TH0=TL0=0xa3;
        TR0=1;   
}
void Time0_Int() interrupt 1
{
        count=count++;
        if(count>=200)
                {
                        count=0;
                }
       
}

void main()
{
        int i=0;
        count=0;

        Time0_Init();
        Com_Init();
         
        while(1)
        {  i++;
        if(i>=200)i=0;

        if(M3_start_flag)
                {
                  if(M3_forward_flag)
                         {
                             M3A=0;
                                 if(i<M3B_count)M3B=1;
                                 else M3B=0;          
                         }
                 else
                         {
                                 M3B=0;
                                 if(i<M3A_count)M3A=1;
                                 else M3A=0;
                         }

                }
        else
                {
                M3A=0;
                M3B=0;
                }
       
        if(M4_start_flag)
                {
                  if(M4_forward_flag)
                         {
                                 M4B=0;
                                 if(i<M4A_count)M4A=1;
                                 else M4A=0;
                         }
                 else
                         {
                                 M4A=0;
                                 if(i<M4B_count)M4B=1;
                                 else M4B=0;
                         }

                }
        else
                {
                M4A=0;
                M4B=0;
                }       
        if(i>=100)i=0;
        }       
}
void ser() interrupt 4
{
        if(RI==0) return;
        ES=0;         
        RI=0;       
        command=SBUF;       
        switch(command)
        {
               
        case 'a':{fun1(); break;}                   
        case 'b':{ fun2();break;}                                                       
        case 'c':{ fun3();break;}       
        case 'd':{ fun4();break;}
        case 'e':{ fun5();break;}
       
   default:
       {
                        break;
                        }
         count=0;
                       
        ES=1;                               
    }
回复

使用道具 举报

ID:66970 发表于 2015-4-12 19:04 | 显示全部楼层
求大神啊
回复

使用道具 举报

ID:66970 发表于 2015-4-15 22:28 | 显示全部楼层
大神呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表