智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1394|回复: 0
打印 上一主题 下一主题

别人说这叫程序,我也不知道是什么(二)

[复制链接]

3

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
QQ
威望
264
贡献
39
兑换币
18
注册时间
2010-1-14
在线时间
3 小时
跳转到指定楼层
1#
发表于 2010-1-14 15:30:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
delay_ms(500);
      PORTC.2=1;
   start_PCF( );
/********************************************************
  小车动作初始化
********************************************************/  
    MBgo ;  
    MAgo;
    startCPA  ;
    startCPB  ;
    TCCR2  = 0x0A;                                   //自动寻线开
   
    SEI( );                                                  //全局中断开   
    /**********************************************
    第一阶段
    **********************************************/
   while ( Timer[0] != 0X15 ) ;
   LCD_write_str( 0 ,  1 , step[1] );
  
   CLI( );
   beep(  );
   start_PCF( );
   /***************************************************
   改变速度
   ***************************************************/
   OCR1AH=0x06;
   OCR1AL =0xFF;                                                       //new
   OCR1BH=0x06;
   OCR1BL=0xFF;
   SEI( );
   /************************************************
   寻找平衡
   ************************************************/   
      TCCR2  = 0x00;   
   /**********************************************************
      do
       {  
        startCPA ;
        startCPB ;
        delay_ms(700);
        stopCPA  ;
        stopCPB  ;  
         delay_ms(200);
         if( get_ad( )>= 0X75 )
           balan=0;
           
       }  while(balan);
     
      balan=1;
      
     do
       {
        
          if( get_ad( ) <=0X7B   )       //0x7d(yuan shi)  0X7E bux vula_adcg
               {
                        MBgo ;  
                         MAgo ;
                        startCPA ;
                        startCPB ;
                        delay_ms(300);  
                         stopCPA  ;
                        stopCPB  ;
                        }            
   
            if( get_ad( ) >= 0X82)      //0x82
            {
                         MBback ;  
                         MAback ;
                         startCPA ;
                        startCPB ;
                        delay_ms(300);  
                        stopCPA  ;
                        stopCPB  ;
                        }   
      
             delay_ms(1700);
                ad=get_ad( );
              if(  ad < 0X82 &&  ad >  0X7B )   
                balan=0;
               
        }    while(balan);                     
    *******************************************************/      
    Findbenlen(  );
    PORTC.2=0;
    flage+=0x80;                                        //开启蜂鸣,中断关闭   
   
   /************************************************
   找到平衡
   ************************************************/
   CLI( );
   start_PCF( );                                                     //需要改动
   //Timer[2]= Read_sec( );
   LCD_write_str( 0 ,  1 , step[2] );
   LCD_write_str( 6 ,  1 , "Balan:"  );
   flage+=0x04;
    SEI( );  
   
    do  
       {   
       //保持平衡
        if( Timer[0]==0X05 )
            {
                         flage -=0x04;
                         CLI( );
                         start_PCF( );
                         SEI( );
            }
       }
   while ( (flage==0X04 )|| ( flage==0X84  ) );  
   
   
   /***************************************************
   改变速度
   ***************************************************/
     CLI( );
   OCR1AH=0x01;
   OCR1AL =0xFF;                                                       //new
   OCR1BH=0x01;
   OCR1BL=0xFF;
   SEI( );
   
    MBgo;
    MAgo;     
    startCPA ;
    startCPB ;
  /************************************************
   慢走,直到传感器感知木板落下
  ************************************************/
  TCCR2  = 0x0A;
   /**********************************************
   检测传感器状态,没黑线时停下
   ***********************************************/
  while(PIND.2||PIND.3);                                           //关寻线   
         
   
  CLI( );  
  stopCPA ;
  stopCPB;
  TCCR2  = 0x00;  
  beep(  );
  start_PCF( );
  delay_us(10);
  SEI( );
  /***********************************************
   等待五秒,倒车返回
  ***********************************************/  
  MBback;
  MAback;
  while( Timer[0]!=0X05 )  ;
  LCD_write_str( 0 ,  1 , step[3] );
  beep(  );
  startCPA ;
  startCPB ;  
  TCCR2  = 0x0A;  
   while(PIND.6||PIND.7);  
    beep(  );
}        

  /******************************************************
  发挥部分
  ******************************************************/   
void advance ( void )
{
   unsigned char find=1;
   
   
   LCD_write_str( 0 , 0 ,"min:  sec: ");
   start_PCF( );
     
   MBgo ;  
   MAgo;
   startCPA  ;
   startCPB  ;
   
     
     SEI( );  
/*****************************************************
 当两个传感器都在线上时开启寻线功能
*****************************************************/
   while(find)  
   {
     if( PIND.2==1 )  
        find=0;  
        
      if(PIND.3==1)  
         find=0;  
   } ;
    //while( (P vula_adcD.6|P vula_adcD.7)==0 );
TCCR2  = 0x0A;

/*****************************************************
一定时间后,减速找平衡
*****************************************************/   
    //while( Timer[0]!=0X40  );
   while ( get_ad( ) < 0X75 ) ;  //xiu gai
       TCCR2  = 0x00;
/****************************************************
找到后,给出平衡指示,
*****************************************************/   
   CLI( );
   OCR1AH=0x06;
   OCR1AL =0xFF;                                                       //new
   OCR1BH=0x06;
   OCR1BL=0xFF;
   SEI( );  
   Findbenlen(  );
   PORTC.2=0;
   flage+=0x80;
     
        
   CLI( );
   LCD_write_str( 6 ,  1 , "Balan:"  );
   flage+=0x04;
   SEI( );
/******************************************************
检测平衡状态,不平衡时继续寻找
*******************************************************/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 04:27 , Processed in 0.104624 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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