搜索
bottom↓
回复: 7

Proteus 8259A可编程中断控制器修复

[复制链接]

出0入0汤圆

发表于 2010-8-29 11:58:20 | 显示全部楼层 |阅读模式
Proteus 8259A可编程中断控制器修复办法

图片不少....DOC文件里看吧:
点击此处下载 ourdev_578536.doc(文件大小:79K) (原文件名:Proteus 8259A 可编程中断控制器修复.doc)
最后结果图:

(原文件名:未命名.JPG)

大致思路:

大家在仿真时都碰到这样的问题,我也是,于是摸索了下:

既然是创建model失败,问题就应该与model有关了,于是我对比了下8255A等其他82**先片的参数,即用右键make device 选项打开器件编辑框,两次next到:

选择MODDLL,可以看到:

同样的方法打开8255A的MODDLL选项对比:

没多大区别,就是在Description 多了3个字母:*** DLL,那我们也加上去吧。。。
右键8259,make device 更名8259A,两次NEXT,修改MODDLL的参数,即:

在Description选项末尾加上:空格DLL。一路NEXT,最后OK。。。

这是我测试的结果,新建一个仿真图,找到8259A芯片,测试运行,暂停,右键选择最下面的选项:PIC status,结果如下:
(备注: 今天刚解决,暂时未与处理器配合使用,看到的人在运行成功后麻烦把你的测试结果也分享上来。。。做个修复实例)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2010-8-29 12:25:47 | 显示全部楼层
忘了说了,我的版本是7.7版...

出0入0汤圆

发表于 2010-9-17 08:11:28 | 显示全部楼层
楼主能否把仿真传一下

出0入0汤圆

发表于 2010-11-6 10:58:50 | 显示全部楼层
帮顶一个!!!

出0入0汤圆

发表于 2010-11-23 08:22:14 | 显示全部楼层
回复【楼主位】xiaowei061
-----------------------------------------------------------------------

(原文件名:1.JPG)


(原文件名:2.JPG)

出0入0汤圆

发表于 2010-11-23 08:25:55 | 显示全部楼层
1.jpg为8259中断仿真,但CPU不能接收中断类型号?请高手指导!
//设置中断失量表
void set_int(unsigned char int_no, void * service_proc)
{ _asm
    { push es
      xor ax, ax
      mov es, ax
      mov al, int_no
      xor ah, ah
      shl ax, 1
      shl ax, 1
      mov si, ax
      mov ax, service_proc
      mov es:[si], ax
      inc si
      inc si
      mov bx, cs
      mov es:[si], bx
      pop es
    }
}
//中断处理函数
void _interrupt _far int_8259(void)
{
      char i,j,k;
      for(k=0; k<5;k++)
      {
      outp(ADR_273,0x00);
      for(i=0; i<120;i++){for(j=0; j<200;j++){}}
      outp(ADR_273,0xff);
      for(i=0; i<120;i++){for(j=0; j<200;j++){}}
        }
      outp(ADR_8259A,0x20);//OCW2,send EOI
}
void init_inttab(void)
// 在中断失量表添加40h号中断失量
{ set_int(0x40, (void *)&int_8259);
}

出0入0汤圆

发表于 2010-11-23 08:31:01 | 显示全部楼层
2.jpg 为查询方式编程,发完查询命令0x0c8259 的isr为什么不变为1,查询命令字标志位也不置位?
   while(1)
     {
     do{
      delay(100);     
      imr=inp(ADR_8259A+2);//直接读IMR
      outp(ADR_8259A,0x0a);//读IRR命令字
      irr=inp(ADR_8259A);
      outp(ADR_8259A,0x0b);//读ISR命令字
      isr=inp(ADR_8259A);
      outp(ADR_8259A,0x0c);//查询命令字
      irq=inp(ADR_8259A);      
      }
      while(!(irq&0x80));
     }

出0入0汤圆

发表于 2013-1-10 19:37:54 | 显示全部楼层
"暂时未与处理器配合使用"

楼主后来测试过没啊?
我发现8086取的中断号是最后一次出现在总线上的数据, 而不是自己在8259上设置的...
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 15:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表