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

一直想不明白这点

一直想不明白这点

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.
谢谢!
请问PT0你碰一下接地之前是高电平还是低电平?
请教LZ是用什么IDE的 啊,可以单步运行?是CW么?
LZ这段这样改下,
  initmcu();//初始化CPU,使bus clock=16M,初始化程序就不写上了
  initic();
  ATDDIEN=0x0001;
  DDR1AD=0x01;//定义PAD0端口为输出
  EnableInterrupts;
在开中断之前,将相关的中断标志位清一下。
海纳百川  有容乃大
返回列表