读书人

怎么触发硬中断?让其响应自己的ISR

发布时间: 2012-03-07 09:13:51 作者: rapoo

如何触发硬中断?让其响应自己的ISR
某个嵌入CPU使用2个8259
编写watchdogtimer ,其 timeout时触发IRQ12
可是程序没有响应。
以下程序有问题,
ISR_OLD=getvect(12);
/* When IRQ12 is called, ISR() to print "HELLO "*/
disable();
setvect(12, ISR);
enable();
setvect(12,ISR_OLD);

请教达人

[解决办法]
disable(); //防止你设置0a中断时被其它中断程序中断,必须先禁止其它中断
ISR_OLD=getvect(0x0a);
setvect(0x0a,ISR);
enable(); //这里再允许其它中断
       //DOS下0-255号中断大部分已被系统定义,你只能按它的定义来使
       //这是由硬件决定的,比如你想用一个简单的时钟中断,就可以用
//1c,具体该用多少号中断可以查DOS手册


setvect(0x0a, ISR_OLD); //同理,这理也就先禁止再开放中断
[解决办法]
不会 帮你顶
[解决办法]
什么cpu啊,定时器相关的寄存器配置都正确吗?
还有就是楼上所说的中断优先级匹配问题,会不会被高一级的中断破坏导致不触发中断。。。

[解决办法]
学习

读书人网 >C语言

热点推荐