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

📄 control.c

📁 智能小车的往返行驶,单片机实现,使用红外信号进行路面信号的采集
💻 C
字号:
#include "SPCE061V004.h"
#define   FORWARD             0              //前进状态
#define   BACKWARD            1		         //后退状态
#define   INPUT_1             0x0100	     //L298端口5,对应IOB8
#define   INPUT_2             0x0200         //L298端口7,对应IOB9
#define   INPUT_3             0x4000         //L298端口10,对应IOB14
#define   INPUT_4             0x2000         //L298端口12,对应IOB13
#define   BACKWHEEL_ENA       0x0400         //L298端口11,对应IOB10
#define   FOREWHEEL_ENA       0x8000         //L298端口6,对应IOB15
#define   PHASE1_CURRENT      0x0800         //L298端口1,对应IOB11
#define   PHASE2_CURRENT      0x1000         //L298端口15,对应IOB12
typedef unsigned int uint;
typedef unsigned char uchar;
extern uint SpeedValue;  //档位值,从1-100
extern uint Status;	     //记录和控制车前进,后退状态
void ForeWheelReverse();
void delay(uint );
//速度控制
void Speed(uint speedvalue)
{
if(speedvalue>0 && speedvalue<=100)
SpeedValue=speedvalue;
}
//后轮正转
void ForeWheelForword()
{
 *P_IOB_Data |= INPUT_3;     //置高
 *P_IOB_Data &= ~INPUT_4;    //置低
}
//后轮反转
void ForeWheelReverse()
{
 *P_IOB_Data |= INPUT_4;     //置高
 *P_IOB_Data &= ~INPUT_3;    //置低
}
//左转
void TurnLeft()
{
     if(Status== FORWARD)
         {
         *P_IOB_Data |= INPUT_1;     //置高
         *P_IOB_Data &= ~INPUT_2;    //置低
         *P_IOB_Data |=FOREWHEEL_ENA ;
         delay(0x0003);
         *P_IOB_Data &= ~FOREWHEEL_ENA ;
         }
     else
        {
         *P_IOB_Data |= INPUT_2;     //置高
         *P_IOB_Data &= ~INPUT_1;    //置低
         *P_IOB_Data |=FOREWHEEL_ENA ;
         delay(0x0003);
         *P_IOB_Data &= ~FOREWHEEL_ENA ;
        }
}
//右转
void TurnRight()
{
     if(Status== FORWARD)
         {
         *P_IOB_Data |= INPUT_2;     //置高
         *P_IOB_Data &= ~INPUT_1;    //置低
         *P_IOB_Data |=FOREWHEEL_ENA ;
         delay(0x0003);
         *P_IOB_Data &= ~FOREWHEEL_ENA ;
         }
     else
        {
         *P_IOB_Data |= INPUT_1;     //置高
         *P_IOB_Data &= ~INPUT_2;    //置低
         *P_IOB_Data |=FOREWHEEL_ENA ;
         delay(0x0003);
         *P_IOB_Data &= ~FOREWHEEL_ENA ;
        }
}
//停止
void Stop()
{
 ForeWheelReverse();
 delay(0x0005);
 *P_IOB_Data |= INPUT_4;     //置高
 *P_IOB_Data |= INPUT_3;     //置高
 *P_IOB_Data |= INPUT_1;     //置高
 *P_IOB_Data |= INPUT_2;     //置高
}
//延时n ms
void delay(uint nms)
{
  uint i_dl,j_dl;
  for(i_dl=0;i_dl<nms;i_dl++)
     for(j_dl=0;j_dl<800;j_dl++)
        *P_Watchdog_Clear=1;
}
void Adjust()
{
 if(Status== FORWARD)  TurnRight();
 else TurnLeft();
 *P_Watchdog_Clear=1;
}

⌨️ 快捷键说明

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