智能车制作

标题: 请教 PWM 中断方式怎么不行啊?请大家指教!!3Q [打印本页]

作者: hikuaidian    时间: 2010-12-10 11:55
标题: 请教 PWM 中断方式怎么不行啊?请大家指教!!3Q
请教 PWM 中断方式怎么不行啊?请大家指教!!3Q

这是我的程序代码:

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#pragma LINK_INFO DERIVATIVE "MC9S12XEP100"


/************************************************************/
//功    能:实现一段时间的延时
//入口参数:无
//出口参数:无
/************************************************************/
void delay(unsigned int delay_time)
{
  unsigned int loop_i,loop_j;      //定义循环变量
  for (loop_i=0;loop_i<delay_time;loop_i++)
  {
    for (loop_j=0;loop_j<500;loop_j++)
    {
      ;
    }
  }
}

int i=0;
void main(void)
{
DDRJ=0x00;
PIEJ=0X01;
EnableInterrupts; //中断设置
PWME=0; //关闭所有通道
PWMCTL_CON01=1;//对PWM控制寄存器进行设置,0,1合为一个通道
PWMCNT1=0X00;//0,1通道计数器清0
PWMPOL_PPOL1=1;//上升沿翻转
PWMCLK_PCLK1=0; //设A为其时钟源
PWMPRCLK=0X00; //不对A时钟进行分频
PWMCAE_CAE1=1;//中心对齐输出
PWMPER1=0X20;
PWMPER0=0x4e;//per等于40000,即100赫兹
PWMDTY1=0X10;
PWMDTY0=0X27;//dty等于20000
PWME_PWME1=1;//0,1通道使能
for(;i<=1854;)
{
if(PWMCNT0==0X4e)
i++;
} //步进电机转90度
PWME=0;//0,1通道关闭
while(1){;}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void man(void)
{
if(PIFJ_PIFJ0==1)
{
PIEJ_PIEJ0=0;//关闭中断
PIFJ_PIFJ0=0;//清除中断标志PIFJ0    (怎么不行啊????)
PWMPER1=0X2a;
PWMPER0=0x68;//per等于26666,即150赫兹
PWMDTY1=0X15;
PWMDTY0=0X34;//dty等于13333
PWME_PWME1=1;//0,1通道使能
delay(10);
PWME_PWME1=0;//0,1通道禁止
PIEJ_PIEJ0=1;//开启中断

}
}
#pragma CODE_SEG DEFAULT

请大家帮忙看看 问题出在哪里?xiexie




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2