世俱杯 2025

登录 免费注册 世俱杯 2025 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

请教关于PC104的外部中断 IRQ9/10/11的获得!!

作者:vodoo 栏目:嵌入式系统
请教关于PC104的外部中断 IRQ9/10/11的获得!!
这里我们用到了PC104的外部中断 IRQ9/10/11,希望通过外部发送一个脉冲引起IRQ中断响应!
相应的中断程序如下:

void irqIntOpen() //开中断
{
    int TEMP;    
    oldvect = getvect(0x71); //保存原中断向量
    setvect(0x71,intSerProgram); //装入中断服务程序入口地址
    TEMP = inportb(0x21) & 0xFB;//打开主片IRQ2
    outportb(0x21, TEMP);
    TEMP = inportb(0xA1) & 0xF7;//打开从片IRQ11
    outportb(0xA1, TEMP);
}
void interrupt intSerProgram() //中断服务程序
{
    readData(); //中断服务程序代码
    
    outportb(0xA0,0x20); //向从片ICR送EOI命令
    outportb(0x20,0x20); //向主片ICR送EOI命令
    irqIntClose();
    
}
void irqIntClose() //关中断
{
    int TEMP;
    setvect(0x71, oldvect); //恢复原中断向量
    TEMP = inportb(0x21) | ~(0xFB);//关主片IRQ2
    outportb(0x21, TEMP);
    TEMP = inportb(0xA1) | ~(0xF7);//关从片IRQ11
    outportb(0xA1, TEMP);
}

初始化8259的代码如下:
void init8259(void)
{
    outportb(0x20,0x11); //设置为边沿触发方式
    outportb(0xa0,0x11);
    ......
}

主程序
void main(void)
{
      init8259();//初始化8259
      init();//常规初始化
      irqIntOpen();//中断开放
      while(1) //等待中断
      {
            ;
      }

}
调试的时候,一执行到"outportb(0x20,0x11)"语句,就出现“divide overflow”
请高手指点一下!


参与讨论
昵称:
讨论内容:
 
 
相关帖子
怎么用一个Const的指针数组存储我的函数地址?
c51中指针数组的问题--请教
FLASH 扩展请教!
求助!——二氧化碳传感器
求助:VxWorks在DiskOnChip2000上的启动问题


Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号