首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[讨论]ECT无法实现,PWM也出不来,又要请教了。

[讨论]ECT无法实现,PWM也出不来,又要请教了。

#include <hidef.h>      /* common defines and macros */
#include <mc9s12c32.h>     /* derivative information */

#include "main_asm.h" /* interface to the assembly module */

#pragma LINK_INFO DERIVATIVE "mc9s12c32"

unsigned char a,b,c;
unsigned char pwm0,pwm1,pwm2,pwm3,pwm4,pwm5,pwm6,pwm7;

volatile void RTI_Init(void)
  {
    CRGINT_RTIE=1;
    CRGFLG_RTIF=0;
    RTICTL=0b01000000;
  }

volatile void ECT_Init(void)
  {
    TSCR2=0b10001011;
    TSCR1_TEN=1;
  }
 
volatile void PWM_Init(void);
 
void main(void)
{
  /* put your own code here */
  DDRA=0b00111111;
  DDRB=0b00111111;
  DDRT=0b00011111;
 
/*  RTI_Init();*/
  ECT_Init();
  ATD_Init();

  pwm0=0;
  pwm1=2;
  pwm2=4;
  pwm3=8;
  pwm4=10;
 
  PWM_Init();

  PORTA=0;
  PORTB=0;
 
  EnableInterrupts;
  for(;;)
  {
    if(b<127)
      {
        PORTA_BIT0=0;
        PORTB_BIT4=1;
      }else
      {
        PORTA_BIT0=1;
        PORTB_BIT4=0;
      }
  } /* wait forever */
}

/*volatile void interrupt 7 RTI_Int(void)
  {
    CRGFLG_RTIF=1;
    b++;
  }*/
 
volatile void interrupt 16 ECT_Int(void)
  {
    TFLG2_TOF=1;
    b++;
  }
 
volatile void PWM_Init(void)
  {
    PWME=0b00000000;
    PWMPRCLK=0b00110011;
    PWMSCLA=0b00001111;
    PWMSCLB=0b00001111;
    PWMCLK=0b00000001;
    PWMPOL=0b00000111;
    PWMCAE=0b00000000;
   
    PWMPER0=250WMDTY0=0;
    PWMPER1=250WMDTY0=0;
    PWMPER2=250WMDTY0=0;
   
    PWMDTY0=62;
    PWMDTY1=125;
    PWMDTY2=187;
    PWME=0b00000111;
  }
 
代码如上,想试验ECT的时间中断和PWM输出,都无法实现。RTI倒实现的比较方便(暂时先屏蔽了),麻烦大侠帮我看看,奇怪死了。

还是想不通,刚才查资料,对PORTT和PORTP之间的关系也混了,到底PWM用的是哪个?
清楚了
用的是48脚的单片,因此PWM用了PT口,但是用PT口需要使用到MODRR寄存器来作开关
返回列表