以下是引用fgilt在2006-6-21 15:26:17的发言:
void irq3() { disable(); /*关中断*/ oldint1=inp(0x21); /*取0x21里内容*/ startint1=oldint1&0x07; /*取低3位*/ stopint1=oldint1|0xf8; /*取高5位*/ oldirq3=getvect(0x0B); /*保存原irq3中断内容*/ setvect(0x0B,newirq3); /*装入新irq3中断*/ outp(0x21,startint1); /*把低3位送入0x21*/ enable(); /*开中断*/ } 注释是我根据自己的理解加上去的,不知道是不是这样理解的? 能不能解释一下: 1.取0x21里的内容干什么用?这个地址里有什么东西? 2.为什么要单独取低3位和高5位? 3.把低3位送到0x21里干嘛?
| |
|
楼主所问的IRQ3函数实际是为第2串行口保留的外部中断。
手头资料欠缺,只能答这么多。0x21是端口地址。