微机原理 您所在的位置:网站首页 icloud备份要锁屏吗 微机原理

微机原理

2023-12-14 03:54| 来源: 网络整理| 查看: 265

目录 前言【1】定时处理方法1、定时的方法:2、定时和计数器 【2】8253计数/定时器1、特点:2、芯片引脚以及电路:3、连接方式:4、工作原理:5、寄存器配置a、初始化操作(三个通道单独初始化)b、读出命令c、GATE的作用d、工作方式配置[1]方式0 计数结束中断[2]方式1 可编程单稳脉冲[3]方式2 频率发生器(分频器)[4]方式3 方波输出(周期性方波输出)[5]方式4 软件触发选通[6]方式5 硬件触发选通特点总结 【3】8253计数/定时器与系统总线的接法与最小系统相连与最大系统相连与PC机相连 总结

前言

定时器可以理解为一个特殊的中断。计数器和定时器其实只是功能上的不同以及度量单位的不同,定时器里面肯定是有计数的。

【1】定时处理方法 1、定时的方法:

1、软件定时方式(不是很准确,会被其他中断打断计数过程) ■CPU干预 ■指令执行时间作间隔 2、不可编程的硬件定时方式(就像保险丝熔断一样,并不是由程序控制的) ■方式固定 ■硬件设定参数 3、可编程的硬件定时方式 ■程序设定、程序控制 ■中断.

2、定时和计数器

区别:对不同信号的计数 定时器:对时钟信号进行计数,所计数的脉冲具有周期性 计数器:对外部脉冲进行计数,所计数的脉冲周期性、非周期性都可能呈现。 计数和及时本质是相同的,他们都是对一个输入脉冲进行计数,如果输入脉冲的频率一定,那么记录脉冲的个数与所需的时间是一一对应的关系。例如输入脉冲频率为2Mhz,那么计数2x10 6

也就是1秒

【2】8253计数/定时器 1、特点:

1、可编程(工作方式/计数值) 2、三个独立的计数器通道 3、对初值进行减1计数 4、二进制/BCD计数初值 5、计数对象的最高频率为2MHz

2、芯片引脚以及电路:

由引脚可以看出,数据位是8位的,也就是说不能超过255;如果计数值超过255要分两次写。 读写控制电路以及三个计数器通道:

CLK(输入时钟) OUT(输出时钟) GATE(控制门):高电平有效,是计数器的开关 访问8253的信号由两组产生: 1、从十六根总线拿出两个接A0、A1 ,进行端口寻址:00:通道0、01:通道1、10:通道2、11:控制寄存器 2、CS可以拿另外14根(部分或者全部)外加一些逻辑电路构成CS片选信号

3、连接方式:

连接方式 注意,控制寄存器是不可以读的。

4、工作原理:

控制寄存器:决定工作模式(定时还是计数) 状态寄存器:决定工作状态 初值寄存器:计数的初值 计数输出寄存器:CPU从中读当前的计数值 计数器:执行计数操作,CPU不能访问 寄存器 图 工作原理:对CLK信号进行减1处理 首先,CPU把控制字写入控制寄存器,计数初始值写入初值寄存器。 计数从初值开始,每当CLK信号出现一次,计数值减1,当计数值减到0,从OUT段输出规定的信号。 CLK信号出现,计数器是否减1,由门控制信号GATE决定。 CLK是计数输入信号,计数器对CLK端出现的脉冲个数进行计数: CLK端可以输入外部事件 CLK端可以介入固定频率的时钟信号,从而实现计时。 OUT信号在计数结束时发生变化: 可将OUT作为外部设备的控制信号 可将OUT作为向CPU申请中断的信号 CPU可以从计数寄存器独处当前计数值,读前应向控制寄存器发出锁存信号 定时/计数器初值的计算: 定时时间=时钟脉冲周期 x 预置的计数初值 定时频率=时钟脉冲频率 / 预置的计数初值

5、寄存器配置

控制寄存器

a、初始化操作(三个通道单独初始化)

1、写入控制字 选择计数通道 设置工作方式 初值的访问方式 确定初值的数制(二进制/BCD) 计数器清零、OUT初始化 2、写入初值 例题1:设三个计数器的CR/OI端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器0,工作模式2,CR/OL仅 使用低8位,=初值为100,计数值使用二进制 分析: 1、根据要求配置控制寄存器:0001 x100,这里x我们认为是0,所以配置字为14H 2、计数值100转为16进制:64H

MOV AL, 14H OUT 73H, AL MOV AL, 64H OUT 70H, AL

例题2:例:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。计数器1,工作模式1, CR/OL使用16位, 初值为1234,计数值使用BCD 分析: 1、根据要求配置控制寄存器:0111 0011,所以配置字为73H 2、计数值1234H,为16位,而输出一次只能是8位,所以,分高低位分批次输出

MOV AL, 73H OUT 73H, AL MOV AX, 1234H ;此时是BCD码的形式,所以是1234 OUT 71H, AL MOV AL, AH OUT 71H, AL b、读出命令

步骤: 1、发出锁存命令,使当前计数值锁存在OL中,而CE会继续计数 2、用IN语句读OL,获得当前计数值 例题:设三个计数器的CR/OL端口地址为70H、71H、72H,控制寄存器端口地址73H。读出计数器0的当前计数值,放在BX中 分析: 1、根据要求配置控制寄存器:0000 0000,0H 2、读出的值分为两次传出,先低位后高位

MOV AL, 0H OUT 73H, AL IN AL, 70H ;从OL读取低位字节 MOV BL, AL IN AL, 70H ;从OL读取高位字节 MOV BH, AL ;此时BX的内容就是计数器当前的计数值 c、GATE的作用

1

d、工作方式配置

在具体学习6种工作方式之前(第一次看是有点晕的),我先找了几篇博客,了解一下大致特点以及6种方式的区别。 8253的六种工作方式 8253与8255的工作方式 硬件触发什么意思?:触发与否与gate门的状态有关。

[1]方式0 计数结束中断

计数器写完计数值时,开始计数(软件触发),相应的输出信号OUT就开始变成低电平。当计数器减到零时,OUT立即输出高电平。 门控信号高电平时,计数器工作;为低电平时,计数器停止工作,计数值保持不变。 在计数器工作期间,如果重新写入新的计数值,计数器将按新写入的计数值重新工作。方式0

例题:向8253的A1A0= 11B的地址写入0011 0000B,则表示计数器0设置成方式0,并且采用16位时常数,假设时常数为1500,则计数器0的初始化程序段如下:

MOV DX,COUNTD; 写入8253的方式控制字 MOV AL,0011 0000B OUT DX,AL; MOV DX,COUNTA; 计数器0置入时常数 MOV AX,1500 OUT DX,AL XCHG AL,AH OUT DX,AL [2]方式1 可编程单稳脉冲

写入计数初值后,计数器开始工作。门控信号GATE上升沿有效,才开始工作(硬件触发),使输出OUT变成低电平,直到计数器减到0后,输出才变高电平。 在计数器工作期间,当GATE又出现一个上升沿时,计数器重新装入原计数初值并重新开始计数。 如果工作期间对计数器写入新的计数初值,则要等到当前的计数值记满回零且门控信号再次出现上升沿后,才按新写入的计数初值开始工作。 方式1

例题:向8253的A1A0= 11B的地址写入0101 0010B,则表示计数器1设置成方式1,并且采用低8位时常数,假设时常数为15,则计数器1的初始化程序段如下:

MOV DX,COUNTD; 写入8253的方式控制字 MOV AL,0101 0010B OUT DX,AL; MOV DX,COUNTA; 计数器1置入时常数 MOV AX,15 OUT DX,AL [3]方式2 频率发生器(分频器)

方式2是一种具有自动装入时间常数(计数初值N)的N分频器。 特点:一次设置计数初值,计数器可自动重复进行减“1”操作,减“1”计数回“0”,可以输出端输出一负脉冲信号。 写入计数初值后,GATE为高开始工作,计数器为0时,OUT输出一个时钟脉宽的负脉冲后自动回复高电平;同时自动重新装入原计数初值,反复计数。 如果工作期间对计数器写入新的计数初值,则要等到当前的计数值记满回零后,才按新写入的计数初值开始工作。 在计数器工作期间,当GATE为低则停止计数,待GATE恢复后计数器重新装入原计数初值并重新开始计数。 方式2

例题:向8253的A1A0= 11B的地址写入1001 0100B,则表示计数器2设置成方式2,并且采用低8位时常数,假设时常数为13,则计数器1的初始化程序段如下:

MOV DX,COUNTD; 写入8253的方式控制字 MOV AL,1001 0100B OUT DX,AL; MOV DX,COUNTC; 计数器2置入时常数 MOV AX,13 OUT DX,AL

这样在OUT2端就产生了CLK2的13分频信号,若是通过逻辑电路实现起来比较麻烦

[4]方式3 方波输出(周期性方波输出)

方式3工作方式与方式2基本相同,也具有自动装入时间常数(计数初值)的功能。 不同之处在于:工作在3方式,引脚OUT输出的不是一个时钟周期的负脉冲,而是占空比为1:1或近似1:1的方波。当计数值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平;为奇数时高电平比低电平宽一个时钟脉冲。 方式3

例题:向8253的A1A0= 11B的地址写入0011 0110B,则表示计数器0设置成方式3,并且采用16位时常数,假设时常数为2000,则计数器0的初始化程序段如下:

MOV DX,COUNTD; 写入方式控制字 MOV AL.0011 0110B OUT DX,AL MOV DX,COUNTA; 计数器置入时常数 MOV AX,2000 OUT DX,AL XCHG AL,AH OUT DX,AL

这样在OUT0端就产生了CLK0的2000分频的方波信号。

[5]方式4 软件触发选通

此方式设定后,输出OUT就开始变为高电平,GATE为高时,当写完计数值后开始计数。当计数器减到零后,OUT输出一个宽度为一个时钟脉冲的负脉冲,然后恢复高电平,并一直保持高电平。 门控信号GATE为高电平时,计数器工作,为低电平时,计数器停止工作,恢复为高电平后计数器又从原装入的计数初值开始减1工作。 在计数器工作期间,如果重新写入新的计数初值,不影响当前计数状态,仅当当前计数值记完后,计数值才按写入的计数值工作。 方式4

例题:向8253的A1A0= 11B的地址写入0101 1000B,则表示计数器1设置成方式4,并且采用低8位时常数,假设时常数为75,则计数器1的初始化程序段如下:

MOV DX,COUNTD; 写入方式控制字 MOV AL.0101 1000B OUT DX,AL MOV DX,COUNTA; 计数器置入时常数 MOV AL,75 OUT DX,AL [6]方式5 硬件触发选通

方式5的工作特点是由GATE上升沿触发计数器开始工作。 在方式5工作方式下,当写入计数初值后,计数器并不立即开始计数,而要由门控信号的上升沿启动计数。 在计数过程中(或者计数结束后),如果门控信号再次出现上升沿,计数器将从原装入的计数初值重新计数。 方式5

需要注意的地方: 1、处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高电平变低)才将预置寄存器的初值送到减1计数器。 2、方式0: 一般用作请求中断源. 方式1:一般用作输出固定时长的方波,比如定时器. 方式2差不多,只不过他n计数为零的时候,他只产生一次负脉冲,可作为一次信号,作为分频器使用.

特点总结

特点 特点 比较8254方式0与方式4、方式1与方式5的区别?

方式0与方式4 方式0 OUT 端计数过程中为低,计数值减为0时,输出变高 方式4 OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲. 方式1与方式5 方式1 OUT端输出宽度为n个CLK的低电平,计数值减为0时,输出为高 方式5 OUT 端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲

【3】8253计数/定时器与系统总线的接法

在已经设计好的8086系统总线的情况下,可以直接利用系统总线的信号与8253连接。

与最小系统相连

使用偶地址: 与最小系统相连 使用奇地址: 1、A0换成BHE’ 2、D7~ D0换成D15~D8

与最大系统相连

使用偶地址: 最大系统 使用奇地址: 1、A0换成BHE’ 2、D7~ D0换成D15~D8

与PC机相连

此时实际上和最大系统是相似的,不过由于系统中存在DMA机构,所以必须使AEN=0,此时为非DMA操作。由于数据位只有8位,不分奇偶。 1

总结

关于这方面的应用其实就是书后习题,明天专门写一章关于应用的笔记。 8253译码电路设计以及初始化编程讲解

Reference:

8253的六种工作方式 8253与8255的工作方式 关于6种工作方式更加详细的过程请参考《微机原理与接口技术.楼顺天版》P253——P263。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有