📄 main.c
字号:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#include "main.h"
#include "ECT.h"
#include "AD.h"
#include "RTI.h"
#include "IO.h"
byte TimerCount; //用来计数1毫秒中断的次数
byte Timer1ms_Flag; //1毫秒标志位
byte Timer10ms_Flag; //10毫秒标志位
word AD0_wData[4]; //保存通道0采样值
word IOC0_wData; //输入捕捉通道的两个下降沿之间间隔-脉冲周期(us)
word IOC1_wData;
word IOC2_wData;
word IOC3_wData;
byte WheelSpeed_FL; //左前轮轮速
byte WheelSpeed_FR; //右前轮轮速
byte WheelSpeed_RL; //左后轮轮速
byte WheelSpeed_RR; //左后轮轮速
word Pressure_FL; //左前轮压力
word Pressure_FR; //右前轮压力
word Pressure_RL; //左后轮压力
word Pressure_RR; //左后轮压力
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void main(void)
{
byte i;
ECT_Init();
AD0_Init();
RTI_Init();
IO_Init();
TimerCount = 1;
Timer1ms_Flag = 0;
Timer10ms_Flag = 0;
for(i=0;i<4;i++)
{
AD0_wData[i] = 0x00;
}
WheelSpeed_FL = 0;
WheelSpeed_FR = 0;
WheelSpeed_RL = 0;
WheelSpeed_RR = 0;
EnableInterrupts;
for(;;)
{
if(Timer1ms_Flag==1) //1ms中断发生,以下程序每隔1ms执行一次
{
Timer1ms_Flag = 0;//标志位清零
if(TimerCount==10) //计数10次
{
Timer10ms_Flag = 1;
TimerCount = 1;
}
else
{
TimerCount++;
}
}//1毫秒任务
if(Timer10ms_Flag==1)
{
ATD0CTL5 = 0x90; //启动新的转换序列,开始采样
WheelSpeed_FL = DISTANCE_FOR_ONE_PULSE/IOC0_wData/1000; //左前轮车速 米/秒
WheelSpeed_FR = DISTANCE_FOR_ONE_PULSE/IOC1_wData/1000; //右前轮车速 米/秒
WheelSpeed_RL = DISTANCE_FOR_ONE_PULSE/IOC2_wData/1000; //左后轮车速 米/秒
WheelSpeed_RR = DISTANCE_FOR_ONE_PULSE/IOC3_wData/1000; //右后轮车速 米/秒
Pressure_FL = AD0_wData[0]; //左前轮压力
Pressure_FR = AD0_wData[1]; //右前轮压力
Pressure_RL = AD0_wData[2]; //左后轮压力
Pressure_RR = AD0_wData[3]; //左后轮压力
}//10毫秒任务
} //for主循环
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -