标题:
关于飞思卡尔单片机的输入不捉功能
[打印本页]
作者:
suhao199003050
时间:
2009-10-26 17:58
标题:
关于飞思卡尔单片机的输入不捉功能
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg256.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg256b"
void interrupt 8 ic0_int (void);
void SET_PLL(void);
void delay(void);
//利用输入捕捉功能做一个外部中断
int a=0,b=0,c=0;
void ic_init(void)
{
TSCR2=0X07; //采用128分频
TSCR1=0X90; //定时器使能控制 及标志位自动清零
TIE_C0I=1; //设置 零通道为输入捕捉
TCTL4_EDG0A=1; //采用了的上升沿均促发
TIOS_IOS0=0; //设置相应的位为输入捕捉
}
void SET_PLL(void)
{
PLLCTL=0XF1;
SYNR=2;
REFDV=1;
while(CRGFLG_LOCK!=1);
CLKSEL_PLLSEL=1;
}
void delay(void)
{
int i,j;
for(i=0;i<2000;i++)
for(j=0;j<200;j++);
}
void main(void)
{
EnableInterrupts;
SET_PLL();
DDRA=0XFF; //设置A口为输出
PORTA=0X00; //初始值为零 */
DDRB=0XFF; //设置B口为输出
PORTB=0XF0; //初始值为高电
ic_init();
while(1)
{
b++;
delay();
PORTB_BIT0=1;
delay();
PORTB_BIT0=0;
}
}
#pragma CODE_SEG NON_BANKED
void interrupt 8 ic0_int(void) //中断服务程序
{
DisableInterrupts;
TFLG1_C0F=1;
a++;
PORTB=~PORTB;
delay();
delay();
//c=1;
EnableInterrupts;
return ;
}
各位前辈,本人是一个初学者,写了一个输入捕捉函数,但却发现单片机进入中断之后出不来了,且不断循环中断函数。上面是我的程序,请各位高手指教!!
(我用的单片机型号是MC9S12DG256, 编程软件是5.0的) ~~ 谢谢!!
作者:
whc1223
时间:
2009-11-19 11:27
return ; ?
作者:
daixiaoke
时间:
2009-11-24 20:36
其他的不说,但说main()函数中第一句使能中断不应该这么早。一般放到初始化函数后执行,即ic_init(); 之后。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0