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

请教各位帮忙看一下我的程序

请教各位帮忙看一下我的程序

请各位帮忙:

以下是我想想用模下计数器实现定时的程序,可是运行时却没有反应,请帮忙看一下,问题在哪里,谢谢!!



#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;
    }
  }

共同进步!! 共同提高!!
两个问题:
1 锁相环开启,但不是马上就可以使用的,需要判定CRGFLG_LOCK位是否为0,可加上如下语句: while(CRGFLG_LOCK==0)
CLKSEL_PLLSEL=1;//选定锁相环时钟
2 中断服务子程序的关键字interrupt是不是该放在void前面。
我也是个新手,呵呵
-----尽快做完车模------
返回列表