这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 中断响应---中断处理---中断返回,是如何处理??(谢谢)

共4条 1/1 1 跳转至

中断响应---中断处理---中断返回,是如何处理??(谢谢)

菜鸟
2008-03-15 16:07:26     打赏

前段时间谢谢你的帮助.这几天在弄中断,遇到点事情,就是中断响应不知道如何处理.在51系列里是发生中断CPU自己进入中断处理程序进行处理的,处理结束最后用RETI返回即可.

但是瑞萨好像不是,我用51的方式处理过,好像不行.下面这个程序是我想用INT0,INT1来处理一段程序.while(ir_int0ic == 0);里不进行判断就不会自己进去.那么我设中断优先级什么的就没有用了.想请问一下,中断响--中断处理---中断退出.整个过程是怎样的.谢谢.

//////////////////////////////////////////////////////////
//INT0(P4_5)\INT1(P1_7)同时输入中断信号
//INT0(P4_5)中断则P2_0亮;INT1(P1_7)中断则P2_5亮。
/* 原型声明 ********************/
void int0 ( void ) ;
//void int1 ( void ) ;
#include"sfr_r82l.h"

unsigned char a,a0,a1;
void int0 ( void ) /*   */
 {
  ir_int0ic =0;
  ir_int1ic =0;
  p2_0=!p2_0;
  //p2_5=0;
  }

//void int1 ( void ) /*   */
// {
//  ir_int0ic =0;
//  ir_int1ic =0;
//  p2_0=0;
//  p2_5=1;
//  }


void main(void)
{
 pd2=0x21;           //P2_5\P2_0为输出模式
 p2_0=1;
 p2_5=0;
 
 int0ic=0x01;        //INT0中断控制寄存器下降、优先级1级
 
// int1ic=0x03;        //INT1中断控制寄存器下降、优先级3级
 
 inten=0x05;         //外部输入允许寄存器
 intf=0x0a;          //输入滤波器选择寄存器
 
 while(1)
 {   
   while(ir_int0ic == 0);
   int0();
  
  
 }
  
}  




关键词: 中断     响应     处理     返回     如何     谢谢    

助工
2008-03-15 20:09:28     打赏
2楼
请检查工程文件中sect30.inc文件中中断向量名是否设定正确,另外中断处理时对
 ".if   0
         .Iword    dummy_int      ;vector 0
         .............
"
 一定要改为:

".if   1
         .Iword    dummy_int      ;vector 0
         .............
"

菜鸟
2008-07-21 13:19:31     打赏
3楼

菜鸟
2008-07-22 08:48:12     打赏
4楼
楼主,我认为你的这种方式不是中断处理的方法,而是查询的方法
  while(ir_int0ic == 0);
   int0();

而中断函数的声明你做的也不完整
#pragma INTERRUPT int0
void int0 ( void ) ; 

此外,二楼说的那一点很重要,
请检查工程文件中sect30.inc文件中中断向量名是否设定正确
请将相应的中断向量设定为你的中断函数的入口地址
即:
.glb _int0
.lword _int0

共4条 1/1 1 跳转至

回复

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