#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倒实现的比较方便(暂时先屏蔽了),麻烦大侠帮我看看,奇怪死了。 |