8253的控制字格式
微机第9章8253
0 0----选计数器0
0 1----选计数器1 1 0----选计数器2 1 1----无意义
写入控制口,地址A1A0=11
2、计数初值的写入
若规定只写低8位,则写入的为计数值的低8位, 高8位自动置0; 若规定只写高8位,则写入的为计数值的高8位, 低8位自动置0; 若是16位计数值,则分两次写入,先写低8位, 再写入高8位。
计数值写入计数器各自的 计数通道(端口地址)
注: ① 写入控制字后,所有控制逻辑电路复位, 输出端OUT进入初始状态。 ② CPU向8253写入的计数初值,要在CLK端输入一个 正脉冲后才能被真正装入指定通道(若在此CLK下降 沿之前读计数器,则其值是不定的)。 之后再次输入时钟脉冲(CLK)才开始计数,且每次 在脉冲的下降沿减1计数。 即:写入计数初值后,经过一个CLK,8253才开始计 数。
④ 当GATE变为低电平时计数 停止,再变为高电平时计数继 续进行。 ⑤若计数过程中重新送入初值, 则按新值重新计数。
(2)方式1——可重复触发单稳触发器
WR CLK GATE OUT 3 2 1 0 FFFE 3 2 方式1时序图 CW N=3
③计数过程中,再次给通道写入时间 ①写入CW后OUT变为高电平, GATE 常数,不影响现行操作过程,GATE再 上升沿触发后,OUT变为低并开始计数, 次触发后才按新的时间常数操作。 归零时OUT变为高电平。 ④计数过程中,GATE触发沿提前到来, ②GATE再来一次上升沿使OUT为低, 在下一个CLK的下降沿,计数器开始重 新计数,这将使输出单稳脉冲比原先 计数器以初值重新计数。 设定的计数值加宽。 可重复触发——当计数归零后,不用再次送计数值,只要给它触发脉冲,即 可产生一个同样宽度的单稳脉冲输出。
《微机原理与接口技术》第九章8253
二、8253的内部结构
数据总线 缓冲器 读/写控 制电路 计数通道
通道控制 寄存器
三、 8253的管脚分配
控制线
数据线 通道选择
通道管脚
四、 8253的编程
8253只有一个控制字,8253的一个方式 控制字只决定一个计数通道的工作模式。 8253 的控制字格式如图所示。共分为 4 部 分,通道选择、计数器读 / 写方式、工作 方式和计数码的选择。
第9章 可编程接口芯片
可编程接口概术 可编程定时/计数器接口芯片8253
可编程接口概术
一个简单的具有输入功能和输出功能的 可编程接口电路如下图,它包括一个输入接口, 其组成主要是八位的三态门;一个输出接口, 其组成主要是八位的锁存器;另外还有八位的 多路转换开关及控制这个开关的寄存器FF。
9. 1 可编程定时/计数器接口芯片8253 一、功能
定时和脉冲信号的处理与接口是完全有别于 并行信号的,其特点是信号形式简单但需要连 续检测,下面介绍的INTEL8253可编程定时/ 计数器就是可以实现所要求这方面功能。8253 内部有3个独立的16位定时/计数器通道。计 数器可按照二进制或十进制计数,计数和定时 范围可在1—65535之间改变,每个通道有6种 工作方式,计数频率可高达2MHz以上。
4、方式3——方波发生器 方式2虽然可以作分频电路,但其输出 是窄脉冲,如果是方波,就只有选方式3
5、方式4——软件触发方式 方式4在工作过程中有以下特点:
a、 门控信号GATE为高电平,计数器开始减 1计数,OUT维持高电平; b、 当计数器减到0,输出端OUT变低,再经 过一个 CLK 输入时钟周期, OUT 输出又变 高。
解:1、电路。 需要两个通道,一个作为计数,选用通道0。另一 个产生1KHz信号,选用通道1。工作原理如下,传感 器电路把物理事件转换为脉冲信号输入到通道0计数, 当记录10000个事件后,通道0计数器溢出,GATE端输 出高电平,这时通道1开始工作,产生1KHz信号推动喇 叭发音。
微机8088第九章8253
示例4 方式3: 例:计数器工作模式3,计数器初值15,时钟脉冲 频率为2MHz,确定OUT端输出方波的特性。
解:TCLK=1/2MHz=500ns 计数器初值15为奇数,输出分频波高电平宽度 TCLK(N+1)/2=4s 输出分频波低电平宽度 TCLK(N-1)/2=3.5s
示例4
例:计数器0工作模式4,初始化计数器,使装入计数器10 s后 产生选通信号(设时钟频率2MHz,8253端口地址为50H~53H)。 解:n+1=T/ TCLK=10/0.5=20 n=19=13H MOV AL, 18H OUT 53H, AL MOV AL,(3)
例. 以2MHz输入8253,实现每5秒定时中断(设8253 端口地址40H~43H) 分析:8253最大初值65536,CLK=2MHz可实现最大 时间间隔65536/(2106)=32.769ms 结论:需要两个计数器串联,一个计数器的输出作为 另一个计数器的输入
示例5(3)
计数器1:模式2,OUT1每5ms 输出一个脉冲 初值(2106)/(1/0.005)=10000
四、8253的编程结构
8253共有4个端口地址,在CS=0的前提下: A1A0=00,选中0#计数器 A1A0=01,选中1#计数器 A1A0=10,选中2#计数器 A1A0=11,选中控制寄存器
8253 的初始化及编程_微型计算机原理及应用教程(第2版)_[共2页]
276
表9-8 253读/写操作及端口地址
9.4.3 8253的初始化及编程
每个计数器可通过输入/输出指令对其进行访问。
8253有两种工作状态,即计数模式、定时模式;有两个计数方式,即按二进制计数、按十进制(BCD码计数);还有6种工作方式,即方式0、方式1、方式2、方式3、方式4、方式5。
1.8253的初始化
使用8253必须首先进行初始化编程,初始化编程的工作有两点:一是向控制寄存嚣写入方式控制字,以选择计数器,确定工作方式,指定计数器计数初值的长度和装入顺序以及计数初值的码制;二是向已选定的计数器按方式控制字的要求写入计数初值。
如前所述,在有些方式下,写入计数初值后此计数器就开始工作了,而有的方式需要外界门控制信号的触发启动。
在初始化编程时,某一计数器的控制字和计数初值是通过两个不同的端口地址写入的。
任一个计数器的控制字都写入控制字寄存器(地址总线低3位A2A1A0=110),由控制字中的D7D6来确定是哪一个计数器的控制字;而计数初值是由各个计数器的端口地址写入的。
初始化编程的步骤如下。
(1)写入计数器控制字,规定计数器的工作方式。
(2)写入计数初值。
①若规定只写低8位,则写入的为计数初值的低8位,高8位自动置0。
②若规定只写高8位,则写入的为计数初值的高8位,低8位自动置0。
③若是16位计数初值,则分两次写入,先写入低8位,再写入高8位。
【例9-18】 8253初始化编程举例。
若要用计数器0,工作在方式1,按二—十进制计数,计数初值为5080H,则初始化编程的步骤如下。
(1)确定计数器控制字,控制字格式如下。
微机原理-8253
MOV AL,0B5H; OUT 07H,AL; MOV AL,00H; OUT 06H,AL; MOV AL,05H; OUT 06H,AL;
精品资料
方式(fāngshì) 3 —— 方波发生器
• 方式3与方式2的工作类似,输出(shūchū)固定频率的 脉冲。 • 计数器具有“初值自动重装”的功能。 • 工作特点如下: • 当计数值为 偶数 时,则输出(shūchū)对称方波。 • 前 N/2 计数期间 输出(shūchū)高电平,即 OUT = 1; • 后 N / 2 计数期间输出(shūchū)低电平,即OUT = 0; • 当计数值为 奇数 时,前 (N+1) / 2 计数期间, • 输出(shūchū)高电平,即 OUT = 1, • 后(N-1) / 2 计数期间输出(shūchū)低电平,即 OUT = 0 。
精品资料
方式0 —— 工作(gōngzuò)方式的特点
1、写入控制字后,OUT= 0 为低电平,只有当 GATE = 1 时, CLK 端来一个计数脉冲,计数器才进行减一计数。 当计数值减为 0 时,计数全过程结束,计数器停止计数, OUT =1为高电平。
2、如果使计数器重新开始计数,需再次写入计数字值,当新计数值 写入后, OUT 端电平才能由高变低。
•
OUT =1 不变。
•
当计数值减为1 时,OUT = 0 ,经过一个 CLK时钟
•
周期后, 计数器自动启动,继续重复计数过程。
• OUT =0 的时间是一个 CLK 周期。
精品资料
方式(fāngshì)2 ——频率发生器
2、在计数过程中,可以改变计数值。如果在计数过程中, 重新写入某一计数值,在写入新计数值后,不影响正在 进行的计数过程,待计数过程完成后,在下一个计数过 程开始时,按新的计数值,重新开始作减一计数。
8253工作方式以及应用举例
第27课 8253工作方式以及应用举例8253的六种工作方式,8253的实际应用举例。
本课主题:教学目的:掌握8253六种工作方式的特点以及使用方法,通过实际应用举例强化8253的使用方法。
教学重点:8253的硬件连接和软件初始化方法。
教学难点:8253的在系统中的应用。
授课内容:8253的每个通道都有6种不同的工作方式,下面分别进行介绍。
1.方式0--计数结束中断方式(Interrupt on Terminal Count)2.方式1--可编程单稳态输出方式(Programmable One-short)3.方式2--比率发生器(Rate Generator)4.方式3--方波发生器(Square Wave Generator)5.方式4--软件触发选通(Software Triggered Strobe)6.方式5--硬件触发选通(Hardware Triggered Strobe)由上面的讨论可知,6种工作方式各有特点,因而适用的场合也不一样。
现将各种方式的主要特点概括如下:对于方式0,在写入控制字后,输出端即变低,计数结束后,输出端由低变高,常用该输出信号作为中断源。
其余5种方式写入控制字后,输出均变高。
方式0可用来实现定时或对外部事件进行计数。
方式1用来产生单脉冲。
方式2用来产生序列负脉冲,每个负脉冲的宽度与CLK脉冲的周期相同。
方式3用于产生连续的方波。
方式2和方式3都实现对时钟脉冲进行n分频。
方式4和方式5的波形相同,都在计数器回0后,从OUT端输出一个负脉冲,其宽度等于一个时钟周期。
但方式4由软件(设置计数值)触发计数,而方式5由硬件(门控信号GATE)触发计数。
这6种工作方式中,方式0、1和4,计数初值装进计数器后,仅一次有效。
如果要通道再次按此方式工作,必须重新装入计数值。
对于方式2、3和5,在减1计数到0值后,8253会自动将计数值重装进计数器。
8.2 8253的应用举例一、8253定时功能的应用例子1(用8253产生各种定时波形在某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。
可编程定时计数器8253的方式控制字及应用
第,期
周祥萍, 等: 可编程定时 ! 计数器 *+,- 的方式控制字及应用
・ ・ 9C
在计算机系统中使用的定时 ! 计数器归纳起来 有三大类: 软件定时 ! 计数器、 硬件定时 ! 计数器及可 编程定时 ! 计数器。软件定时 ! 计数器是实现系统定 时控制或延时控制的最简单的方法, 不需要外加硬 件电路并且定时精确, 但是 "#$ 开销大, 而且不能 响应中断, 否则定时不准确。硬件定时 ! 计数器是指 由硬件电路来实现的定时与计数, 对于较长时间的 定时一般用硬件电路来完成, 成本低, 使用方便, 缺 点是一旦元件设定就不能改变, 电路调试比较麻烦, 电阻电容长期工作, 会造成电路老化, 影响定时准确 度和稳定性。可编程定时 ! 计数器是一种软硬件结 合的定时 ! 计数器, 将定时 ! 计数器电路集成到一个 芯片上, 由 "#$ 通过程序设置其工作方式和计数初 值。 %&’() 公司的 *+,- 就是一种常用的可编程定时 ! 计数器。
$
引言
电力网的线损, 除与电源布局、 网络结构、 负荷分 布有关外, 更与运行管理有着直接关系。因此, 线损 率是衡量电力系统完善化程度和运行管理水平高低 的一项综合性技术经济指标。近年来随着管理水平 的提高和节能意识的增强, 如何利用无功补偿降低配 电线路损耗一直作为一个课题被广泛地进行研究。
!
无功功率补偿的必要性
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (!) 确定计数初值。根据设计要求扫描键盘的 &>0 *A, !#4 动作周期为 !$ 23, 则频率为 $ . !/45。 >?% !)4, *A , 即 , &>0 *A =#4 ! 6 " 78/$ 9 " :;<$ 6 !$ 9 $ . ! 6 !$$ =#4 (-) 选择工作方式。由于系统每隔 !$ 23 完成 ! >?% !$4, *A 次动作, 则扫描键盘的动作频率为 !$$45, 可选用方 在这段程序中, 先向 +-") 的控制口 (口地址为 式 - 来实现。当 +-") 定时器工作在方式 - 时, 在写 输出方式控制字, 然后将通道 $ 的计数 初 值 !)4) 写入口地址为 的通道 入控制字与计数初值后, 定时器就启动工作, 每到 =#4 !$4 $ 计数器中。这样, 每隔 !$ 23, 即计数器减到 ! 时, 输出端 >?%$ 输出 从 !$ 23 时间, >?%$ 的输出就向 @C? 申请 ! 次中断, 一个 @AB 周期的低电平, 向 @C? 申请中断, 完成键 而实现了应用的需求。 盘扫描, 同时按原设定值重新开始计数, 实现了计数 - 结束语 值的自动重装。 根据上述要求, 可确定 +-") 定时器的控制字为 可编程定时 9 计数器 +-") 在计算机系统中, 尤 其是在工业测控系统中有着广泛的应用。在应用 , 即 。该控制字表示选择 定时器 $$$!$!$$D !#4 +-") 中, 重点是根据应用的要求, 合理选择工作方式, 计 的通道 $; 读写格式为先低字节, 后高字节; 工作方 算初值, 并编写初始化程序段。 式 -; 选用二进制计数。 ()) 程序实现。+-") 的初始化程序段如下:
8253微机原理
00010000
特点: 1. 计数器只计一遍。当计数到 0 时,并不恢复计数初值,不开始重新 计数,且输出一直保持为高。只有在写入下一个计数值时,OUT 变低,开始新的计数。
特点: 2. 在计数过程中,可由门控信号GATE控制暂停。GATE=0, 计数暂停, GATE变高后,接着计数。
特点: 3. 在计数过程中,可改变计数值。在写入新的计数之后,计数器按新 的值重新开始计数。
开始计数),OUT输出端变低。在整个计数过程中,OUT 都维持为低,直到计数 为 0 时,输出变为高,输出一个单脉冲。
特点: 1. 若设置的计数值为N,则输出的单脉冲宽度即为N个输入脉冲间隔。 2. 当计数到 0 后,可再次由外部触发启动,输出一个同样宽度的 单拍脉冲,而不用再次送计数值。
特点: 3. 在计数过程中,外部可发门控信号进行再触发,在触发脉冲上升沿 后的下一个CLK脉冲的下降沿,计数器将重新开始工作。
0
0 1
1
1 ×
0
0 ×
1
1 ×
0
1 ×
8253的控制字
◆ 8253控制字可以选择计数器、工作方式、计数数制( 2#或 10#——BCD码),以及计数器的读/写方法等。 ◆ 8253控制字格式(8位) :
D7 SC1 D6 SC0 D5 RW1 D4 RW0 D3 M2 D2 M1 D1 M0 D0 BCD
8253操作的控制逻辑
CS 0 0 0 0 0 0 RD 0 0 0 0 1 1 WR 1 1 1 1 0 0 A1 0 0 1 1 0 0 A0 0 1 0 1 0 1 操作说明
计数器0→数据总线 计数器1→数据总线 计数器2→数据总线 非法状态 数据总线→计数器0 数据总线→计数器1 数据总线→计数器2 数据总线→控制寄存器 D7~D0呈高阻状态
硬件六 8253产生方波
• 实验内容
采用8253A芯片的通道2,工作在方式3(产生方波 方式),输入时钟为1MHZ,输出1KHZ的方波,用示波 器观察波形。
• 线路连接8ຫໍສະໝຸດ 53A芯片的CLK2插孔连接脉冲输出1MHZ; GATE2插孔连接+5V(VCC); OUT2插孔连接示波器通道1。
• 端口地址
通道0:48H;通道1:49H;通道2:4AH;控制字:4BH
6、点击示波器窗口中的“开关”按钮,显示波形
Page 4
Page 1
8253控制字格式
D7 D6 D5 D4 D3 D2 D1 D0
1:BCD计数 0:二进制计数 工作方式选择: X11:方式3
计数器选择: 10 :计数器2 计数长度选择: 11:两个字节
B6H: 1
0 1 1 0 1 1 0
Page 2
CODE SEGMENT ASSUME CS:CODE ORG 3000H START: MOV DX,004BH MOV AL,0B6H OUT DX,AL MOV DX,004AH MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL JMP $ CODE ENDS END START
;控制字端口地址 ;写控制字 ;通道2端口地址 ;写计数值低字节 ;写计数值高字节 时钟信号 计数值
Page 3
方波频率=
• 观察波形的操作流程:
1、程序载入实验箱,并正常运行;
2、按“ESC”键,至提示窗口消失(不能按复位键
3、然后点击“示波器”按钮,打开示波器窗口; 4、实验箱的数据线连接至串行数据通信接口; 5、关掉主程序窗口;
微机原理填空选择判断题库
填空1.微型计算机是指以微处理器为核心,配上存储器、输入输出接口电路及系统总线所组成的计算机。
2.微处理器是由一片或几片大规模集成电路组成的具有运算器和控制器功能的部件。
3.8086CPU从功能上讲,其内部结构分为执行单元EU和总线接口单元BIU两大部分。
4.1KB=1024字节,1MB=1024 KB,1GB=1024 MB。
5.带符号数有原码、反码和补码三种表示方法,目前计算机中带符号数都采用补码形式表示。
6.(101110.11)2=(46.75)10=(2E.C)167.已知[ X]补=81H,则X=-127。
8.假设二进制数A=10000110,试回答下列问题:1)若将A看成无符号数则相应的十进制数是_134_。
2)若将A看成有符号数则相应的十进制数是_-122_。
3)若将A看成BCD码则相应的十进制数是_86_。
9.从_奇_地址开始的字称为“非规则字”,访问“非规则字”需_两_个总线周期。
10.8086CPU数据总线是_16_位,对规则字的存取可在一个总线周期完成,对非规则字的存取则需要_两_个总线周期。
11.8086CPU的地址总线有20位,可直接寻址1MB的存储空间;在独立编址方式下,可寻址_65536_个I/O端口。
12.若DS=6100H,则当前数据段的起始地址为61000H ,末地址为 70FFFH 。
13.动态存储器是靠电容来存储信息的,所以对存储器中所存储的信息必须每隔几毫秒刷新一次。
14.8086 CPU复位后,执行的第一条指令的物理地址是FFFF0H。
15.8086CPU系统的逻辑地址由段地址和偏移地址组成,物理地址的求法是:段地址×16+偏移地址。
16.堆栈是以先进后出的原则存取信息的一个特定存贮区。
8086的堆栈可在1MB 存贮空间内设定,由堆栈段寄存器SS和堆栈指针SP 来定位。
堆栈操作是以字为单位。
17.转移指令分为条件转移指令和无条件转移指令,条件转移指令的转移目的地址只能是短标号,即转移范围不能超过_-128~+127_字节。
8253举例解析
12
3. 8253计数通道的级联应用
例3
已知某8253占用I/O空间地址为320H~323H, 如下图所示,输入其 CKL1 端的脉冲频率为 1MHz, 要求用8253连续产生10秒的定时信号。 分析:8253的一个通道的最大计数范围为65536,本例 中要求输出10秒定时信号,则计数初值N=10/10-6=107, 超过了8253一个通道的最大计数值,此时可以使用2个 8253通道级连方式来实现。若级连前2个通道的初值为 N1和N2,则级连后作为一个整体的计数值为N=N1×N2。
10
A0 A1 外部事件产生
A3~A9
译码 电路
8253用于外部事件的计数
11
根据要求,可以选择方式0来实现,计数初值N=100。 8253初始化程序段如下:
MOV DX,203H MOV AL,10H OUT DX,AL MOV DX,200H MOV AL,64H OUT DX,AL ;设置计数器通道0的地址 ;计数初值为100 ;设置方式控制字地址 ;设定通道0为工作方式0,二进制计数,只写入 ;低字节计数值
mov al,BYTEH out dx,al
1
编程命令
例1:选择2号计数器,工作在3方式,计数初值为 533H,采用二进制计数,其初始化程序为:
mov dx,307h out dx,al mov dx,306h mov ax,533h out dx,al mov al,ah out dx,al
;设置方式控制字 方波发生器 ;设置计数初值 ;计数初值为533H ;先送低字节 ;后送高字节
断,CPU在中断服务程序中完成数据采集,同时按
原设定值重新开始计数,实现了计数值的自动重装。
7
(2) 确定计数初值
可编程定时-计数器8253
接口技术
•8086/8088中断响应周期时,CPU的INTA引脚的 正确功能是—————— A.输出一个负脉冲,CPU从D7~D0读入中断类型码 B.输出两个负脉冲,在第二个负脉冲期间,CPU 从A7~A0读入中断类型码 C.输出两个负脉冲,在第二个负脉冲期间,CPU 从D7~D0读入中断类型码
D.输出一个负脉冲,CPU从A7~A0读入中断类型 码
接口技术
7.1.4 中断嵌套 当CPU执行优先级较低的中断服务程序时,允许响 应比它优先级高的中断源请求中断,而挂起正在处 理的中断。 (1)屏蔽同级和较低级中断请求。 (2)在保护现场、屏蔽同级和较低级中断完成后, 用STI指令来开中断。 (3)中断服务程序结束后,恢复现场前,用CLI指 令来关中断,然后才能恢复现场。 (4)恢复现场后,CPU应该重新开放中断,以便允 许任何其它等待着的中断请求有可能被CPU响应。
CNT2:标准定时,定时时间为1S。
8253
D7~D0
系
A1
统 总
A0 IOR
IOW
线
A2~A15
地址 译码器
D7~D0
CLK OUT
2 2
A1 A0
CLK 1 OUT 1
RD WR
CLK 0
OUT 0 CS GATE 1
GATE 2 GATE 3
送8259的IR 2端 2.5MHz 1kHz方波 外部事件
接口技术
计数结束时,输出一个时钟周期的负脉冲;
计数中写入新初值,待GATE信号重新启动之后 才置入计数器使用。
WR
CLK
GATE OUT
CW N=4
4 32 1 0 图7.19 方式5 的波形
接口技术
例7.5 IBM PC/XT主机板上有一片8253用作计 数/定时电路,各计数器及控制寄存器所占地 址及工作情况如下:
8253的初始化编程
8253的初始化编程8253的初始化编程内容:一是首先向控制寄存器写入控制字,以选定计数通道(三个中之一),规定该计数的工作方式和计数方式以及计数初值的长度和装入顺序(初值写入方式);二是向已选定的计数器按控制字的要求写入计数初值.8253初始化的要求:(1)对每个计数器,控制字必须写在计数值之前.这是因为计数器的读/写格式由它的控制字决定.(2)计数值必须按控制字所规定的格式写入.若控制字规定只写8位,只需写入一次(8位)计数值即可(规定写低8位则高8位自动置0,规定写高8位则低8位自动置0);规定写16位时必须写两次,先写低8位,后写高8位.当初值为0时,也要分两写入,因在二进制计数时,“0”表示65336,在BCD码计数时“0”表示10000=104.(3)对所有方式计数器都可以在计数过程中或计数结束后改变计数值,重写计数值也必须遵守控制字所规定的格式,并且不会改变当前计数器的工作方式.(4)计数值不能直接写到减1计数器中,而只能写入计数值寄存器中,并由写操作WR之后的下一个CLK脉冲将计数值寄存器的内容装入减1计数器开始计数.(5)初始化编程必须明确各个计数器的控制字和计数值不是写到同一个地址单元.各个计数器的控制字各自独立确定,但它们都写入同一个端口地址(控制字寄存器)中,各个计数器的计数值则根据需要独立确定并写入各自计数器的相应寄存器中.例1:设8086系统中8253的三个计数器的端口地址为060H,062H和064H,控制口地址为066H,要求计数器0为方式 1,按BCD计数;计数初值为1800D,计数器1为方式0,按二进制计数;计数初值为1234H,计数器2为方式3,按二进制计数;当计数初值为065H时,试分别写出计数器0,1,2的初始化程序.计数器0的初始化:计数0的控制字:00100011B=23HMOV AL,23H ;计数器0的控制字OUT 0 66H,AL ;控制字写入8253的控制器MOV AL,18H ;取计数初值的高8位,低8位00可不送OUT 060H,AL ;计数初值送计数器0端口计数器1和初始化:计数器1的控制字:01110000B=70HMOV AL,70H ;计数器的控制字:方式0,送高8位和低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制器MOV AL,034H ;取计数初值的低8位OUT 062H,AL ;计数初值的低8位,写入计数器1端口MOV AL, 12H ;取计数初值的高8位OUT 062H,AL ;计数初值的高8位写入计数器1端口计数器2的初始化:计数器2的控制字:10010110B=96HMOV AL,96H ;计数器2的控制字96H:方式3,只送低8位,二进制计数OUT 066H,AL ;控制字写入8253的控制口MOV AL,056H ;计数初值的低8位OUT 064H,AL ;计数初值的低8位写入计数器2的端口例2:要求读出计数器2的当前计数值,并检查是否为全“1”.8253在读取计数器的当前计数值时,必须分两步进行.首先发一锁存命令(即控制字中RL1RL0=00),将当前计数值锁存到输出锁存器中.第二步执行读操作,即用IN指令将锁存器中内容读入CPU.假设计数初值只有低8位,设其程序段如下(控制口地址为066H,计数器2的口地址为064H):KEEP:MOV AL,80H ;计数器2的锁存命令OUT 066H,AL ;锁存命令写入控制寄存器IN AL,064H ;读输出锁存器中的当前计数值(从计数器2端口读)CMP AL,0FFH ;比较当前计数值是否为全“1”JME KEEP ;非全“1”继续读HLT ;为全“1”暂停8253的应用举例例1:将8253的计数器1作为5ms定时器,设输入时钟频率为200kHz,试编写8253的初始化程序.(1)计数初值N计算已知输入时钟CLK频率为200kHz,则时钟周期为T=1/f=1/200kHz=5μs,于是计数初值N为:N=5ms/T=5ms/5μs=1000.(2)确定控制字按题意选计数器1,按BCD码计数,工作于方式0,由于计数初值N=1000,控制字D5D4应为11,于是8253的控制字为:01110001B=71H.(3)选择8253各端口地址设计数器1的端口地址为3F82H,控制口地址为3F86H.(4)初始化程序如下MOV AL,71H ;控制字MOV DX,3F68H ;控制口地址OUT DX,AL ;控制字送8253控制寄存器MOV DX,3F82H ;计数器1端口地址MOV AL,00 ;将计数初值N=1000的低8位写入计数器1OUT DX,ALMOV AL,10 ;将N的高8位写入计数器1OUT DX,AL例2:以8086为CPU的某微机系统中使用了一块8253芯片,其通道端口地址为308H, 30AH,30CH,控制口地址为30EH,3个通道使用同一输入时钟,频率为2MHz,要求完成如下功能:利用计数器0采用硬件触发,输出宽度等于时钟周期的单脉冲,定时常数为36H;利用计数器1输出频率为2kHz的对称方波;利用计数器2产生宽度为0.6ms的单脉冲,试设计该定时系统硬件电路和初始化程序.(1)硬件电路设计硬件电路设计主要是地址译码电路设计及时8253与CPU间的连接.根据给定的端口地址可知,地址总线低位部分的 A9~A0分别为:A9A8=11,A7~A4=0000,A3A2A1=100~111,A0=0,由它们经译码器译码产生8253的片选信号CS, 8253的数据线D7~D0必须与系统数据总线的低8位相连,8253的端口的选择信号A1A0应连系统地址的A2A1.根据上述要求,译码器应选3-8译码器74LS138.该译码器有3个代码输入端(C,B,A),输入3位代码决定译码信号从 Y0~Y7中哪一个输出,本例中显然应以Y2输出.(2)初始化编程根据题意要求,对3个通道的工作方式,计数初值确定如下:由CLK0~CLK2=2MHz可得,时钟周期T=1/f=1/2MHz=0.5μs.选计数器0:选择方式5,门控信号GATE应接一正跳变信号,OUT端当计数为0时产生一个宽度等于时钟周期的单脉冲.计数系数为36,用BCD计数.所以,计数器0的控制字应为00011011B=1BH.选计数器1:选择方式3,GATE按+5V,CLK1=2MHz输出方波频率为2kHz,所以,计数常数N1=2MHz/2kHz=1000,采用 BCD计数,于是计数器1的控制字为:01110111B=77H.选计数器2:选择方式1,以构成一个单稳态电路,输出脉冲宽度由计数常数N2决定,计数常数N2=600μs/0. 5μs=1200,采用BCD 计数,于是计数器2的控制字为:10110011B=B3H.根据以上分析可得3个计数通道的初始化程序如下.计数通道0的初始化程序:MOV DX,30EH ;8253的控制口地址MOV AL,1BH ;计数通道0的控制字,低8位,方式5,BCD计数OUT DX,AL ;控制字写入控制口MOV DX,308H ;计数器0的端口地址MOV AL,036H ;计数初值的低8位OUT DX,AL ;低字节写入计数器0端口计数通道1的初始化程序:MOV DX,30EH ;8253的控制口地址MOV AL,77H ;计数通道1的控制字,先写低字节,后写高字节,方式3,BCD计数OUT DX,AL ;控制字写入控制口MOV DX,30AH ;计数通道1的端口地址MOV AL,00H ;计数初值的低字节OUT DX,AL ;低字节写入计数通道1MOV AL,10D ;计数初值的高字节OUT DX,AL ;高字节写入计数通道1计数通道2的初始化程序MOV DX,30EH ;8253的控制口地址MOV AL,B3H ;计数通道2的控制字,先写低字节,后写高字节,方式1,BCD计数OUT DX,AL ;控制字写入控制口MOV DX,30CH ;计数通道的端口地址MOV AL,00H ;计数初值的低字节OUT DX,AL ;低字节写入计数通道MOV AL,12D ;计数初值的高字节OUT DX,AL ;高字节写入计数通道2计数通道2初始化程序:MOV AL,B0H ;计数通道2的控制字OUT 05FH,AL ;控制字写入控制器MOV AL,068H ;计数初值的低8位OUT 05DH,AL ;计数初值的低8位写入计数通道2。
8253芯片
8.1:软件定时的例子 主要程序片段 LP: CALL DELAY MOV DL,30H MOV AH,02H ;DOS调用,显示一个字符 INT 21H INC DL LOOP LP MOV AH,4CH INT 21H DELAY PROC NEAR ;软件延时子程序 PUSH AX MOV CX,0FFFFH L: PUSHF POPF LOOP L DO: POP AX RET DELAY ENDP
黄玉清ห้องสมุดไป่ตู้作
8.3.2 8253在微机系统中的应用
8253
D7~D0
IOR
IOW
D7~D0
WR
8259A OUT0 IRQ0
去CPU的INT
RD
A0 A1 译码 OUT1 74LS06
例8.2:使2号定时器,工作在方式3,计数初值=533h,二进 制计数.试写出8253初始化程序段. 8253端口地址:40H,41H,42H,43H MOV OUT MOV OUT MOV OUT AL,10110110B 43H,AL AX,0533H 42H,AL AL,AH 42H,AL ;2号定时器,方式3
8.1 定时基本概念
一. 定时与计数 二. 微机中的定时方法
软件定时——延迟子程序 硬件定时——用计数器/定时器8253
黄玉清制作
8.1:软件定时的例子
例8.1:软件定时的例子: 编写一个软件定时程序,要求定时20ms. 假设:8086的时钟=8MHz, 一个时钟周期 T=1/8MHz=0.125us 延时20ms,执行PUSHF,POPF指令: 需要循环次数: N=20000/[(12+14+17)*0.125] =37209 参考程序: MOV CX,37209 PUSHF ;时钟数:14T POPF ;时钟数:12T LOOP ;时钟数:17/5T
8253、8255A、8259A初始化程序
8253的初始化程序1.确定端口地址:0310H、0312H、0314H、0316H2.确定工作方式(假设工作方式为):通道0,方式3通道1,方式1通道2,方式53.确定计数值:通道0:N0=1MHz/2KHz=500通道1:N1=480us/(1/1mhz)=480通道2:N2=264确定控制字:通道0:00110111B通道1:01110011B通道2:10011011B对3个通道的初始化程序如下:;通道0初始化程序MOV DX, 316HMOV AL,00110111BOUT DX,ALMOV DX,310HMOV AL,00HOUT DX, ALMOV AL,05HOUT DX,AL;通道1的初始化程序MOV DX, 316HMOV AL, 001110011B OUT DX, ALMOV DX, 312HMOV AL, 80HOUT DX, ALMOV AL, 04HOUT DX, AL;通道2初始化程序MOV DX, 316HMOV AL, 10011011B OUT DX, ALMOV DX, 314HMOV AL,26HOUT DX,AL; MOV AL,00H; OUT DX,AL8255A初始化程序对8255A进行初始化,要求端口A工作于方式1,输入;端口B工作于方式0,输出;端口C的高4位配合端口A工作,低4位为输入。
1.确定控制字端口地址:006CH。
2.确定工作方式:端口A,工作方式1,输入端口B,工作方式0,输出端口C,C0为输入,C4为配合工作3.确定方式选择控制字:1 011 100 1H(B9H)对3个端口的初始化程序如下MOV AL,B9HMOV DX,006CHOUT DX,AL另一个8255A初始化程序已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:1.确定端口地址控制字以及PC口置位复位端口,8BH2.确定工作方式3.确定方式选择控制字MOV AL,80HOUT 8BH,ALMOV AL,ODHOUT 8BH,ALMOV AL,06HOUT 8BH,AL在8259A内部有两组寄存器:一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。
8253的工作方式解读
8253的工作方式1.方式0 计数结束产生中断8253用作计数器时一般工作在方式0。
所谓计数结束产生中断,是指在计数值减到0时,输出端(OUT)产生的输出信号可作为中断申请信号,要求CPU进行相应的处理。
方式0有如下特点:① 当控制字写进控制字寄存器确定了方式0时,计数器的输出(OUT端口)保持低电平,一直保持到计数值减到0。
② 计数初值装入计数器之后,在门控GATE信号为高电平时计数器开始减1计数。
当计数器减到0时输出端OUT才由低变高,此高电平输出一直保持到该计数器装入新的计数值或再次写入方式0控制字为止。
若要使用中断,可以计数到0的输出信号向CPU发出中断请求,申请中断。
③ GATE为计数控制门,方式0的计数过程可由GATE控制暂停,即GATE=1时,允许计数;GATE=0时,停止计数。
GATE 信号的变化不影响输出OUT端口的状态。
④ 计数过程中,可重新装入计数初值。
如果在计数过程中,重新写入某一计数初值,则在写完新计数值后,计数器将从该值重新开始作减1计数。
2.方式1 可编程的单拍负脉冲可编程的单拍负脉冲又称为单稳态输出方式,简称单稳定时。
方式1的特点是:① CPU写入控制字后,计数器输出OUT端为高电平作为起始电平,在写入计数值后计数器并不开始计数(不管此时GATE 是高电平还是低电平),而要由外部门控GATE脉冲上升沿启动,并在上升沿之后的下一个CLK输入脉冲的下降沿开始计数。
② GATE上升沿启动计数的同时,使输出OUT变低,每来一个计数脉冲,计数器作减一计数,直到计数减为 0时,OUT 输出端再变为高电平。
OUT端输出的单拍负脉冲的宽度为计数初值乘以CLK端脉冲周期。
设计数初值为N,则单拍脉冲宽度为N个CLK时钟脉冲周期。
③ 如果在计数器未减到0时,GATE又来一触发脉冲,则由下一个时钟脉冲开始,计数器将从初始值重新作减1计数。
当减至0时,输出端又变为高电平。
这样,使输出脉冲宽度延长。