智能车制作
标题:
求一个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