Board logo

标题: 一直想不明白这点 [打印本页]

作者: qwaszx110    时间: 2010-5-30 11:32     标题: 一直想不明白这点

void initic(void){
  TSCR1=0x90;//主定时器使能
  TSCR2=0X07;//定时器溢出中断禁止,定义主定时器的计数器频率
  ICSYS=0x02;//输入捕捉的保持寄存器使用
  TIOS_IOS0=0;//设定通道0为输入捕捉工作方式
  TCTL4=0x02;//定义通道0仅在下降沿捕捉
  TIE_C0I=1;//通道0允许输入捕获中断
}
void main(void) {
  initmcu();//初始化CPU,使bus clock=16M,初始化程序就不写上了
  initic();
  DDR1AD=0x01;//定义PAD0端口为输出
  EnableInterrupts;
  for(;;) {}
}

#pragma CODE_SEG NON_BANKED
void interrupt 8 ic0_int(void){
TFLG1_C0F=1;
PT1AD=0xfe;
}
我的板子上PAD0端口接有LED灯(定义PAD0方向为输出,数据位是0时LED灯才能亮),想法是在程序运行时候,用导线将芯片的引出脚PT0碰一下接地端,然后就可以进入中断了,这时候PAD0口的LED灯就会亮了,可是不知道为什么,我烧好程序后,只要一运行,不用将PAD0口碰一下接地端,LED就会自己亮了。我用单步程序调试时候,发现程序运行在main()里面的EnableInterrupts;时候,灯这时候将亮,调了一天都不知道为什么。请大家帮帮忙吧,我的板子是EVB9S12XF512,芯片是mc9s12xf512.
谢谢!
作者: w5299263    时间: 2010-7-12 14:58

请问PT0你碰一下接地之前是高电平还是低电平?
作者: mcu2007    时间: 2010-7-13 10:16

请教LZ是用什么IDE的 啊,可以单步运行?是CW么?
作者: mcu2007    时间: 2010-7-13 10:44

LZ这段这样改下,
  initmcu();//初始化CPU,使bus clock=16M,初始化程序就不写上了
  initic();
  ATDDIEN=0x0001;
  DDR1AD=0x01;//定义PAD0端口为输出
  EnableInterrupts;
作者: strongchen    时间: 2010-7-15 10:21

在开中断之前,将相关的中断标志位清一下。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0