📄 main.c
字号:
#include <hidef.h> //基本定义和宏定义
#include <mc9s12dg128.h> //硬件定义
#include "..\Sources\common_defs.h" //自定义常量
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//第三届“飞思卡尔杯“全国大学生智能汽车邀请赛
//MCS12主控制芯片处理程序
//上海东华大学2队
//队员:
//--梁霄(自动化系 硕士研究生)
//--朱汇中(自动化系 本科)
//--童牧(通信系 本科)
//编码人:梁霄
//最后更新时间:2008.06.05 23:28
//(C)版权所有。
//主程序
//文件名:main.c
//编码人:梁霄
//最后更新时间:2008.06.05 23:28
//全局变量定义
int timeOfMDCInterrupt = 0; //中断次数计数器
int incrementDirectionFlag = 0; //PWM占空比增长方向计数器
byte graph[GRAPHBLOCKNUM][MAX_LINES_PER_FIELD][MAX_DOTS_PER_LINE]; //图像采集存储区域,一共有两块,交替进行存储和处理
unsigned int centers[LINESOFGROUP]; //每组中每一行的中心位置
unsigned int finalCenter[GROUP]; //每组的平均中心位置
int lineCounter = 0; //行计数器
int dotCounter = 0; //列计数器
unsigned int canScan = 0; //允许采集控制标志
unsigned int isGraph1 = 0; //图像处理区域转换标志
unsigned int processAllow = 0; //已经转换完成,可以允许处理场标志
unsigned int skipLines = 0; //每场开始时跳过的无效行的计数器
unsigned int total = 0; //统计每组行中的黑线位置的总值
//各模块初始化例程,在inits_tasks.c中实现
void CRG_Init(void); //系统时钟初始化
void PORT_Init(void); //各端口初始化
void PWM_Init(void); //PWM初始化
void MDC_Init(void); //16位减计数器初始化
void IOC_Init(void); //输入捕捉初始化(用于捕捉奇偶场同步信号)
void IRQ_Init(void); //外部中断初始化(用于捕捉行同步信号)
void ATD_Init(void); //模数转换初始化
//中断服务例程,在interrupt_tasks.c中实现
interrupt 6 void IRQ_ISR(void); //行同步中断服务例程
interrupt 9 void IOC1_ISR(void); //奇偶场同步中断服务例程
interrupt 26 void MDC_ISR(void); //16位减计数器中断服务例程
//主函数中的循环任务例程,在common_tasks.c中实现
void SwitchRead(void); //控制开关读入例程
void DirectionAdjust(void); //舵机调节例程
void SpeedAdjust(void); //电机调节例程
void DataProcess(void); //数据处理代码
void Delay(long); //延时例程
void main(void)
{
//调用系统时钟初始化例程
CRG_Init();
//调用各端口初始化例程
PORT_Init();
//调用PWM初始化例程
PWM_Init();
//调用16位减计数器初始化例程
MDC_Init();
//调用输入捕捉初始化例程
IOC_Init();
//调用外部中断初始化例程
IRQ_Init();
//调用模数转换初始化例程
ATD_Init();
//允许中断
EnableInterrupts;
for(;;)
{
//读入控制开关
//SwitchRead();
//数据处理
DataProcess();
//舵机调节
DirectionAdjust();
//电机调节
//SpeedAdjust();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -