网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > 其他类别 > 正文

基于8259A芯片接口电路设计

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/06

鉴于大家对其他类别十分关注,我们编辑小组在此为大家搜集整理了“基于8259A芯片接口电路设计”一文,供大家参考学习

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

 

3.4 对部分代码的说明
 实验台上显示的外部结构图中我们增加了8259A的内部逻辑框图的展示,在这个编写上我们主要是运用把一幅整图分割开为几个等块,然后将我们需要的小的框图填充在分割好的整图里。运用       pDC->Rectangle(rx,ry,rx + rcx,ry + rcy);确定图的大小;运用pDC->MoveTo、pDC->LineTo确定之间连线的情况;运用pDC->TextOut(rx+2,ry+2,"ISR");或pDC->DrawText("ISR",CRect(rx,ry,rx + rcx,ry + rcy),DT_CENTER | DT_VCENTER | DT_SINGLELINE ) ;标记在小的框图上显示该框图指代的名称。其中在pDC->DrawText中,DT_CENTER是横排居中,DT_VCENTER是竖排居中,DT_SINGLELINE是只有单排文件的情况下,在这里的“或”不是单纯的满足其中一个就能实现的意思,而是需要同时满足这三个条件才能实现。
 
系统启动时,8259A被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW来实现的。系统初始化时,规定IRQ0和IRQ4中断源分别提供给实时时钟和PC微机联机的串口通讯,用户可以使用其余的中断源。在进入监控后,只有IRQ4中断源处于开启状态,其他中断源都被屏蔽了。
3.4.1     固定值的定义方式
根据8259A的功能和引脚我们知道,在该芯片中引脚1、引脚14、引脚27、引脚28都是固定值。即都是确定的响应信号。所以只需要将输入的信号值直接等价到各个对应的引脚上即可。
其程序代码大致为:
      int D8259::SetPin(int iPinNo , int iSigVal)
{
      int ret = 0 ;
      CString msg ;
      iSigVal = iSigVal ? 1 : 0 ;
 
      switch(iPinNo)
      {
      case 1:
             pinCS = iSigVal ;
             break;
      case 14:
             pinGND = iSigVal ;
             break;
      case 27:
             pinA0 = iSigVal ;
             break;
      case 28:
             pinVCC = iSigVal ;
             break;
      default :
             ret = -1;
      }
      return ret ;
}
3.4.2     与CPU之间的连接线定义方式
 8259A之所以能对CPU提出的中断做出响应或想CPU发出中断的申请,都是因为有INT和INTA这两根线与其CPU打交道。其中INT是8259向CPU的中断请求线,而INTA是CPU给出的中断响应线。是根据proINTA(pinINTA,iSigVal)而实现的。
在编写代码的时候,我们就了解到,该程序重点是8259A的执行原理和如何去执行计算机所提出的命令。
在8259A中其执行命令有两个下降沿。
这两个下降沿的大致走向如简图3-4所示:
                       图3-4 8259A执行响应的脉冲图
 在第一个 INTA负脉冲到达8259时,8259完成以下三项工作:
a.使IRR(中断请求寄存器)的锁存功能失效。这样一来,在IR7~IR0上的请求信号就不会被8259接收。直到第二个INTA负脉冲到达8259时,才又使IRR的锁存功能有效。
b.使ISR(服务中寄存器)中的相应位置1。
c.使IRR中的相应位清0。
第二个INTA负脉冲到达8259时,8259完成以下工作:
a.将中断类型码(ICW2中的值)送到数据总线上,CPU将其保存在“内部暂存器”中。
b.如果ICW4(它设定级中断联方式之特定完全嵌套方式,)中设置了中断自动结束方式,则将ISR的相应位清0。
其代码编写大致如下:
int D8259::proINTA(int pre,int cur)//pre是前一信号值,cur是当前信号值
{
int INTA1=0;
int INTA2=0;
//int ret=0;
if(pre==1 && cur==0 && idxINTA==0)      //第一个INTA到来
{
      INTA1=pinINTA;
      ISR=hpLevel;
      IRR=0;
idxINTA =1 ;
}
if(pre==1 && cur==0 && idxINTA == 1)    //第二个INTA到来
{
INTA2=pinINTA;
if(OCW2 & 0x20)                         //中断结束
{
if(OCW2 & 0x40)                         //指定EOI方式
{
ISR=(OCW2 & 0x7;                        //将此值赋给ISR的相应位
}
}
3.4.3     判断优先级的引脚设定
 优先级判断是个相当复杂的过程。其相关的引脚是引脚18到引脚25,根据中断优先级分析器的工作原理,优先级的判断过程首先,由8个“与门”逻辑选出参加中断优先级排队的中断请求级,即8位IRR与8位IMR各位分别送入“与门”输入端,只有当IRR位置 “1”(有中断请求)和IMR位置“0”(开放中断请求)同时成立时,相应“与门”输出才为高电平,并送到优先级编码器的输入端参加编码。
   其次,优先级编码器对参加排队的那些中断优先级中进行编码,并从中选出当前最高优先级的代码,作为下一步比较的一个输入(A2 A1 A0)。
   最后,把来自ISR的当前正在服务的优先级(B1 B2 B0)与当前请求的最高优先级(A2 A1 A0)一起送入比较器进行比较,当比较器A>B端输出有效时,并且只要当前存在非屏蔽的中断请求,“或门”输出有效时,8259A即向CPU提出中断请求INT。
 在编程过程中我们运用的是“isINT()”来对输入的信号进行判断,同时判断出哪一个输入的信号其优先级是最高的。根据其判断过程我们得到编程过程大致为:
int D8259::isINT(int IR , int pre, int cur)   //判断是否产生中断请求信号,实现屏蔽、优先级判断等
{
      CString msg ;
     
      int ret = 0 ;
      int isReq = 0 ; //表示有无中断请求
      if(InitStep == 5 )    // 表明正常进行相关的中断判断。
}
 在这里我们要知道InitStep==5表示的是已经对8259A初始化完毕,而InitStep==?是有不同意义的。
 当InitStep==0时,表示未初始化;而InitStep==?(1、2、3、4)时表示初始化中的某一步骤;InitStep==5时才表示完成了完整的初始化过程,才能进行中断判断。    
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

  • 下一篇资讯: Windows进程管理器的设计
  • 原创论文

    设为首页 | 加入收藏 | 论文首页 |原创论文 |
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师