8253/8255/8259相关知识

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> hot3.png

1.8253

Intel 8253是IBM PC/XT机采用的定时控制接口.它既作为时间间隔定时器,也可以作为定时器.

        8253有三个独立通道的计数器,每个计数器可拥有6种工作方式.

        首先来看一看8253的内部原理图:

                143747_KODw_2481244.png

                143820_f0P9_2481244.png

        那么,8253是如何工作的?

        8253有6种工作方式.至于它具体采用哪一种工作方式,是由方式控制字来确定!

        对8253进行编程大概有这样的步骤:

        1设定工作方式     2设定计数初始值   3 (硬件启动)   4计数初值进入减1计数器   5每输入一个时钟计数器减1的计数过程   6 计数过程结束

        在掌握8253的工作方式时,我们重点掌握方式2和方式3:

        方式2是作为频率发生器(分频器)   方式3是方波发生器(用于产生方波信号)

        对8253的编程首先必须进行初始化操作,因为8253在加电后其状态是不确定的!即第一步是向8253写入控制字,确定工作方式.控制字格式:

        144547_3jBv_2481244.png

        例如:   mov al,30H      out 43H,al    ;43H为IBM PC/XT机中8253的控制口地址

        它表示计数器0,写入计数值时先写入低字节在写入高字节,采用方式0(单稳脉冲),以二进制方式计数.

        144909_CDxV_2481244.png

写入的计数初值如何确定?      技术初值  = 输入频率  /   输出频率

这是一个写入计数初值的案例:

        145021_HrJY_2481244.png

 

    下面我们来看一看8253的相关例题:

        1.设8253的输入CLK1=1000Hz,CS=10~13H,要求OUT1输出为高电平和低电平均为20ms方波。设计8253的控制程序。

        答:分析,输出方波,则采用方式3工作(记住),输入频率为1000Hz,输出频率为1000/(20+20)=25Hz.

得到计数初值为1000/25 = 40.

            编程:

            mov al,56h  ;01010110b

            out  13h,al  ;写入控制字

            mov al,40   ;写入计数初值

            out  11h,al

        2.设某应用系统中,系统提供一个1MHz的时钟信号接入8253的CLK,CS=320~323H,要求用8253产生10秒的定时信号。请设计该系统的软、硬件。

        答:输出频率为1秒0.1次,即1/10.而输入为1M,所以得计数初值为10M,因为10M>65535,只能采用级连方式.如下图:

            145949_aJsy_2481244.png

        

        当两通道以上方式连接后,若两通道都工作于2方式下,且对通道1的初值为N1,通道2的初值为N2,则对于级连后的8253而言,其初值为N=N1*N2;即OUT端输出的频率为Fo=Fi/(N1*N2);

        一般而言,为了减少二进制的计数误差,N1的值应尽可能的小。

 

 

 

 

2.8255

8255是一种可编程并行接口电路,其功能丰富,共有3个8位端口,并且有三种输入输出方式.

8255主要用于与外设进行数据交换,并将数据通过控制口发给CPU.

        这是8255的结构:

        150423_yGl4_2481244.png

对8255的编程,首先应该进行初始化,写入方式控制字.其中需要注意的是,PC口既可以作为数据接口也可以作为控制、状态字.对C口的位操作命令是通过控制口来实现的,也就是直接写入D0-D7.

数据读写主要是PA PB PC 与外设数据的读写操作.

        下面理解方式控制字和端口C的位控制字:

        150813_5YVM_2481244.png

        150839_TwPw_2481244.png

8255A总共有3种工作方式:

    基本输入输出方式      选通输入输出    双向选通输入输出

        151043_K1aD_2481244.png

        151240_SvZ0_2481244.png

        151319_rktS_2481244.png

 

3.8259

        8086系列机器采用中断向量机制.能够处理256个中断.用0~255区别.

        中断根据其中断源是产生于CPU内部还是外部可分为两类:内部中断和外部中断!

        如图:

        153022_U9Eq_2481244.png

        

 

        153143_Apsz_2481244.png

在实地址下,中断服务程序入口地址保存在中断向量表中,

        物理地址00000H,对应向量号从0开始

   依次每4个字节存放一个中断向量

        •含有16位段地址和16位偏移地址的逻辑地址

        •低字部分是偏移地址、高字部分是段地址

   256个中断占用1KB区域,形成中断向量表

8259中断控制器芯片中,有8个中断请求引脚,可管理8级中断,8259A可级联为64级中断.对用户而言,8259A提供了3个寄存器:

        IRR 中断请求寄存器    ISR 中断服务寄存器    IMR 中断屏蔽寄存器

        

首先看看8259A的芯片图:

        

154426_LzrA_2481244.png

        

IR0~IR7:从外设来的中断请求由这些引脚输入到8259A。

A0:地址线,用于寻址8259A的两个端口

INT:当8259A接到外设的中断请求,对CPU提出中断请求线,该引脚连接到CPU的INTR上。

INTA*:CPU接到中断请求后送回的中断应答信号。

CAS0~CAS2:主8259A与从8259A的级连线,对于主8259A该引脚为输出,从8259A为输入。

        154918_COA3_2481244.png

        这个图至少告诉了你为什么只能最大64级中断:

        155054_19O2_2481244.png

对于8259A的编程工作,需要分初始化编程(ICW)和操作命令编程(OCW)

    ICW和OCW命令格式有点复杂....应该不会考那么复杂吧?

        反正有4个ICW,3个OCW.

    对应写入方式:

        155743_YJSR_2481244.png

初始化命令字规定:

155819_1U5Z_2481244.png

ICW格式略

OCW可改变8259A的工作状态,写入顺序没有要求!

OCW命令字格式:略......

        

4.另外,74LS138的3-8译码原理也需要搞清楚:

152020_lJHw_2481244.png

如8259的芯片地址?

        A9 A8是 0 0,A7 A6 A5输出为1,即 0 0 1即可选中Y1.

        所以8259的起始地址是 00 0010 0000  终结地址是 00 0011 1111,即 020H ~ 03FH

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值