智能车制作

标题: 第一次做智能车。。有没有人能教教人家呢? [打印本页]

作者: 太平洋底人    时间: 2013-7-16 23:34
标题: 第一次做智能车。。有没有人能教教人家呢?
第一次做智能车。。。网上找了段程序,,,有没有人能教教人家呢?

        
//主函数//
void main(void) {
  DisableInterrupts;     //禁止中断
  PWMDTY23=3800;   //占空比寄存器
  PLL_Init();          //锁相环初始化
  DDRA=0X00;       //定义A的脚为输入脚
  boma();           //拨码开关
  PACBInit();          // PT7 获得脉冲值
  RTI_init();           //RTI 产生 10ms 的中断定时
  PWM_rudder_init();   //舵机初始化
  PWM_init_motor();   //电机初始化
  AD_Init();          //AD转换
  DDRB=0XFF;       //定义B的脚为输出脚
  PORTB=0X03;      //1号与2号灯亮
  delay(5000);        //4000 3s左右??应该是5ms吧??
  PORTB=0xFC;     //3号与4号灯亮
  Checkstart();       //检测起跑线
  EnableInterrupts;    //使能中断
  /* put your own code here */
  
  for(;;) {
     
     while(!ATD0STAT2_CCF0);    //等待转换结束while(ATDOSTAT2_CCF0==1)
         left1=ATD0DR0;    //读取结果寄存器left1的值
         
      
         while(!ATD0STAT2_CCF2);    // 等待转换结束while(ATDOSTAT2_CCF1==1)
     left2=ATD0DR2;    //读取结果寄存器的值
     
        
         while(!ATD0STAT2_CCF1);    // 等待转换结束while(ATDOSTAT2_CCF2==1)
         right1=ATD0DR1;  //读取结果寄存器的值  
         
         while(!ATD0STAT2_CCF3);    // 等待转换结束while(ATDOSTAT2_CCF3==1)
     right2=ATD0DR3;  //读取结果寄存器的值        
     
     AR_LEFT=left1+left2;
     AR_RIGHT=right1+right2;
     CR=(AR_RIGHT-AR_LEFT)/10;
     
     if(Pulse_count>65)Flag_gaosu=1;
     else Flag_gaosu=0;
     
     if(AR_RIGHT<110||AR_LEFT<95)       //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@      left93
          {  if(pref>3800)                   //if(AR_RIGHT<110)
            f=4500;                        //f=3100;
            if(pref<3800)                  //if(AR_LEFT<95)
            f=3100;                        //f=4500;
            mkp=b_mkp[5];
         mki=b_mki[5];
         mkd=b_mkd[5];
            ideal_speed=s_table[5];
            }
          else{
          Roadjudge(); //先对道路进行判断
          rudder_ctrl(); //调整舵机
          motor_ctrl1(); //调整电机的pid参数
         
      }
     if(f>4500)f=4500;
     if(f<3100)f=3100;
     PWMDTY23=f;
     pref=PWMDTY23;
     motor_ctrl2();
     
     
  }  
  
  } /* loop forever */
  
  
#pragma CODE_SEG__NEAR_SEG NON_BANKED  //??
   
interrupt 7 void Int_TimerOverFlow(void)
{
     Pulse_count= PACNT;       //脉冲计数赋值
     PACNT = 0X0000;
     CRGFLG_RTIF=1;    //??
     if(ting<1100)ting++;
     else ting=1100;
}
interruptVectorNumber_Vtimch0 void stop(void)
{
DisableInterrupts;
TFLG1_C0F=1; //清除中断标志位
   //PORTB=0X03;//1号与2号灯亮
    // delay(20);
    // PORTB=0xFC;//3号与4号灯亮
    // ganhuang++;
    //if(ganhuang%4==0){
    // ganhuang=0;
    //PORTB=0xFC;//3号与4号灯亮
    //ganhuang=0;
    //TIE=TIE&0X0FE;
     flag=1;
if(ting==1100)
{
    flag=2;
     PORTB=0xF6;
     for(i=0;i<3000;i++)
{     
     while(!ATD0STAT2_CCF0);    // 等待转换结束while(ATDOSTAT2_CCF0==1)
         left1=ATD0DR0;//读取结果寄存器left1的值
         
      
         while(!ATD0STAT2_CCF2);    // 等待转换结束while(ATDOSTAT2_CCF1==1)
     left2=ATD0DR2;//读取结果寄存器的值
     
        
         while(!ATD0STAT2_CCF1);    // 等待转换结束while(ATDOSTAT2_CCF2==1)
         right1=ATD0DR1;//读取结果寄存器的值  
         
         while(!ATD0STAT2_CCF3);    // 等待转换结束while(ATDOSTAT2_CCF3==1)
     right2=ATD0DR3;//读取结果寄存器的值     
     
     AR_LEFT=left1+left2;
     AR_RIGHT=right1+right2;
     CR=(AR_RIGHT-AR_LEFT)/10;
     
     rkp=9;
     rkd=0;
     f=3800+rkp*CR+rkd*(CR-preCR);
     preCR=CR;
     if(f>4500)f=4500;
     if(f<3100)f=3100;
     PWMDTY23=f;
     pref=PWMDTY23;
     //mkp=20;
     //mki=0;
     //mkd=0;
     //ideal_speed=0;
     //motor_ctrl2();
     PWMDTY01=0;
     PWMDTY45=0;
     delay(2);
  }
}
EnableInterrupts;
}
// asm cli;
#pragma CODE_SEGDEFAULT




不知后面什么意思啊???有没有人能教教人家呢??ting是干嘛用的呢?为什么ting==1100后进行那一大堆呢??



作者: 理工小别    时间: 2013-7-16 23:46
我表示我刚没细看你的程序
你这样发别人是不会看的 尤其是到了这个时候 大家都在忙决赛 就算从比赛下来的也没心情看你这么长得代码
还有如果你不是女生 不要拿个女生的头像在这卖萌
用我们老师的一句话来说就是 你起码要说出你这是遇到什么问题 需要解决什么问题 关键是你自己有什么想法
谁都当过小白 但你这样当小白就不好了
作者: 有熊出没    时间: 2013-7-17 09:42
理工小别 发表于 2013-7-16 23:46
我表示我刚没细看你的程序
你这样发别人是不会看的 尤其是到了这个时候 大家都在忙决赛 就算从比赛下来的也 ...

嗯,讲得不错~~

作者: 824427451    时间: 2013-7-17 10:24
理工小别 发表于 2013-7-16 23:46
我表示我刚没细看你的程序
你这样发别人是不会看的 尤其是到了这个时候 大家都在忙决赛 就算从比赛下来的也 ...

把我想说的都说了,。谢了
作者: wen123    时间: 2013-7-17 16:41

作者: 太平洋底人    时间: 2013-7-18 13:55
我表示我知道错了,,,不装萌了。别再批评了,好吗?
我只是想问一下那个ting变量在那里是干嘛用的??为什么判断它之后要进行那么一串??




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2