| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:[求助]一个中断函数,为什么这样用?
只看楼主 加入收藏
fgilt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-21
收藏
 问题点数:0 回复次数:4 
[求助]一个中断函数,为什么这样用?
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里干嘛?
搜索更多相关主题的帖子: 函数 
2006-06-21 15:26
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用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是端口地址。


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-21 17:20
fgilt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-21
收藏
得分:0 

我知道irq3是外部中断.
其他的还是不明白.

2006-06-21 20:09
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
1。找DOS时期微机硬件资料。
2。求助于“电脑硬件”论坛。

[此贴子已经被作者于2006-6-21 20:46:11编辑过]


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-21 20:43
fgilt
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-21
收藏
得分:0 
恩,谢谢提醒
2006-06-21 21:16
快速回复:[求助]一个中断函数,为什么这样用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015879 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved