以下是我想想用模下计数器实现定时的程序,可是运行时却没有反应,请帮忙看一下,问题在哪里,谢谢!!
#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;
}
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |