📄 freescalecar.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 + -