可编程计数器定时器8253
8253中文资料
8253的工作原理8253是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。
其CLK0~CLK2是计数器0~2的时钟脉冲输入端, GATE0~GATE2是门控脉冲输入端, OUT0~OUT2是输出端及内部结构见下图。
当用8253做外部事件计数器时,在CLK端所加的计数脉冲由外部事件产生,这些脉冲的间隔可以不相等。
如果要用它做定时器,则CLK端应输入精确的时钟脉冲。
这时, 8253所能实现的定时时间决定于计数脉冲的频率和计数器的初值,即定时时间=时钟脉冲周期t c ×预置的计数初值n8253的控制逻辑由5个控制信号WR、CS、A1和A0组成,对应的操作见表1。
8253编程时,要对其控制字寄存器写入相应的控制字,控制字寄存器格式如表2所示。
其中: SC1, SC0———通道选择位。
为00, 01, 10分别表示选择0, 1, 2通道。
RL1, RL0———读/写操作位。
00 表示锁存数据,可随时读取计数器中的计数值; 01 表示只读/写低8位,高8位自动置为0; 10表示只读/写高8位,低8位自动置为0; 11表示读/写16位数据,先低8位,后高8位。
M2,M1,M0———工作方式选择位。
8253 具有3 个独立的16 位减法计数器,6 种不同的工作方式。
方式0 :又称计数结束产生中断工作方式。
当程序将工作方式控制字写入控制字寄存器时,计数器的输出端OUT 立即变为低电平。
在计数初值写入该计数器后,输出仍将保持为低电平。
当门控信号GATE 为高电平时,计数器对输入端CLK的输入脉冲开始作减一计数,当计数器从初值减为0 时,输出端OUT由低电平变为高电平,该输出信号可作为向CPU 发出的中断请求信号。
方式1 :又称可编程单稳态工作方式。
功能是在GATE 信号的上升沿作用下,输出端OUT 产生一个负脉冲信号,负脉冲的宽度可由定时器的计数初值和时钟频率编程确定。
微机原理 可编程计数器定时器8253及应用
第八章 可编程计数器/定时器8253及应用 8-1 8253工作原理
一、8253的内部结构与引脚信号 二、8253的初始化编程
三、8253的工作方式
四、8253与系统的连接
8-2 8253的应用举例
一、8253定时功能举例 二、8253计数功能举例
1
第八章
定时/计数技术概述
计算机中常用到定时功能,如:动态RAM刷新、
第八章
二、8253的初始化编程
8253的初始化编程按顺序分两步完成:
1、写入控制字
2、写入计数初值
初始化编程的几点说明: 对3个计数通道的初始化编程没有先后顺序
若是16位数,必须用两条OUT指令来完成,且先送低8
位数据,后送高8位数据。 若计数初值为0时,要分成两次写入。0在二进制计数
18
第八章
8253方式3
4、方式3——方波发生器
时序图
计数初值为偶数时的波形
CW=16H WR CR=4 CLK GATE LSB=4
OUT
CRCE 4
CRCE 2
19
CRCE
2 4
CRCE 2 4
CRCE 2 4
4
第八章
8253方式3 计数初值为奇数时的波形
CW=16H WR
LSB=5 CR=5
CLK GATE
OUT CRCE 5 4 CRCE 2 5 CRCE CRCE 4 2 5
2
5
20
第八章
8253方式4
5、方式4——软件触发选通
时序图
CW=18H WR
LSB=2 CR=2
LSB=2 CR=2
CLK GATE OUT CRCE 2 1 CRCE 0 2 1 0 0
可编程定时器计数器(8253)(微机实验报告)
可编程定时器/计数器(8253)一、实验目的 1)学会8253芯片和微机接口原理和方法。
芯片和微机接口原理和方法。
2)掌握8253定时器定时器//计数器的基本工作原理、工作方式和编程原理。
二、实验内容按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N (N ≤0FH 0FH)),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图 6按图7连接电路,连接电路,将计数器将计数器0、计数器1分别设置为方式3,计数初值设为10001000,用逻辑笔观察,用逻辑笔观察OUT1输出电平的变化(频率1HZ 1HZ))。
图 7三、编程提示1 1、、8253控制寄存器地址控制寄存器地址283H计数器0地址地址 280H 计数器1地址地址 281HCLK0连接时钟连接时钟 1MHZ2 2、参考流程图(见图、参考流程图(见图8、9): 开 始读计数器值显示计数值有键按下吗?开 始送计数器初值N Y结 束结 束设计数器0为工作方式0向计数器0送初值1000先送低字节后送高字节向计数器1送初值1000先送低字节后送高字节设计数器0为工作方式3设计数器1为工作方式3图 8 图图 9四、实验代码1、图6电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV START:MOV AL,10H ;AL,10H ;AL,10H ;设置控制字设置控制字0001000000010000(计数器(计数器0,方式0,写两个字节,二进制计数)二进制计数)MOV DX,283H ; MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中MOV AL,0FH ; MOV AL,0FH ;将将0FH 存入AL 寄存器寄存器OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口LP1: IN AL,DX ;LP1: IN AL,DX ;从从DX 端口读入8位,放在AL 寄存器中寄存器中CALL DISP ; CALL DISP ;调用调用DISP PUSH DX ; PUSH DX ;将将DX 内容保存到堆栈段内容保存到堆栈段MOV AH,06H ; MOV AH,06H ;将将06H 存入AH AH,为了下句调用,为了下句调用21中断中断MOV DL,0FFH ; MOV DL,0FFH ;将将0FFH 存入DLINT 21H ; INT 21H ;调用调用21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段JZ LP1 ; JZ LP1 ;如果如果DX 的内容是0,就跳转到LP1MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AH AH,为了下句调用,为了下句调用21中断中断INT 21H ; INT 21H ;调用调用21中断中断DISP PROC NEAR ;DISP PROC NEAR ;定义一个名为定义一个名为DISP 的子程序的子程序PUSH DX ; PUSH DX ;把把DX 的内容保存到堆栈段中的内容保存到堆栈段中AND AL,0FH ;AL,0FH ;将将AL 寄存器的内容与0FH 进行“与”运算,再把结果存入AL 中MOV DL,AL ; MOV DL,AL ;将将AL 的值送入DL 寄存器寄存器CMP DL,9 ; CMP DL,9 ;比较比较DL 中的值与9的大小的大小JLE NUM ; JLE NUM ;如果如果DL 的值小于或等于9时,则跳转到NUM ADD DL,7 ; ADD DL,7 ;将将DL 的值与7进行相加后,再送入DL 中NUM: ADD DL,30H ;NUM: ADD DL,30H ;将将DL 的值与30H 进行相加后,再送入DL 中 MOV AH,02H ; MOV AH,02H ;将将02H 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断MOV DL,0DH ; MOV DL,0DH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0DHINT 21H ; INT 21H ;调用中断指令调用中断指令调用中断指令MOV DL,0AH ; MOV DL,0AH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0AHINT 21H ; INT 21H ;调用调用DOS21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段RET ; RET ;子程序在功能完成后返回调用程序继续执行子程序在功能完成后返回调用程序继续执行 DISP ENDP ; DISP ENDP ;子程序结束子程序结束子程序结束CODE ENDS ; CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束2、图7电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV DX,283H ;START:MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中MOV AL,36H ; MOV AL,36H ;设置控制字设置控制字0011011000110110(计数器(计数器0,方式3,写两个字节,二进制计数)二进制计数)OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;该语句是立即寻址方式,就是把该语句是立即寻址方式,就是把1000H 这个数赋给AX MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口MOV DX,283H ; MOV DX,283H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中MOV AL,76H ; MOV AL,76H ;设置控制字设置控制字0111011001110110(计数器(计数器1,方式3,写两个字节,二进制计数)二进制计数) OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;把把1000H 赋给AXMOV DX,281H ; MOV DX,281H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AX 的低8位送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断CODE ENDS ;CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束五、实验总结通过实验,学会通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器定时器//计数。
第10章-可编程定时计数器8253概要
21
确定各通道控制字
读写高低字节 通道0: 方式3
BCD码计数
SC1 SC0 RW1 RW0 M2 M1 M0 BCD
0 0 1 1 011 1 37H
读写高低字节 通道1: 方式3
29
10.3 8253 的工作方式
共同遵守的3个基本原则: ● 控制字写入计数器时,所有的控制逻辑电路立即复 位,输出端OUT进入初始状态 ● GATE信号是上升沿起作用,GATE信号的作用是 在下一个CLK周期的下降沿生效 ● 计数初值装入计数器和减1计数都是在输入脉冲的 下降沿有效的
30
10.3 8253 的工作方式
11 先读/写低8位,后读/写高8位计数值 15
10.2 8253 的编程
8253的计数初值
当输出信号为连续的周期波时:假设计数器输入信 号CLK的频率为fCLK,要求OUT端输出信号的频率为 fOUT,则计数初值N的计算公式为
N = fCLK ÷ fOUT 当计数器/定时器工作在一次性有效的定时方式时:如 希望的定时时间为T,则计数初值 N的计算公式为:
5
8254芯片
3
NUIST
10.1 8253 的引脚功能和编程结构
8253的主要功能 ● 3个独立的16位计数器 ● 每个计数器都可以按二进制或BCD码计数 ● 每个通道的计数频率可达2MHz ● 每个计数器都具有6种不同的工作方式 ● 每个计数器的计数初值都可以通过编程设置 ● 所有的输入输出都与TTL兼容
4
10.1 8253 的引脚功能和编程结构
8253的引脚功能
第9章_3 可编程定时计数器8253
OUT
2
1)写入计数值开始计数。周期性计数。 2)N=偶数,正负半周=N/2,N=奇数,正半周=(N+1)/2,负半周=(N-1)/2。 3)计数过程中GATE=0,暂停计数,GATE=1重新计数。 4)计数过程中改变计数值,下一周期按新的计数值计数
9.4 可编程的定时/计数器8253/8254 方式4——软件触发选通
9.4 可编程的定时/计数器8253/8254 8253的引线及内部结构:
D0~D7
CLK0
数据 总线 缓冲
计数器 #0 (CNT0) 计数器 #1 (CNT0) 计数器 #2 (CNT0)Biblioteka GATE0OUT0 CLK1
D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0 GATE0 GND
9.4 可编程的定时/计数器8253/8254 方式5——硬件触发选通
WR GATE 启动计数 CLK CW=16 N=3
OUT
3 GATE OUT 3 2 3
3
2
1
0
0
GATE重复 启动计数
3
2
1
0
GATE
WR 计数中改 变计数值 OUT
CW=16
N=4
N=2 4 3 2 1 0 2 1
GATE
控制字 寄存器
•三个16位计数口: #0:CLK0、OUT0、GATE0 #1:CLK1、OUT1、GATE1 #2:CLK2、OUT2、GATE2
9.4 可编程的定时/计数器8253/8254 8253的口地址及操作:
•片内地址:A0,A1 •片选:CS •数据总线:D0~D7 •读/写信号: RD
D0 ;初始化通道0 D7 ;计数值100
8253可编程计数器定时器
8253的工作原理简介8253可编程计数器/定时器的工作频率为0~2MHz,它有3个独立编程的计数器,每个计数器有三个引脚,分别为时钟CLK、门控GATE、计数器和计时结束输出OUT;每个计数器分别有6种工作方式。
下面针对使用到的两种工作方式——方式1和方式2的工作原理[1]进行简述。
方式1:可编程单稳,即由外部硬件产生的门控信号GATE触发8253而输出单稳脉冲。
计数器装入计数初值后,在门控信号GATE由低电平变高电平并保持时,计数器开始计数,此时输出端变成低电平并开始单稳过程。
当计数结束时,输出端OUT转变成高电平,单稳过程结束,在OUT端输出一个单稳脉冲。
硬件再次触发,OUT 端可再次输出一个同样的单稳脉冲。
单稳脉冲的宽度由装入计数器的计数初值决定。
在WR 信号的上升沿(CPU写控制字之后),输出端OUT保持高电平(若OUT原为低电平则变为高电平)。
CPU写入计数值后,计数器并不马上开始计数,而要等到门控信号GATE启动之后的下一个CLK的下降沿才开始。
在整个计数过程中,输出端OUT保持低电平,直至计数值至0,OUT变为高电平为止。
方式2:速率发生器,其功能如同一个N分频计数器。
其输出是将输入时钟按照N计数值分频后得到的一个连续脉冲。
在该方式下,当计数器装入初始值开始工作后,输出端OUT将不断地输出负脉冲,其宽度为一个时钟周期的时间,而两个负脉冲间的时间脉冲个数等于计数器装入的计数初值。
若计数初值为N,则每N个输入脉冲输出一个脉冲。
当CPU写完控制字后,输出端OUT转变成高电平,计数器将立即自动开始对输入CLK时钟计数。
在计数过程中,OUT端始终保持高电平,直至计数器的计数值减到1时,OUT 端才变为低电平,其保持的宽度为一个输入CLK时钟周期的时间,然后输出端OUT恢复高电平,计数器重新开始计数。
8253控制字格式为:其中:SC1 SC0为计数器选择位;RL1 RL0为计数器读写操作选择位,以确定计数器进行装入或读出是单字节还是双字节;M2 M1 M0为计数器工作方式选择位;BCD表示计数器计数方式选择位。
可编程定时器-计数器接口芯片8253A
④ 在计数过程 中,OUT引脚一 直保持低电平, 直到计数为0时, OUT变为高电平。
可编程定时器/计数器接口芯片8253A
方式0工作的特点是:
① 计数器只计一遍数。当计数减到0时,并不恢复计数初值,不开始重新计数,输出OUT变为高电平 且保持为高。只有当写入一个新的计数初值时,OUT变低,才开始新的计数。
个有效,由控制信号 RD 和WR决定是从OL中读出还
是将计数初值写入CR;当A1A0=01和10时,分别为 计数器1和计数器2的CR和OL的公用地址;当A1A0= 11时,为3个计数器的3个控制寄存器的公用地址。
8253A在工作之前,在对其进行初始化
编程时,CPU将计数初值写入CR,并在时
钟 脉 冲 的 驱 动 下 送 入 CE 。 当 门 控 信 号
(3)数据总线缓冲器
• 三态、双向、8位寄存器,用于与 系统数据总线相连,是8253A与 CPU进行信息传送的通道。
(4)读/写控制逻辑
• 接收来自CPU的控制信号,用于 控制8253A内部寄存器的读/写操 作。
8253A的端口选择读/写操作
可编程定时器/计数器接口芯片8253A
8253A共占用4个I/O端口地址,当A1A0=00时为 计数器0的CR和OL的公用地址,同一时刻只能有一
8253A引脚图
(1)D7~D0:三态、双向数据线,与CPU数据总线 相连,用于传送数据。
(2)RD,WR,A0,A1和 CS:功能与8255A类似,用 于控制各个端口的读/写操作。
(3)CLK:计数脉冲输入信号,用于输入定时基准 脉冲或计数脉冲。
(4)GATE:门控输入信号,用于控制计数器的启 动或停止。
② 写入计数值由 WR 信号控制。在 WR信号的上升沿,计数初值装入计数寄存器,在 WR信号上升沿后 的下一个CLK脉冲,才开始计数。因此,如果设置计数初值为N,则输出信号OUT在写入初值后经过N+1 个CLK脉冲后才变为高电平。
可编程定时计数器8253
1000,1000 400,1000 400000,400000 400,400
ห้องสมุดไป่ตู้21
B
C
D
提交
6. 8253的应用
8253初始化方法有两种: (1)以计数器为单位逐个进行初始
化 (2)先写所有计数器的控制字,再 送入各计数器初值
22
应用举例
用8253的通道0工作在方式3,输入
频率为2KHz的时钟信号,产生方波 (周期1s),其输出作为通道1的输 入信号;通道1工作在方式2,产生 分频信号(周期5s)。 通过2个发光二极管(共阳极)分别 观察OUT0和OUT1的输出信号。
11
③
门控信号GATE在CLK的上升沿被采 样(采用电平或边沿触发方式) GATE高电平有效对方式0、4; GATE上升沿有效对方式1、5; GATE高电平和上升沿均有效对方式2、 3。 ④ 在CLK下降沿,计数器作减1计数
12
方式0——计数结束产生中断 方式1——可编程的单脉冲发生器 方式2——分频器 方式3——方波发生器 方式4——软件触发的选通信号发生器 方式5——硬件触发的选通信号发生器
个CLK的负脉冲(周期为N个时钟周期, 频率为1/N的时钟频率,正脉冲为N-1 个时钟脉冲宽度,负脉冲为1个时钟 脉冲宽度,实际上是对CLK的N分频)
16
方式3-方波发生器
3
1
2 4
17
(4)当计数初值为偶数N时,计数到
N/2反向。脉冲宽度T×N/2,方波周期 为 T× N 。 当计数初值为奇数N时,开始OUT为高 电平,计数到(N+1)/2的下一个CLK时 OUT反向(OUT正脉冲宽度为 T×(N+1)/2);OUT低电平时在计数 到剩下的(N-1)/2时反向(负脉冲宽 度为T×(N-1)/2),方波周期仍然是 T × N。
可编程定时计数器8253
OUT DX,AL MOV AL,04H;计数值低字节 MOV DX,04C4H;设置计数器2地址 OUT DX,AL;写入计数值低字节 MOV AL,03H;计数值高字节 OUT DX,AL;写入计数值高字节
8位的控制寄存器 16位的初值寄存器 16位计数执行单元CE 16位输出锁存器OL
CLK:计数时钟,输入。用于输入定时脉冲或计数脉 冲信号。计数器用其下降沿作减1计数。
GATE:门控信号,输入,由外部信号通过GATE端控 制计数器的启动计数和停止计数的操作。
OUT:输出信号。在不同的模式下,可输出不同波形。
8253的工作方式-方式4(软件触发选通)
软件启动,不自动重复
8253的工作方式-方式4(软件触发选通)
GATE为低
8253的工作方式-方式4(软件触发选通)
计数过程中重新写入计数初值
8253的工作方式-方式5(硬件触发选通)
硬件触发选通方式,完全由GATE端引入 的触发信号控制定时和计数
MOV AL,00011010B;二进制,方式5,写低字节,计数器0 MOV DX,04C6H;设置8253控制口地址 OUT DX,AL;写入工作方式控制字 MOVAL,46H;计数值的低字节 MOVDX,04C0H;设置8253计数器0地址 OUT DX,AL;写入计数值的低字节 MOV AL,01110011B;BCD数,方式1,写16位数,计数器1 MOV DX,04C6H;设置8253控制器地址 OUT DX,AL;写入工作方式控制字 MOV AL,00H;计数值低字节 MOV DX,04C2H;设置8253计数器1地址 OUT DX,AL;写入计数值低字节
可编程定时-计数器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用作计 数/定时电路,各计数器及控制寄存器所占地 址及工作情况如下:
第7章 可编程定时器计数器8253
①软件定时器/计数器
软件定时器/计数器是实现系统定时控制或延 时控制的最简单的方法。在计算机中CPU每执行 一条指令所占用的周期(T状态)数是确定的, 用汇编语言编写一段具有固定延时时间的循环程 序,将该程序的每条指令的T状态数加起来,乘 以系统的时钟周期,就是该程序执行一遍所需的 延时时间。设计者可选择不同的指令条数和不同 的循环次数来实现不同的时间延迟。
④ 计数通道 8253有3个相互独立的同样的计数电路,分 别称作计数器0、计数器1和计数器2。每个计数 器包含一个8位的控制寄存器(控制单元),它存 放计数器的工作方式控制字;一个16位的初值 寄存器CR(时间常数寄存器),8253工作之前要对 它设置初值;一个16位计数执行单元CE,它接 收计数初值寄存器CR送来的内容,并对该内容 执行减1操作;一个16位输出锁存器OL,它锁存 CE的内容,使CPU能从输出锁存器内读出一个稳 定的计数值。计数器的内部结构如图6-5所示。
3.项目电路原理框图 利用8253对外部事件进行计数,电路原理框 图如图7-1所示。电路由8086CPU芯片、8253芯 片、按钮开关UP和发光二极管LED等组成。
图7-1 电路原理框图
4.项目程序设计 (1)程序流程图 利用8253对外部事件进行计数程序流程图 如图7-2所示。
图7-2 用8253对外部事件进行计数程序流程图
(2)程序清单 利用8253对外部事件进行计数程序清单如下所示。 CODE SEGMENT ASSUME CS:CODE START: MOV AL, 30H ; 二进制计数,方式0,先低后高,通 道0 MOV DX, 203H ;8253控制地址 MOV AL, 0 OUT DX, AL OUT DX, AL ; 高八位 MOV AL, 5 ; 计数器初始值。JMP AGAIN AGAIN: MOV DX, 200H ;通道0地址 CODE ENDS OUT DX, AL ; 低八位 END START
可编程计数器(定时器)8253实验
四、实验步骤1、验证性实验(使用8253产生1S的时钟)具体要求:采用计数器0和计数器1完成对2MHz输入方波信号的两级分频(将计数器0的输出作为计数器1的输入),定时常数均为1000,得到一个周期为2秒钟的方波,用此方波控制蜂鸣器发出报警信号。
实验步骤:参见《微机原理及接口技术实验指导书》P.39“演示实验”的相关内容。
.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,35HOUT DX,ALMOV DX,T0_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALMOV DX,COM_ADDRMOV AL,77HOUT DX,ALMOV DX,T1_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALJMP $END START图1 8253实验原理图2、拓展性实验(LED指示灯的计次闪烁)具体要求:将8253的CLK0接到脉冲发生开关S4端,OUT0接到一发光二极管。
将8253的计数器0初始化为方式0,并设置计数初值6。
拨动脉冲发生开关并计数,观察LED的变化与拨动开关次数的关系。
实验步骤:参见《微机原理及接口技术实验指导书》P.39“编程实验”的相关内容。
.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,11HOUT DX,ALMOV DX,T0_ADDRMOV AL,06HOUT DX,ALEND START。
第八章 8253
是否自动 重装初值
低 高 高 高 高 高
否 是 是 是 否 是
15
方式3 方式 方波发生器
上升沿,从初值n 上升沿,从初值n开始计数 高电平, 高电平,允许计数 低电平,禁止计数, 低电平,禁止计数,使输出变高
方式4 方式 软件触发选通
高电平, 高电平,允许计数 低电平, 低电平,禁止计数 上升沿,从初值n 上升沿,从初值n开始计数
9
初始化程序: 初始化程序: MOV AL ,37H OUT 46H ,AL ;设置控制字 写入计数初值, MOV AL ,54H ;写入计数初值,先低后高 OUT 40H ,AL MOV AL ,23H OUT 40H ,AL 读通道0计数结果,并送入CX CX寄存器 ;读通道0计数结果,并送入CX寄存器 MOV AL ,07H ;00 00 011 1=07H OUT 46H ,AL ;设置控制字 IN AL ,40H MOV CL ,AL IN AL ,40H 将通道0计数结果→ MOV CH ,AL ;将通道0计数结果→CX
11
8253 CLK
WR 写入控制字 8253 OUT 写入计 数初值 计数结束 4 3 2 1 0
n×TCLK ×
12
方式1 方式 可编程单稳态输出 可重触发 GATE触发 触发
GATE
OUT n×TCLK ×
方式2 方式2 比率发生器
相当n分频 相当n分频
计数初值=定时时间 计数初值 定时时间/ TCLK=fCLK/ fOUT 定时时间
10
五,8253的工作方式(6种) 8253的工作方式( 的工作方式
写入控制字,同时影响OUT端电平,为起始OUT OUT端电平 OUT端电平 ① 1. 写入控制字,同时影响OUT端电平,为起始OUT端电平 ② 写入计数初值n,使WR变为低电平,在WR的上升沿时,将 写入计数初值n WR变为低电平, WR的上升沿时, 变为低电平 的上升沿时 n→计数初值 计数初值R n→计数初值R GATE有效 再在下一个CLK时钟脉冲的下降沿 有效, 下一个CLK时钟脉冲的下降沿, ③ 当GATE有效,再在下一个CLK时钟脉冲的下降沿,将n → 计数执行部件,开始减1计数( 计数执行部件,开始减1计数(计数器随着时钟脉冲的输 入而递减计数) 入而递减计数) 1.方式 方式0 1.方式0 计数结束中断方式 OUT输出端波形 OUT输出端波形 从写入计数初值到开始减1之间,有一个时钟脉冲的延迟. 从写入计数初值到开始减1之间,有一个时钟脉冲的延迟. 详见后
8253芯片
8253芯片
8253芯片是一种可编程定时/计数器芯片,由Intel公司设计和生产。
它具有3个16位计数器/定时器以及与之相关的控制逻辑。
8253芯片主要用于计时、计数和控制应用,可以用于生成各种需要精确时间间隔的信号。
8253芯片的工作模式和功能是可编程的,可以根据需要进行配置。
它有以下几种主要工作模式:
1. 方波发生器模式(Mode 0):芯片将计数器的值作为输出的方波的周期。
可以通过设定计数器初值来调整方波的频率。
2. 硬件单稳态模式(Mode 1):芯片在计数器值为初值时,输出一个脉冲,脉冲宽度由计数器的值决定。
3. 软件单稳态模式(Mode 2):类似于硬件单稳态模式,但是需要由软件控制计数器的开始和停止。
4. 硬件双稳态模式(Mode 3):芯片在计数器值为初值时输出一个脉冲,然后在计数器达到比较值时停止输出。
5. 硬件比较模式(Mode 4和Mode 5):芯片将计数器的值与比较值进行比较,当两者相等时输出脉冲。
8253芯片还有多种计数方式和工作模式的组合,可以应对不同的应用需求。
8253芯片的应用范围广泛,包括计时、计数、频率合成等。
例如,在计算机系统中,8253芯片可以用于计算机的时钟芯片,以及用于实时操作系统和调度器中的计时功能。
此外,8253芯片还可以用于音频系统中的波形生成和频率控制,游戏控制器中的计数器等。
总结来说,8253芯片是一种功能强大的可编程计时/计数器芯片,它具有多种工作模式和计数方式,适用于各种计时、计数和控制应用。
它在计算机系统和其他电子系统中发挥着重要的作用。
第九章 可编程计数器8253
第九章可编程定时计数器8253一概述⒈定时器和计数器定时控制在微机系统中极为重要①定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔;②计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器。
⒉定时功能的实现方法①软件延时——利用微处理器执行一个延时程序段实现;②不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间;③可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路。
二 8253定时计数器的内部结构和外部特性⒈概述① 3个独立的16位计数器通道;②每个计数器有6种工作方式;③按二进制或十进制(BCD码)计数。
⒉内部结构内部结构图①数据总线缓冲器是8253与CPU DB连接的8位双向三态缓冲器,CPU通过它向8253写方式控制字到控制字寄存器中,写计数初值到计数通道,读取计数通道的当前计数值。
②读/写控制逻辑无效,8253的DB处于高阻状态,当有效,控制8253内部操作。
当和A1、A0、作,见下表。
8253读写操作及端口选择表注意:CPU对控制字寄存器只能写,不能读;CPU对计数通道写的是计数初值,读的是当前计数值。
③控制字寄存器8253初始化编程时,CPU写控制字到控制字寄存器,以选择计数通道及相应的工作方式。
④数通道0~28253内部包括3个功能完全相同和操作完全独立的计数通道,每个计数通道由16位减法计数器、16位计数初值寄存器和16位计数值锁存器组成。
初始化时,向计数通道装入的计数初值,先送到计数初值寄存器中保存,然后送到减法计数器。
计数器启动后,减法计数器对CLK的下降沿进行减1计数,在未锁定时把结果送入16位计数值锁存器中。
当计数值减到0时,输出OUT信号,一次计数结束。
计数初值寄存器的内容,在计数过程中保持不变。
计数初值寄存器和计数值锁存器占用一个端口地址(即该计数通道口地址),CPU读取计数通道的当前计数值来自计数值锁存器。
第九章 可编程计数器与定进控制器8253(9.2)
SC1 SC0 RW1 RW0 M2
M1
M0 BCD
1--计数值为BCD码格式 0--计数值为二进制格式 M2 M1 0 0 0 1 1 0 0 M0 0 1 0 1 0 1 模式选择 模式0 模式1 模式2 模式3 模式4 模式5
0 0----对计数器进行锁存
0 / / 1 1
0 0----选计数器0
STT: MOV DX,8253-C MOV AL,10H OUT DX,AL MOV DX,8253-0 MOV AL,64H OUT DX,AL MOV DX,8253-C MOV AL,76H OUT DX,AL MOV DX,8253-1 MOV AX,09C4H OUT DX,AL MOV AL,AH OUT DX,A MOV DX,8253-C MOV AL,0B1H OUT DX,AL
图 8-22
方式0——计数结束产生中断
高
图 8-22
单脉冲触发器
图 8-23
分频器
图 8-23 方波发生器
图 8-23 软件触发的选通信号发生器
图 8-23
硬件触发的选通信号发生器
8-2-3 8253应用举例
8253初始化方法: 控制字 计数初值:
已知:CLK 的频率fc与定时的时间t. 计数初值: n= fc t
习题1分析: 用通道 0 作定时器,初始编程使通道0按方式3工作,每秒产 生18.2次输出信号,该信号送到8259A中断控制器的IRQ0输入端。 每55ms产生一次中断请求,8086对其计数,用来计算时间。通道 1 用作动态RAM刷新定时,每隔5.12us产生一次输出信号,请求动态 刷新。OUT1输出产生DMA请求信号送8237,由8237对动态RAM刷新。 (8253地址为40H~43H) 通道0:地址为40H,控制字为36H,工作方式3,计数初值为0 通道1:地址为41H,控制字为 54H,工作方式2,计数初值为12H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注: 1)方式0,写入控制字后,OUT立即为低。可用来实现定时或对外 部事件进行计数,常用该输出信号作中断源(利用计数结束时的 OUT脚由低变高的正跳变)。其余5种,OUT立即为高。 2)方式1产生单负脉冲,脉宽可调。 3)方式2产生序列负脉冲,每个负脉冲宽度与CLK脉冲周期同。 4)方式3产生连续方波,方式2、3都实现对时钟脉冲n分频。 5)方式4、5波形相同,产生一个宽度等于CLK脉冲周期的负脉冲, 方式4由软件触发计数(设计数值n),方式5由硬件(GATE上升 沿)触发。 6)方式0、1、4仅一次有效。方式2、3、5减为0后,8253自动将计 数值n重装。
74LS138 G1 G2A G2B Y4 C B A
A4 A3 A0 A2 A1 RD WR D7~D0
8253 CLK0 CLK1 CLK2 GATE0 OUT0 CS GATE1 OUT1 GATE2 OUT2 A1 A0 RD WR D7~D0
1MHz +5V 2kHz方波 480uS 负脉冲
(3)计算器0~3 3个通道完全相同:a.8位控制字寄存器1个 b.16位计数初值寄存器1个 c.计数器执行部件(实际计数器)1个 (减法操作) d.输出锁存器1个 计数器初值减为0,OUT脚输出一个脉冲 功能:1)定时:定时时间=时钟脉冲周期tc×预置的计数初值n 2)计数:可计不等间隔的脉冲数 (4)控制字寄存器(只写)
7)计数过程中,GATE变低,暂停减1,OUT仍为低,GATE回高,继 续计数。
(2)方式1 —— 可编程单稳态输出方式(Programmable Oneshort)
CLK
WR GATE
n=4
4 OUT
3
2
1
0
GATE 4 OUT 3 2 4 3 2 1 0
1)写入控制字后,OUT立即为高。 2)GATE由低变高,在下一个时钟脉冲的下降沿,把n装入实际计数 器,同时,OUT由高变低。 3)计数器减为0,OUT由低变高。 4)计数过程中,若GATE产生负跳变,不影响计数过程。若在计数 器回0前,GATE又产生正跳变,初值n装入,重新计数 5)只计数1次。
9.2 8253应用举例 9.2.1 定时 例:8253连8086CPU如图,通道基地址为多少?如时钟脉冲1MHz, 要求:(1)通道0输出2kHz方波 (2)通道1产生宽度480us单脉冲 (3)通道2硬件方式触发,输出单脉冲,时间常数26
8086CPU A9 A8 A7 A6 A5
M/IO
& & &
;控制口地址 ;选通道2,只读/写低字节,方式5,BCD计数 ;送控制字 ;通道2口地址 ;计数值低字节 ;只写入低字节
9.2.2 计数 例:工厂统计流水线上生产的某种产品的数量
+5V +5V 1K 施密特 触发器 74LS14 +5V 8253 GATE1 D7~D0 OUT1 CLK1 WR RD A1 A0 CS 工件 复合型光电 晶体管 D7~D0 去8259A的IR0 WR RD A2 A1 I/O 译码 M/IO A9~A0
分析: (1)地址 74LS138要正常工作 要求 A9 A8 A7 A6 A5 = 11000 A4 A3 A0 = 100 /Y4 = 0 所以 基地址为310H 由于CPU的A2 A1连8253的A1 A0, 则4个端口地址为310H,312H,314H,316H。 (2)工作方式 通道0,方式3,GATE0——+5V 高 n=1MHz/2kHz=500 通道1,方式1,GATE1——由低到高变化 n=480uS/1uS(1MHz)=480 通道2,方式5,GATE2——由低到高变化 n=26
初始化程序 ;通道0 MVO DX,316H MOV AL,00110111B OUT DX,AL MOV DX,310H MOV AL,00H OUT DX,AL MOV AL,05H OUT DX,AL ;通道1 MOV DX,316H MOV AL,01110011B OUT DX,AL MOV DX,312H MOV AL,80H OUT DX,AL MOV AL,04H OUT DX,AL
3)计数值减为1时,OUT由高变低,计数值减为0时,OUT由低变高。 4)循环计数。 5)随时可由CPU重新写入新计数值n,不影响当前计数过程,本计 数周期结束,按新写入的n计数。
6)计数过程中,GATE变低,OUT为高,禁止计数。当GATE由低变高, 下一个时钟脉冲下降沿重新开始计数,循环进行。
(4)方式3 —— 方波发生器(Square Wave Generator)
4)n为奇数,第一个时钟脉冲,计数器减1,之后,每个时钟脉冲, 计数器减2,减为0时,OUT由高变低,同时自动重装入初值n,然 后第一个时钟脉冲,计数器减3,之后,每个时钟脉冲,计数器 减2,减为0时,OUT由低变高。循环进行。输出波形高电平宽度 比低电平多一个时钟周期。
(5)方式4 —— 软件触发选通(Software Triggered Strobe)
CLK 4 OUT(n=4) 5 OUT(n=5) 4 2 5 2 5 4 2 5 2 2 4 2 4 2 4 2 4 2
1)写入控制字后,OUT立即为高。 2)GATE为高,写入计数值后下一个时钟脉冲下降沿,把n装入实际 计数器中。
3)n为偶数,每个时钟脉冲,计数值减2,减为0时,OUT由高变低, 同时自动重装入初值n,再减为0时,OUT由低变高,循环进行。 输出完全对称的方波。
CLK WR GATE 4 OUT 3 2 1 0 n=4
GATE 4 OUT 4 3 2 1 0
1)写入控制字后,OUT立即为高。 2)GATE为高,写入计数值后下一个时钟脉冲下降沿,把n装入实际 计数器中。
3)计数器减为0,OUT由高变低,一个时钟周期后,OUT又由低变高。 4)只计数1次。 5)GATE变低电平,则停止计数,GATE回高,重新计数。
(1)方式0 —— 计数结束中断方式(Interrupt on Terminal Count)
CLK
WR GATE
n=4
4 OUT
3
2
1
0
GATE 4 OUT 3 2 1 0
1)写入控制字后,OUT立即为低。 2)GATE为高,允许计数。 3)/WR上升沿,计数值n写入8253计数器初值寄存器。
3个16位计数器通道,最高计数频率2MHz
9.1 8253工作原理 9.1.1 内部结构和引脚
D7~D0
数据总线 (缓冲器) 内 部 数 据 总 线 CLK0 GATE0 OUT0
通道0
RD WR A1 A0 CS
读写 控制 逻辑
通道1
CLK1 GATE1 OUT1
控制字 寄存器
通道2
CLK2 GATE2 OUT2
(1)数据总线缓冲器 8位 双向 三态缓冲器 信息传递:a.CPU写入控制字,对8253初始化 b.CPU向某一计数器写入的计数初值 c.从计数器读出的计数值 (2)读/写控制逻辑 1)/CS 片选 低有效 由地址总线经I/O端口译码电路产生 2)/RD 读 低有效 CPU读所选定计数器通道中的内容 3)/WR 写 低有效 CPU正将计数初值写入所选中的计数通道 中,或将控制字写入控制字寄存器中 4)A1A0 端口选择信号 A1A0=00 通道0 A1A0=01 通道1 A1A0=10 通道2 A1A0=11 控制字寄存器端口 8086CPU系统中,8253的A1A0一般连地址线的A2A1,这样各 端口均对应偶地址。
;控制口地址 ;选通道0,先读/写低字节,后高字节, ;送控制字 ;通道0口地址 ;计数值低字节 ;先写入低字节 ;计数值高字节 ;后写入高字节
方式3,BCD计数
;控制口地址 ;选通道1,先读/写低字节,后高字节, 方式1,BCD计数
;通道1口地址 ;低字节 ;高字节
;通道2 MVO DX,316H MOV AL,10011011B OUT DX,AL MOV DX,314H MOV AL,26H OUT DX,AL
分析: (1)计数工作原理 无工件通过,光电管导通,集电极(CLK1)低电平 有工件通过,光电管截止,集电极高电平 每通过一个工件,就从CLK1端输入一个正脉冲。 (2)74LS14作用 将光电管集电极上的缓慢上升信号,变成满足计数电路要求 的TTL电平信号。 (3)通道1工作于方式0,BCD码计数,先读/写低字节,再高字节, 设n=499,则n+1(500)个脉冲后,OUT1脚产生一个正跳变,送 IR0,产生一个中断。 初始化: 中断服务程序执行完返回主程序后,要由程序把计数初值 499再次装入计算器1,才能继续计数。 假设I/O译码后的端口地址为:F0H,F2H,F4H,F6H
(6)方式5 —— 硬件触发选通(Hardware Triggered Strobe)
CLK WR GATE 4 OUT 3 2 1 0 n=4
GATE 4 OUT 3 4 3 2 1 0
1)写入控制字后,OUT立即为高。 2)GATE由低变高,在下一个时钟脉冲的下降沿,把n装入实际计数 器。
3)计数器减为0,OUT由高变低,一个时钟周期后,OUT又由低变高。 4)只计数1次。 5)计数过程中,若GATE产生负跳变,不影响计数过程,若在计数 器回0前,GATE又产生正跳变,初值n装入,重新计数。
D7 D6 D5 D4 D3 D2 D1 D0 CLK0 OUT0 GATE0 GND
8253 1 24 2 23 3 22 4 21 5 20 6 19 7 18 8 17 9 16 10 15 11 14 12 13
VCC WR RD CS A1 A0 CLK2 OUT2 GATE2 CLK1 GATE1 OUT1
(3)方式2 —— 比率发生器(Rate Generator)
CLK n=4
WR GATE
4 OUT GATE(n=3) 接上面 OUT