这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 高手指导下 中断问题

共7条 1/1 1 跳转至

高手指导下 中断问题

菜鸟
2008-09-13 10:58:11     打赏
 
p1_7------p1_7/CNTR00/INT10


//INT1 初始化
 cntrsel=0;  //int10位INT1的输入脚
 r0edg=1;    //下降沿   RXDHW
 int1ic=0x06;     //6级中断

 p1=0x97;
 pd1=0x7b;

void _int1(void)
{
   //ir_int1ic=0;            /*清中断请求*/
   //tc=416;                 //set count
  // tm0=833-1;
   tm0=416;
   rxd_bit=ONEBIT;
   Int1_stop();
   TimerC_cmp0_start();
}


怎么中断没触发直接就进去了   不知道什么问题 
I/O对应的就是上面对应的脚

 




关键词: 高手     指导下     中断     问题    

菜鸟
2008-09-13 12:18:19     打赏
2楼
版主不在吗

帮帮忙

菜鸟
2008-09-16 17:32:18     打赏
3楼
楼主可以试试以下几种方法,从而确定问题所在。

1)将中断关掉(asm("FCLR I")),看是否会进入中断。
2)观察一下p1_7端口上的电压,看是什么信号触发了中断。

谢谢您的提问。

菜鸟
2008-09-17 09:02:59     打赏
4楼

//INT0 初始化

 int0pl=0;  //单边沿
 int0f=0X03; //有滤波器 F32采样
 inostg=0;   //禁止单次触发模式
 pol_int0ic=1; //上升沿触发 
 int0en=1;  //允许INT0输入
 int0ic=0x17;     //7级中断
 
 //INT1 初始化
 cntrsel=0;  //int10位INT1的输入脚
 r0edg=1;    //下降沿   RXDHW
 int1ic=0x06;     //6级中断
 
 //INT3 初始化
 tcc06=1;  //在INT3输入时序产生
 tcc07=0;   //选取INT3中断
 tcc10=1;   //有滤波F32
 tcc11=1;
 tcc03=1;  //下降沿
 tcc04=0;
 int3ic=1;     //1级中断
 
我的是R8CR5R0C002单片机 
帮忙看下 我的外部中断初始化正确不  谢谢


菜鸟
2008-09-17 11:59:39     打赏
5楼

我觉得你的INT初始化好像没有什么问题,倒是上面的端口设定很奇怪
 p1=0x97;
 pd1=0x7b;

如果把p1_7设为输入的话,就不用设定p1的初值了吧,如三楼所说,你的p1_7管脚上的初始电平是什么呢?
此外,中断处理程序是按照这种格式设定的吗?

#pragma INTERRUPT _int1
void _int1(void);


菜鸟
2008-09-17 14:52:54     打赏
6楼


我的目的是想用P1_7--外中断1,红外接收
                           P1_6---红外输出  P1_3-----38K
做一个I/O口模拟红外。

我现在中断能进去了  是我有地方设置重复了  

我用的是定时器C来控制波特率1200 
要实现错半位读P1_7的电平输入  

我现在定时器设置有疑问  
定时器初值是 tm0=6666;

在外中断中触发定时器C cmp0比较接收
#pragma interrupt _int1(vect=25)
void _int1(void);                                     
void _int1(void)

   tm0=3333;   //请问这个值怎么设置?
   rxd_bit=ONEBIT;
   Int1_stop();
   TimerC_cmp0_start();
}

请高手指点。。。。。


菜鸟
2008-09-17 17:15:32     打赏
7楼

还有我的比较中断好像进不去。。。。。

 tcc00=0;      //定时器C停止计数   频率=F/(TM0+1)
 tcc01=1;      //定时器C F8分频      1M/1200=833
 tcc02=0;
 tcc12=1;      //匹配自动置0 
 tcc13=1;      //比较器0输出
 tcc14=0;      //比较器0 比较器1匹配时,CMP输出不发生变化
 tcc15=0;   
 tcc16=0;
 tcc17=0;
 tcout0=0x00;  //CMP不输出
 tm0=833-1;
 tm1=833-1;

外中断1.。。。。。。。
#pragma interrupt _int1(vect=25)
void _int1(void);                                     
void _int1(void)
{
         /*清中断请求*/     //set count
   tm0=417; 
   rxd_bit=ONEBIT;
   Int1_stop();
   TimerC_cmp0_start();
}

比较0
void _compare0(void)
{
   ir_cmp0ic=0;  /*清中断请求*/
   tm0+=833;
  if(rxhw_allow_sign==1)     //如果红外允许接收标志=1 则接收 否则不接
  { ....这里应该没问题 我是从我的mega16上移植过来的....}
}


红外接收不到。。。。。。好像比较0进不去


请版主帮我看看  不胜感激
  


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]