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

[求助]关于C编程时的中断处理

[求助]关于C编程时的中断处理

看资料说中断处理程序放在Prm中,那么放在P$E的那个里,还是Simulator的里面,觉得这两个文件和仿真工具有关,放在那儿不太好理解,是不是我换个仿真工具就要重写呢?

另:通常的中断处理流程是不是如下:

主程序初始化

1、清除中断状态标志

2、开启中断允许标志

。。。

中断响应

PUSH与POP是否自动?

1、关闭中断允许标志

2、清除中断状态标志

3、设定状态位等用户代码

4、开启中断允许标志

退出中断

 

子程序(根据中断程序修改状态位运行)

1、判断状态位,0则退出

2、清除状态位

3、。。。

4、退出

 

prm文件里面是在interrupt vector里面给出中断程序的入口地址
比如timer中断,假设中断号是10
那么在prm中写上
Vector 10 Timer_ISR

interrupt Timer_ISR(void)函数可以放在你需要的文件中。

对于8位机而言,A,X寄存器是自动PUSH和POP的
H寄存器需要人工处理
现在用的是12C32,CW12,不过有2个Prm,是不是用软仿真时放在sim里,P&E硬仿真时放在P&E...Prm里?
Full chip simulator的prm是软件仿真的
P&E Hardware debugging是硬件调试用的
看过liu大侠的,用了第三种方法定义中断
void interrupt 17 overflow_tmr(void)
  {
    TFLG2_TOF=0;
    a++;
  }
但是不执行中断代码
说明没有进入中断处理程序,看看你的中断允许设置,还有各种触发条件
不断学习,摸索中进步!
void main(void)
{
  /* put your own code here */
  EnableInterrupts;
  DDRA=0b00111111;
  TSCR2=0b10000000;
  for(;;){}
}
不知道还有哪个地方没开启

仔细看看codewarrior手册

http://bbs.chinaecnet.com/dispbbs.asp?BoardID=3&RootID=54211&id=54414&star=2&skin=

[此贴子已经被作者于2005-11-9 9:45:50编辑过]

返回列表