以下是我想想用模下计数器实现定时的程序,可是运行时却没有反应,请帮忙看一下,问题在哪里,谢谢!!
#include <hidef.h> /* common defines and macros */ #include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b" void SYSCLK_Init (void); void PORTB_Init(void); void MDC_Init(void);
void main(void) { SYSCLK_Init(); PORTB_Init(); MDC_Init(); asm { nop } EnableInterrupts; for(;;) { } } //时钟初始化 void SYSCLK_Init (void) { CLKSEL=0x00; //时钟选择寄存器 关闭锁相环 PLLCTL=0xe1; //PLL控制寄存器 SYNR=2; //PLL=2*16*(SYNR+1)/(REFDV+1) REFDV=1; //BUS CLOCK=24M while(!CRGFLG_LOCK); //等待锁相环时钟达到预期值 CLKSEL=0x80; //开启锁相环 PEAR=0x00; //PE4输出E时钟 时钟E=PLL/2 =24M EBICTL_ESTR=0; //E时钟自由运行 } //端口初始化 void PORTB_Init(void) { DDRB=0xff; //PORTB 输 出,置一为出 PUCR|=0x03; //PORTB 上拉使能 PORTB=0xff; } //模向下计数器 void MDC_Init(void) { MCCTL=0xC5; //允许中断,模数计数方式,递减允许,4分频 MCCNT=60000; //定时10ms } void interrupt MDC_ISR(void) { static uint counter=0; MCFLG_MCZF=1; counter++; // PORTB=~PORTB; if(counter==100) { PORTB_BIT7=0; } if(counter==200) { counter=0; PORTB_BIT7=1; } } |