⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freescalecar.c

📁 使用MC9S12DG128芯片
💻 C
字号:


#include "includes.h"

/**********************************************************************/

void Car_Func() {
                                      
   INT8U LcdCar[] = {" Car Competiton  Waiting Common "};
            
      LcdWriteAll(LcdCar);  
     
      for(;;) {
      
                 
      while (KeyFlag == ON) {
        
         KeyFlag = OFF;
        
        if (ValueKey == Enter) {InitAll();CarRun();}
        
        if (ValueKey == 0x0D) {BalanceValue();}          
        
        else if (ValueKey == Exit) return;    //if have exit key,go back
        
       }
      
    }
}

void Car_Func2() {
  
   INT8U LcdCar[] = {"the second subject              "};
   
    LcdWriteAll(LcdCar);  
     
      for(;;) {
      
                 
      while (KeyFlag == ON) {
        
        KeyFlag = OFF;
        
        if (ValueKey == Enter) {InitAll();CarRun2();}
        
        else if (ValueKey == Exit) return;    //if have exit key,go back
        
       }
      
    }

}

/*************************************************************************/
void BalanceValue(void) {

  INT8U  Flag;
  
  INT16U  disAngle;
  
  INT32U  delay = 600000;
  
  INT8U   LcdB[] = {"Wait                            "};    
  
  LcdWriteCommon(0x01);
  
  LcdWriteAll(LcdB);
  
  BalanceFlag = ON;
  
  while (delay--);
  
  Flag = SCA_Angle(&disAngle);
  
  LcdWriteOne(0x80,&Flag,1);
  
  LcdWrite16U(0x82,disAngle,4);
  
 
  
  
}

/********************************************************************/

void CarRun(void) {
  
  
  
    

    
   FirstSub();
   
   SecondSub();
   
   ThirdSub();
 
   FourthSub();
 
    
   
   
   
   
 
                    //
     
}

void CarRun2(void) {
  
  ExtFirst();
  
  
   
  
}

 /******************************************************************/

void InitAll(void) {           //初始化所有中断口
  
   
  InitTC1();     //初始化TC1,用来计算当前所运行的时间

  StartTC1();    //开始计时间
  
  //InitPA();      //初始化T7,用16位计数,检测轮胎行使距离 
    
  //ClearPA();     //清除计数
	
	//StartPA();    //读取CarDistance变量可以获得当前脉冲计数
	
	InitTC3();     //初始化TC3,用来计算当前所运行的时间

  StartTC3();    //开始计时间
  
  InitADC0();
  
  InitPWM45();
  
  InitPWM6();
  
  InitPWM7();
  
  InitPA(); 
	
	InitTOF();	
	
	ClearPA();
	
	StartPA();
	
}

INT8U LcdCar[] = {"Car Running 1,  2,   3,   4,    "};

/***************************************************************/

void DisplayTDF(INT8U i) {
 
  INT8U TimeData[2];
  
  
            
  LcdWriteAll(LcdCar);
  
  TimeData[0] = (CurrentTime/10);
  
  TimeData[1] = (CurrentTime - TimeData[0] * 10);
  
  switch (i){
    
    case 1:
    
          LcdCar[14] = TimeData[0]+0x30;
          LcdCar[15] = TimeData[1]+0x30;
          LcdWriteOne (0x8E,TimeData,2);
          break;
  
    case 2: 
          
          LcdCar[18] = TimeData[0]+0x30;
          LcdCar[19] = TimeData[1]+0x30;
          LcdWriteOne (0xC2,TimeData,2);
          break;
  
    case 3:  
          
          LcdCar[23] = TimeData[0]+0x30;
          LcdCar[24] = TimeData[1]+0x30;
          LcdWriteOne (0xC7,TimeData,2);
          break;
  
    case 4:   
    
          LcdCar[29] = TimeData[0]+0x30;
          LcdCar[30] = TimeData[1]+0x30;
          LcdWriteOne (0xCC,TimeData,2);
          break;
  
    default:break;
  
  }
   
}


/*******************************************************************/
void FirstSub(void)
{

  DDRB=0xFF;
  
  StartHW;
  
  MDirect = Front;
  
  //Moto(10);
  
  
  
  SmartMoto(25);
  
  while(CarLocation <= 145)  /////////////////////////////
  {
    
    Hwsam();                  //采样红外值并且控制舵机转向
    
    SmartMoto(0);
    
    //PORTB = PTIH;
  
  };
  
  StopMoto();
  
  DisplayTDF(1);                  //刹车
  
 PORTB = 0x00; 
  
}
    
/*************************************************************/  


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -