请懂飞思卡尔比赛和精通程序设计的高手帮忙,这是校内竞赛的题目。

这是我朋友参加飞思卡尔校内比赛选拔赛一个题目设计的程序,题目是
智能车驱动电机控制
要求:小车电机在单片机上电5s后启动,先高速正向转动5s,然后慢速正向转动3s后停止转动5s,然后反向高速转动5s,再反向慢速转动3s,再高速正向转动5s后制动停止转动。
下面是程序:
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
unsigned char start=0;
unsigned char start_flag=0;
unsigned char temp=0;
unsigned char motor_ctrl=0;
void PWM_Init(void);
void PIT_Init(void);

/******************PWM初始化********************/
void PWM_Init(void)
{
PWME=0;
PWMPOL=0XFF;
PWMPRCLK=0x01;
PWMCLK=0X00;
PWMPER0=1250;
PWMPER1=1250;
PWMDTY0=0;
PWMDTY1=0;
PWME_PWME0=1;
PWME_PWME1=1;
}
/*********定时器初始化*******/
void PIT_Init(void)
{
PITCFLMT_PITE=0;
PITTF_PTF0=1;
PITCE_PCE0=1;
PITMTLD0=50;
PITLD0=500;
PITMUX_PMUX0=0;
PITINTE_PINTE0=1;
PITCFLMT_PITE=1;
}
void main(void) {
/* put your own code here */

PWM_Init();
PIT_Init();
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT(void)
{
PITTF_PTF0=1;
if(start_flag)
{
if(motor_ctrl<=4)
{
PWMDTY0=1000;
PWMDTY1=0;
}
else if(motor_ctrl>4&&motor_ctrl<=7)
{
PWMDTY0=0;
PWMDTY1=1000;
}
else if(motor_ctrl>7)
{
PWMDTY0=1000;
PWMDTY1=0;
}
motor_ctrl++;
if(motor_ctrl>12)
motor_ctrl=0;
}
else
{
if(temp>=4)
start_flag=1;
else
temp++;
}

}
#pragma CODE_SEG DEFAULT
我想知道这个程序应用了XS128的哪些方面,以及这个程序的分析,我不懂这个程序的意思,请帮我逐句翻译一下,还有,题目的程序流程图(源程序就是上面这个)以及题目的外围硬件的功能及应用方法还有题目的电路图,帮我把这几个做出来再奖励100分。谢谢各位高手哦。

给分确实多,但我没打算要你的分,个人认为你的程序不能完成题目的要求,这个程序格式写的很不好,让人看着很不舒服。根据我的能看懂的跟你说几点吧,如果
{
PWMDTY0=1000;
PWMDTY1=0;
}
代表的是正转,
那么
{
PWMDTY0=0;
PWMDTY1=1000;
}
就应该是反转;(颠倒一下也行,关键看你的电机驱动芯片和单片机哪个脚链接的)
这应该是1秒的定时中断,也即是说,每一秒进一次中断,前4次进中断时每次都temp++;以后每次进是motor_ctrl++;两个初始化函数没什么好说,主函数除了调用初始化函数之后什么也不做。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-20
PWME=0;
PWMPOL=0XFF;
PWMPRCLK=0x01;
PWMCLK=0X00;
PWMPER0=1250;
PWMPER1=1250;
PWMDTY0=0;
PWMDTY1=0;
PWME_PWME0=1;
PWME_PWME1=1;

pwm模块

PITCFLMT_PITE=0;
PITTF_PTF0=1;
PITCE_PCE0=1;
PITMTLD0=50;
PITLD0=500;
PITMUX_PMUX0=0;
PITINTE_PINTE0=1;
PITCFLMT_PITE=1;
周期定时器模块

这些都是寄存器的配置 自己翻xs128的数据手册

而且你锁相环也没超频
主函数里应先关中断然后在初始化
而且中断函数里写太多了我觉得
你定时器中断里只要计时就够了 写几个标志位
然后 主函数里写要完成的任务

请懂飞思卡尔比赛和精通程序设计的高手帮忙,这是校内竞赛的题目。
这应该是1秒的定时中断,也即是说,每一秒进一次中断,前4次进中断时每次都temp++;以后每次进是motor_ctrl++;两个初始化函数没什么好说,主函数除了调用初始化函数之后什么也不做。

什么是飞思卡尔杯
是飞思卡尔杯智能车竞赛么?我知道我们学校年年都有。北科的。每年刚开学就开始准备,分为光电组和摄像头组。每队3-5人,少数同学负责机械,多数同学负责程序设计。做好车子后主要是程序的优化调试,然后12月份开始校内赛,选拔出优秀选手,接着春天来准备暑假的全国赛。相关资料可以找学长要,或到智能...

针对中国大学生及年轻科学家的竞赛有哪些
挑战杯分为“中国大学生创业计划竞赛”和“全国大学生系列科技学术竞赛”两种竞赛,这两类竞赛会交叉轮流举办,一般作品的征集时间是从前一年的11月份到次年的3月份。全国大学生电子设计大赛;这类比赛会比较适合电类学生参加,电子设计大赛的形式也是给出题目,参赛者有四天三夜的时间解决问题,题目大致可以分...

请问有谁知道适合大学生参加的全国大赛有哪些?我想参加个全国的比赛...
亚太大学生机器人大赛 飞思卡尔智能汽车大赛 ACM程序设计大赛 等等 都是含金量比较高的

什么样的学生适合参加竞赛?
当然是学霸,学神级别的。因为人家可以很好的平衡日常高中课程和竞赛学习。学习一般的学生把学校里的课程搞好就了不得了,竞赛?别想。这里讲的很绝对,但是竞赛就是这么残忍啊,不只是下苦功就能成的事儿,也要有天赋,不承认不行。所以如果学习很棒,又对竞赛有兴趣,倒是可以尝试一下,因为竞赛比的...

投简历邮件范文办公文秘
能吃苦:电赛和飞思卡尔比赛前为完善作品连续通宵几晚人际关系融洽:大学期间和室友和同学相处都较好,没有激励矛盾认真有责任感:能很好完成交代的任务,在规定时间前尽力完成教育经历20__年9月~20__年7月中国计量学院测控技术与仪器本科专业理论:C语言程序设计、单片机原理、电路与电子技术、自动控制原理、计算机控制技术...

大学经济类竞赛有哪些
这类比赛会比较适合电类学生参加,电子设计大赛的形式也是给出题目,参赛者有四天三夜的时间解决问题,题目大致可以分为:控制类、测量类、高频类以及电力电子类。该竞赛会在单数年的9月份举行。全国大学生英语竞赛;全国大学生英语竞赛分成ABCD四类,A类是针对研究生,B类针对英语专业的学生,C类针对非英语...

全国大学生有哪些竞赛
全国大学生电子设计大赛;这类比赛会比较适合电类学生参加,电子设计大赛的形式也是给出题目,参赛者有四天三夜的时间解决问题,题目大致可以分为:控制类、测量类、高频类以及电力电子类。该竞赛会在单数年的9月份举行。全国大学生英语竞赛;全国大学生英语竞赛分成ABCD四类,A类是针对研究生,B类针对英语...

相似回答