打印

关于小车!

[复制链接]
1414|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hit_1920|  楼主 | 2013-11-30 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hit_1920|  楼主 | 2013-11-30 11:44 | 只看该作者
或者自主运行无效,无线有效!

使用特权

评论回复
板凳
黄小俊| | 2013-11-30 13:17 | 只看该作者

使用特权

评论回复
地板
hit_1920|  楼主 | 2013-11-30 13:48 | 只看该作者
有何看法?

使用特权

评论回复
5
hit_1920|  楼主 | 2013-11-30 13:49 | 只看该作者
#include <reg52.h>
#include <intrins.h>   
#define uchar unsigned char
#define uint  unsigned int
unsigned int time;
unsigned int S;
sbit a1=P0^0;
sbit a2=P0^1;
sbit a3=P0^2;
sbit a4=P0^3;
sbit a5=P0^4;
sbit a6=P0^5;
sbit a7=P0^6;
sbit a8=P0^7;
sbit Trig =P1^3;   //定义引脚
sbit Echo=P3^2;
void houM();
void leftM();
void stopM();                                                                                                                                                                                                                                                                                                                                                                                            
void Count();
void qianM();
void bz();
void zizhu();


void delay(uint z)
{
    uint x,y;
   for(x=z;x>0;x--)
         for(y=110;y>0;y--);
}

void exter0() interrupt 0 //中断
{
     Count();EX0=0;
}

void T0_timer() interrupt 1 //中断
{
    TH0=0;
    TL0=0;
    TR0=0;           
}
void  StartModule()              //启动模块
{
          Trig=1;                //启动一次模块
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          Trig=0;
         
}

void uart(void) interrupt 4  //把接收到的数据写入ucReceiveData()
{
     TI=0;RI=0;
            if(SBUF=='a') a1=0;
         if(SBUF=='b') a1=1;
         if(SBUF=='c') a2=0;
         if(SBUF=='d') a2=1;
         if(SBUF=='e') a3=0;
         if(SBUF=='f') a3=1;
         if(SBUF=='g') a4=0;
         if(SBUF=='h') a4=1;
     if(SBUF=='i') a5=0;
         if(SBUF=='j') a5=1;
     if(SBUF=='k') a6=0;
     if(SBUF=='l') a6=1;
         if(SBUF=='m') a7=0;
         if(SBUF=='n') a7=1;
         if(SBUF=='o') a8=0;
         if(SBUF=='p') a8=1;
     if(SBUF=='r'){zizhu();}
}

void  zizhu()
{
    Trig=0;                                          
    Echo=0;
    qianM();  
    while(1)
   {         
      StartModule();        
      while(!Echo);        //当echo为1时计数工作。中断没有
      {TR0=1;EX0=0;}            //开启计数
      while(Echo);         //当echo为0计数停止,进行bz核算
      {
        TR0=0; //关闭计数
        EX0=1; //计算                 
        delay(120);//80MS?
      }
   }                  
}
void Count(void)
{
  time=TH0*256+TL0;
  TH0=0;
  TL0=0;  
  S=(time*1.7)/100;       //算出来是CM
if((S<30)&&(S>10))
  {
     bz();      
  }
}

void init()
{
   TMOD=0x21;           //定时器1--方式2            
   PCON=0x00;           //电源控制
   SCON=0x50;         
   TL1=0xfd;         
   TH1=0xfd;      
   TR1=1;
   TR0=1;               //启动定时                  
   TH0=0;
   TL0=0;         
   ET0=1;                    //允许T0中断
   ES=1;
   EA=1;
   TI=0;
   RI=0;
}
void bz()
{
        houM();
    delay(10000);
    leftM();
    delay(10000);
    stopM();
    delay(1000);
    qianM();     
}

void houM()
{   
    a3=1;a8=1;
    a1=0;a2=1;
    a6=1;a7=0;
}

void leftM()
{
        a3=1;a8=1;
    a1=1;a2=0;
    a6=1;a7=0;
}

void qianM()
{
        a3=1;a8=1;
    a1=1;a2=0;
    a6=0;a7=1;
}

void stopM()
{
        a3=0;a8=0;
    a1=0;a2=0;
    a6=0;a7=0;
}

void main()  
{                  
  init();while(1);                     
}

使用特权

评论回复
6
hit_1920|  楼主 | 2013-11-30 13:50 | 只看该作者
帮忙看看,程序问题在哪?要实现自主运行和无线上位机控制的切换!

使用特权

评论回复
7
hit_1920|  楼主 | 2013-11-30 13:53 | 只看该作者
现在的问题时无线控制可以,自主不行,甚至超声波没工作!

使用特权

评论回复
8
hit_1920|  楼主 | 2013-12-1 19:03 | 只看该作者
..............................

使用特权

评论回复
9
xianfly1990| | 2013-12-2 15:57 | 只看该作者
好代码 刚接触  很多都看不懂

使用特权

评论回复
10
chenhuizai210| | 2013-12-3 13:58 | 只看该作者
问题都没描述清楚

使用特权

评论回复
11
hit_1920|  楼主 | 2013-12-4 17:43 | 只看该作者
简单的说,就是比如一个小车,一边前进避障,一边采集温度发送给上位机,这两个功能大量使用定时器和中断,所以怎么样不冲突的有序进行?怎么安排?在主程序中,还是在中断嵌套,设置优先级?

使用特权

评论回复
12
zefengx68| | 2013-12-6 09:22 | 只看该作者
hit_1920 发表于 2013-12-4 17:43
简单的说,就是比如一个小车,一边前进避障,一边采集温度发送给上位机,这两个功能大量使用定时器和中断, ...

你这应该是在做遥控车吧,针对温度和前进避障,可以一直while循环进行,不用定时和中断也可以的吧。

使用特权

评论回复
13
zefengx68| | 2013-12-6 09:24 | 只看该作者
你可以把你的硬件给我看下么,想大致看看你是怎么做这个遥控车的,可以相互学习。

使用特权

评论回复
14
hit_1920|  楼主 | 2013-12-7 17:03 | 只看该作者
结贴了,问题自行解决了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝