智能车制作

标题: 求一个XS128的外部中断程序~~~~ [打印本页]

作者: mengzibo1989    时间: 2009-12-7 22:16
标题: 求一个XS128的外部中断程序~~~~
RT
作者: zhshuai1    时间: 2010-3-20 00:28
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
/* 使用PWM功能产生1K频率的方波,触发PJ0*/

#define uint unsigned int

uint   Input_Num;

/*时钟初始化*/
void PLL_Init(void)   //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                     //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;            //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;
}


/*PWM初始化程序*/
void PWM_Init(void)  
{
  PWME_PWME3=0x00;  // PWW is disabled               禁止            
  PWMPRCLK=0x33;    // 0b0011 0011 A=B=24M/8=3M      时钟预分频寄存器设置
  PWMSCLA=150;      // SA=A/2/150=10k                时钟设置
  PWMSCLB=150;      // SB=B/2/15 =10k               时钟设置
  PWMCTL=0x00;      // no concatenation              控制寄存器设置                                
  PWMCLK_PCLK3=1;   // PWM3-----SB                   时钟源的选择
  PWMPOL_PPOL3=1;   // Duty=High Time                极性设置
  PWMCAE_CAE3=0;    // left-aligned                  对齐方式设置
  PWMPER3=250;      // Frequency=SB/250=40           周期寄存器设置
  PWMDTY3=125;      // Duty cycle = 50%              占空比寄存器设置
  PWME_PWME3=1;     // enable                        使能
}

void main(void)
{
  PPSJ_PPSJ0=0;       //PJ0口触发方式   上升沿触发
  PIEJ_PIEJ0=1;        //PJ0中断使能
  PLL_Init();
  PWM_Init();
  DDRB=0XFF;
  PORTB=0X00;
  EnableInterrupts;
  for(;;)
  {

  }
}


#pragma CODE_SEG NON_BANKED      
void interrupt 24 zhongduan(void)     //H口是通用的  中断向量是25(P口同样)
{
  PIFJ_PIFJ0=1;         //清除中断标志位
  PORTB=0XFF;
  Input_Num++;
  PORTB=Input_Num;
  if(Input_Num>=255)
  {
    Input_Num=0;
  }     
}
/*调试通过的外部中断触发*/
作者: 吴铭鸿    时间: 2011-8-6 19:03
初学,借鉴》》》




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2