注册会员
- 积分
- 180
- 威望
- 231
- 贡献
- 39
- 兑换币
- 0
- 注册时间
- 2010-12-8
- 在线时间
- 4 小时
|
请教 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 |
|