Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > DOS下的DJGPP环境如何勾连硬件中断
【标  题】:DOS下的DJGPP环境如何勾连硬件中断
【关键字】:DOS,DJGPP
【来  源】:http://blog.csdn.net/dijkstar/archive/2006/11/23/1408104.aspx

DOS下的DJGPP环境如何勾连硬件中断

Your Ad Here

本文介绍了DJGPP下如何安装硬件IRQ5中断。

首先,声明一个中断服务子函数:

       //声明中断服务子函数,ISR

       void fn(void)

       {

              //...............

              //...............

              //...............

              outportb(0x20,0x20);    //开硬件中断

       }

 

然后开放中断位、声明信息变量、挂接:

       #define INTR 0x0D                                         /*IRQ5中断向量是0x0D*/

       unsigned char IRQ_bit;

       unsigned char IRQ_bit_old;

 

       IRQ_bit=IRQ_bit_old=inportb(0x21);                       //读入中断的屏蔽位,并保存

       outportb(0x21,(IRQ_bit & 0xdf));                                   //开放想要的中断口——IRQ5

 

       _go32_dpmi_seginfo     new_info;                            //新的信息变量

       _go32_dpmi_seginfo     old_info;                             //新老两个段信息变量

 

       new_info.pm_offset=(int)fn;                                    //挂接中断服务子程序名

       new_info.pm_selector=_go32_my_cs();

 

       _go32_dpmi_get_protected_mode_interrupt_vector(INTR,&old_info); //保存老的

       _go32_dpmi_allocate_iret_wrapper(&new_info);                                   //锁定

       _go32_dpmi_set_protected_mode_interrupt_vector(INTR,&new_info); //勾连

 

现在可以使用硬件中断了………………..

 

最后,从程序退出时,恢复刚刚的设置:

       outportb(0x21,IRQ_bit_old);                                    //恢复以前保存的中断屏蔽位

       _go32_dpmi_set_protected_mode_interrupt_vector(INTR,&old_info);  //还原

       _go32_dpmi_free_iret_wrapper(&new_info);

注意:

1.       中断服务程序的最后必须使用outportb(0x20,0x20);

2.       中断服务程序、及其中涉及的变量应该锁定在物理内存中,不要参与操作系统的虚拟内存交换,使用 DJGPP函数_go32_dpmi_lock_data( )_go32_dpmi_lock_code( )DOS系统下和DJGPP配合使用最好的Allegro已经完整的提供对两个函数的封装。

 

 

 
编写文件替换程序:【上一篇】
第一个正式任务:【下一篇】
【相关文章】
  • 关于trados软件下载安装的问题
  • DOS命令大全(经典收藏)
  • DOS操作命令
  • 用C#执行DOS命令和操作注册表
  • 常用DOS命令参数详解
  • WindowsXP照样启动纯DOS
  • FC6的硬盘安装-grub for dos
  • Commandos 4:Strike Force玩后随笔
  • 一步一步帮你击败DDos攻击
  • dos命令在xp时代的高级应用
  • 【随机文章】
  • 可怜的ColdFusion 国内没认学吗?还是都不在csdn讨论?
  • 拔插USB设备不当造成主板南桥烧毁
  • MFC 打印预览 映射模式 坐标变换
  • Tomcat+SQL Server2000连接池配置
  • 基于SPI的数据报过滤原理与实现 下
  • XP实用技巧:关闭"压缩旧文件"功能
  • JavaScript实例 制作浮动广告
  • arcIMS 客户端 连接器的选择
  • 教你抠MM
  • 利用Visual C#开发一个媒体播放器
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.