📄 main.c
字号:
#include "SPCE061V004.h"
#define FORWARD 0 //前进状态
#define BACKWARD 1 //后退状态
#define STOP 2 //停止状态
#define BLACKWIRE_H 7
typedef unsigned int uint;
typedef unsigned char uchar;
void System_Init(void);
void ScanLimit(unsigned char);
void LEDdisplay( unsigned char , unsigned char );
unsigned char PointCTL(unsigned char );
void ForeWheelForword();
void ForeWheelReverse();
void TurnLeft();
void TurnRight();
void Stop();
void Delay10s();
void Keycontrol();
void cls();
void TreatKey();
void TimeGo();
void ReturnKeyValue();
void Startdelay();
void Protect();
extern uint key_array[8];
static uint i=0,j=0,k=0;
extern uint KeyUpFlag,KeyDownFlag;
uint led[8];
uint SpeedValue=30; //档位值,从1-100
uint Status=FORWARD; //记录和控制车前进,后退状态
uint Time500ms=0; //500ms时间控制
uint S=0; //总路程,单位:厘米
uint Time=0; //总时间
uint Blackwire=0; //记录黑线数
extern uint Delay10sFlag; //延时10s信号
extern uint StartFlag;
uint timebuf_dl10s=0;
uint timebuf_dl3s=0;
uint startdelayflag=0;
int main()
{
System_Init();
for(j=0;j<8;j++)
key_array[j]=0;
cls();
LEDdisplay( 0x03 , 0x0b);
LEDdisplay( 0x04 , 0x0b);
while(1)
{
if( Status!=STOP )
{
TreatKey();
// if(startdelayflag==1)
// Protect();
*P_Watchdog_Clear=1;
if( StartFlag) {
LEDdisplay( 0x03 , 0x0a);
LEDdisplay( 0x04 , 0x0d);
Startdelay();
}
if( Delay10sFlag) {
LEDdisplay( 0x03 , 0x0b);
LEDdisplay( 0x04 , 0x0d);
Delay10s();
}
TimeGo();
}
*P_Watchdog_Clear=1;
}
}
void TreatKey()
{
if(KeyDownFlag)
{
ReturnKeyValue();
KeyDownFlag=0;
/**********************检测用*****************************************************************
if(key_array[0]) {if(i<5)i++;else i=0;
if(i==1) ForeWheelForword();
else if(i==2) ForeWheelReverse();
else if(i==3) TurnLeft();
else if (i==4) TurnRight();
else Stop();
LEDdisplay( 0x01 ,i );
key_array[0]=0;}
/**********************************************************************************************/
Keycontrol();
}
}
void TimeGo()
{
uint timebuf;
if(Time500ms>=2)
{
Time++;
Time500ms=0;
timebuf=Time;
led[0]=timebuf/100;
timebuf=timebuf-led[0]*100;
led[1]=timebuf/10;
led[2]=timebuf-led[1]*10;
LEDdisplay( 0x00 , led[0]);
LEDdisplay( 0x01 , led[1]);
LEDdisplay( 0x02 , led[2]);
}
}
uint delay10stimes=0;
void Delay10s()
{
if(delay10stimes==0)
{
timebuf_dl10s=Time;
delay10stimes=1;
}
if( (Time-timebuf_dl10s)>=10)
{
Delay10sFlag=0;
Blackwire=BLACKWIRE_H;
ForeWheelReverse();
LEDdisplay( 0x03 , 0x0a);
LEDdisplay( 0x04 , 0x0a);
}
*P_Watchdog_Clear=1;
}
void Startdelay()
{
if(startdelayflag==0)
{
timebuf_dl3s=Time;
startdelayflag=1;
}
if((Time-timebuf_dl3s)>=3)
{
StartFlag=0;
Blackwire=0;
ForeWheelForword();
LEDdisplay( 0x03 , 0x0a);
LEDdisplay( 0x04 , 0x0a);
}
*P_Watchdog_Clear=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -