8253可编程计数器定时器
8253定时-计数器
1.3 8253的控制字和工作方式
1.3 8253的控制字和工作方式
方式3
1) 当计数初值N为偶数时,输出端的高低电平持续时间相等,各为N/2个 CLK脉冲周期,当计数初值N为奇数时,输出端的高电平持续时间比 低电平持续时间多一个脉冲周期,即高电平持续(N+1)/2个脉冲周 期,低电平持续(N-1)/2个脉冲周期。例如N=5,则输出高电平持 续3个脉冲周期,低电平持续2
1.3 8253的控制字和工作方式
2.8253
可编程定时/计数器8253有两个基本功能,即定时和计 数。除此之外,还可以作为频率发生器、分频器、实时时钟、 单脉冲发生器等。这些功能是通过对8253编程,写入方式 控制字来完成的,8253为每个计数通道提供6种工作方式。
(1)方式0——
0控制
字CW后,计数器输出端OUT立即变成低电平。当写入计数
3) 在计数过程中,可由门控信号GATE控制暂停。当GATE为0时,计 数器暂停计数;当GATE变为1
4) 方式0的OUT信号在计数到0时由低变高,可作为中断请求信号。
1.3 8253的控制字和工作方式
(2)方式1—— 在设定工作方式1和写入计数初值后,OUT输出高电平,
此时并不开始计数。当门控信号GATE变为高电平时,启动计 数,OUT输出变低电平。在整个计数过程中,OUT都维持为 低电平,直到计数到0时,输出变为高电平。因此,输出为一 单脉冲,其低电平的维持时间由装入的计数初值来决定。图所 示为8253工作方式1的时序图。
6)方式5—— 在这种方式下,当写入控制字后,输出端出现高电平 作为初始电平。在写入计数初值后,计数器并不立即开始 计数,而是要由门控脉冲的上升沿来启动计数,这称为硬 件触发。当计数到0时,输出变低电平,又经过一个CLK 脉冲,输出恢复为高电平,这样在输出端得到一个负脉冲 选通信号。计数器停止计数后要等到下次门控脉冲的触发, 才能再进行计数。8253工作方式5的时序如图所示。
微机原理 可编程计数器定时器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可编程定时器计数器8253(一)一、实验目的掌握8253的基本工作原理和编程方法。
二、实验内容(一)、实验说明:按图16虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
三、编程提示8253控制寄存器地址283H计数器0地址280H计数器1地址281HCLK0连接时钟1MHZ(二)、实验原理图(三)、ASM程序ioport equ 0d400h-0280hio8253a equ ioport+283hio8253b equ ioport+280hcode segmentassume cs:codestart: mov al,00010000B ;设置8253通道0为工作方式2,二进制计数mov dx,io8253aout dx,almov dx,io8253b ;送计数初值为0FHmov al,5out dx,allll: in al,dx ;读计数初值call disp ;调显示子程序push dxmov ah,06hmov dl,0ffhint 21hpop dxjz lllmov ah,4ch ;退出int 21hdisp proc near ;显示子程序push dxand al,0fh ;首先取低四位mov dl,alcmp dl,9 ;判断是否<=9jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37H num: add dl,30hmov ah,02h ;显示int 21hmov dl,0dh ;加回车符int 21hmov dl,0ah ;加换行符int 21hpop dxret;子程序返回disp endpcode endsend start(四)实验过程及数据:1、先连接实验数据线2、修改程序部分内容并且按照原理图连接电路:3、调试编译程序,无误情况下运行程序,得到如下实验结果:可编程定时器计数器8253(二)一、实验目的掌握8253的基本工作原理和编程方法。
可编程定时器计数器(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定时器定时器//计数。
可编程定时-计数器8253
计数器 地址 工作方式 用途
CNT0 40H 方式3 CNT1 41H 方式2 CNT2 42H 方式3 写出初始化程序。
日历时钟定时 动态存储器刷新 扬声器发声
接口技术
例7.6:利用8253的三个通道实现系列功能。
CNT0:对外部事件计数,计满100次向CPU发出中
断请求。
CNT1:产生1KHz方波。
。
(5)方式4:软件触发选通(不自动重复)
接口技术
计数保持GATE=1, 若GATE=0,则中止计数,恢 复GATE=1后,继续原来的计数直至结束;
写入计数值启动;
启动后OUT端输出高电平,计数结束输出1周期负
脉冲。
WR
CW N=4
CLK GATE
OUT
4 3 2 10 图7.18 方式4的波形
(6)方式5:软件触发选通(不自动重复) GATE的上升沿启动计数器;
CW N=4
WR
CLK GATE
OUT
4 3 21 0
图7.13 方式0的波形
1.3 工作方式与应用举例
接口技术
在 计 数 过 程 中 , 若 GATE=0 则 暂 停 计 数 , 待 GATE=1后,从暂停时的计数值继续往下递减。
WR
CW N=3
CLK GATE
OUT
3 2 2 210
图7.14 方式0时GATE信号的作用
3.8253控制字格式
D7 D6
D5 D4
计数器选择 操作类型
接口技术
D3 D2 D1
D0
工作方式 计数方式
00:计数器0 01:计数器1 10:计数器2 11:非法
00:计数值锁存 01:只读/写低字节 高字节清零 10:只读/写高字节 低字节清零 11:先读/写低字节 后读/写高字节
可编程定时器-计数器接口芯片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脉冲后才变为高电平。
第11章 8253可编程定时计数器
11. 2 8253的编程控制字和工作方式
8253工作在方式0时的时序图
CLK G ATE (允许计数高电平) WR 写 CW 写计数值
O U T0 G ATE’
3
2
1 0
O U T ’0 ( 设 计 数 初 值 为 3)
实现定时和计数有两种方法:硬件定时和软件定时。
硬件定时,是利用专门的定时电路实现精确定时。这种定 时方式又可分为简单硬件定时和利用可编程接口芯片实现定 时。 8253是为微机配套设计开发的一个可编程定时计数器
11.1 概述
一、8253的结构框图
数据总线 D 7 -D 0
计数器 0 号 内 部
CLK0 G ATE 0 OUT0
OUT 43H,AL
MOV AL,40H
OUT 41H,AL ;送计数初值
11. 2 8253的编程控制字和工作方式
三、8253的读操作
有两种读计数值的方法:
(1)读之前先停止计数: 用GATE信号控制计数器先停止计数,再由软件将计数 值读出,读出顺序必须严格按控制字D5D4确定的格式进 行。
(2)读之前先送计数值锁存命令:
11. 2 8253的编程控制字和工作方式
二、工作方式 1、方式0 逐次减1,计数到0时发中断请求 当控制字写入控制寄存器后,OUT输出引脚立即变为 低电平。CPU向CR计数器写入计数初值后的第一个CLK 脉冲下降沿出现时,CR寄存器的内容被送入CE计数单元
内。随后的每个CLK脉冲的下跳沿出现时,都使CE计数
11. 2 8253的编程控制字和工作方式
一、8253的控制字
8253可编程计数器定时器实验
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验三8253可编程计数器/定时器实验实验类型设计型姓名学号日期地点室成绩教师1. 实验目的及内容1.1实验目的1)了解8253的内部结构、工作原理;了解8253与8088的接口逻辑; 2)熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
1.2实验内容1)设计8253与8086CPU 的硬件连接图,分配8253的基地址为0F000H 。
2)设计8253与外界输入时钟频率2MHZ 和电源的硬件连接,使8253产生周期为1秒的方波。
用此方波控制LED 灯,使其发出闪烁信号。
2. 实验环境星研电子软件,STAR 系列实验仪一套、PC 机一台、导线若干3. 实验方法8259A 的中断引脚IRi 与单脉冲连接,实现拨动单脉冲开关触发8259A 中断,8086计数中断次数并显示于G5区的断码管LED 上,此实验使用8259A 的IR2中断,正脉冲触发中断,脉冲频率为2MHz.4. 实验步骤4.1电路设计D0D1D2D4D5D6D7WR RD D3D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS 21RD 22WR 23OUT217A019GATE216A120CLK2188253U35A0A1GATE0CLK0OUT1GATE1OUT2GATE2CLK2CSVCC 2M(B2)Ctrl(D1)VCCCS5(0B000H)A0A1A8253_1 EQU 0F002HA8253_2 EQU 0F001HA8253_3 EQU 0F003H.DATA.STACK.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXmov dx,A8253_3mov al,00110101bout dx,almov dx,A8253_0mov al,00Hout dx,almov al,20Hout dx,almov dx,A8253_3mov al,01110111bout dx,almov dx,A8253_1mov al,00Hout dx,almov al,10Hout dx,alEND START4.4运行调试程序1)按要求设计的电路正确连接线路,检查完毕后打开电源。
第12章 可编程定时器计数器8253
8253
图12-3 8253的引脚排列图
12.1.4 8253的初始化
1.写控制字
8253工作前必须进行初始化编程,以确定每个计数器 的工作方式和对计数器赋计数初值。
CPU通过写控制字指令将每个计数通道分别初始化,使 之工作在某种工作方式下。
对8253芯片初始化编程包括写入控制字和写入计数值 两部分,任一通道的控制字要从8253控制口地址写入, 计数初始值经各通道端口地址写入。
PC LK
&
接至扬声器驱动器
12.2.3 8253应用实例
【例12.4】在8086系统中,8253的各端口 地址为81H、83H、85H和87H。现提供时 钟频率为2 MHz,要求用8253来控制一个 LED发光二极管的点亮和熄灭,点亮10 s后 再让它熄灭10 s,并重复上述过程。
本章小结
8253有定时和计数功能,包含3个16位计数器, 每个计数器可按二进制或十进制计数,有6种工 作方式,可通过编程选择。 不同工作方式下计数过程启动方式、OUT端输出 波形都不一样。 自动重复功能和GATE控制作用及写入新计数初 值对计数器工作过程产生影响不一样。 8253初始化要完成写各计数器的控制字和设置 计数初始值两个方面的程序设计。
。
12.1.3 8253内部结构和引脚功能 1.内部结构
8253内部包含3个16位计数器,每个计数 器可按二进制或十进制计数,有6种工作方式, 可通过编程选择。8253采用单一+5 V电源供电, NMOS工艺制造,24引脚DIP封装 。 (1)数据总线缓冲器 (2)读/写控制逻辑电路 (3)控制寄存器
内部定时是计算机本身运行时间基准或时序关系,由 CPU硬件结构决定。
可编程定时器、计数器8253
通道 (计数器)
工作方式
方式选择控制字
计数初值
0
0(计数结束 中断方式)
ModCr0= 00 01, 000 0B
(=10H)
n0=100
1
3(方波发生 器)
ModCr1= 001 11, 011 0B
(=76H)
n1 =
TOUT1 TCLK1
=
fCLK1 fOUT1
=
2.5 *106 1000
= 2500
4、8253的工作方式
8253提供6种工作方式,遵循以下基本原则: (1)控制字写入计数器8253的控制字寄存器,所有的
控制逻辑电路复位,输出端进入初始状态; (2)初始计数值写入后,经过一个CLK脉冲后,才在
输入脉冲的CLK的下降沿,计数器作减1计数。
定时与计数 本质上是一回事:
不管是定时,还是计数,计数器都是对C3——方波发生器
例: 设8253的端口地址是80H~83H。欲使计数器1输出频率为1KHz 的方波, 从CLK1端输入2.5MHz的时钟脉冲. 试编写初始化程序.
8253使用前,需初始化: 先写入工作方式控制字,再写入计数初值: 方式控制字规定某个通道的工作方式。将控制字写入控制寄存器端口.
2
0(计数结束 中断方式)
ModCr2= 010 11, 000 1B
(=B1H)
n2
=
TOUT2 TCLK 2
=
1 TCLK 2
= fCLK2
= 1000
由图9-23(a), n1 * TCLK1 = TOUT1
其它内容自学
附图:8253的工作方式控制字
控制字——规定某个计数器/通道的工作方式。
可编程定时计数器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及其应用
CW=1A WR
LSB=3
CLK
GATE
OUT
3 2 3 2 1 0 FF
* 计数器只计数一次; * OUT是N+1个CLK后变低; * 在 计数过程中出现的GATE脉 冲, 将使 计数器重新开始计数,
对输出状态没有影响;
* 若在计数过程中改变计数值, 只要没有GATE信号触发,不影 响计数过程。有新的GATE信号 触发则按新的计数值开始计数。
在计数过程中,8253读计数器现行值的方法: (将计数值存入内部锁存器)
MOV OUT IN MOV IN MOV
AL,03H ;计数器0的锁存命令 0FBH,AL;写入控制寄存器 AL,0F8H ;读低8位 CL,AL ;存入CL中 AL,0F8H ;读高8位 CH,AL ;存入CH中
例2:用8253产生各种定时波形。
CW=16 WR
LSB=5
CLK GATE=1
OUT
5 42 5 2 5 4 2 52
*GATE信号控制计数过程;
*计数过程中写入新的计 数值将在半周期结束时装 入计数器。
例:要求计数器0工作于方式3,输出方波的频率为2KHz,计数 脉冲的频率为2.5MHz,采用BCD计数,试写出初始化程序段。
1. 8253的端口地址为:80H,81H,82H,83H。
* 写入控制字OUT=1, 写入常数不计数;
* GATE启动计数, OUT=0;
CW=12 LSB=3 WR
CL二K . 8253-PIT的工作方式
GATE
* 计数到,OUT=1。
OUT
32
1 0 FF 3
CW=12 LSB=3
WR
CL二K . 8253-PIT的工作方式
第8讲_可编程计数(定时)器8253
21/38
三、8253的工作方式
(2)方式1:可重复触发的单稳态触发器(稳定在高,暂稳在 CW N=2 低) WR
CLK GATE OUT GATE OUT 2 1 2 1 0 2 1 0 2 1 0
提前触发,则输出脉冲加宽
硬件启动(触发:即边沿引起计数),不自动重复计数; 过程:写入控制字后OUT=1;写入计数初值后不计数,GATE 由低变高(触发)后下一个CLK下沿开始计数,OUT=0;减1 为0,OUT=1;OUT端输出N倍CLK的负脉冲。
第八讲 可编程计数器/定时器Intel8253
主要内容
计数/定时器8253引脚功能和内部结
构; 8253控制字/锁存字; 8253的6种工作方式及其使用; 8253应用:系统连接、初始化编程。
2/38
一、8253引脚和内部结构
1.1 概述 定时/计数器的用途? 可以实现定时与计数两个功能,常用于:系统时钟、 DRAM刷新定时、定时采样、实时控制(如:交通信号灯)、 事件/脉冲计数等。 如何实现定时? 软件方法:CPU执行一段程序实现延时。利用程序循环延 迟指定的时间;缺点:CPU占用率?延时精度?兼容? 硬件方法:不可编程的定时/计数器电路,如定时器555, 单稳触发器等;缺点:不可编程、不够灵活。
8/38
主要内容
计数/定时器8253引脚功能和内部
结构; 8253控制字/锁存字; 8253的6种工作方式及其使用; 8253应用:系统连接、初始化编程。
9/38
二、8253控制字/锁存字
1、 计数启动方法 软件启动:CPU用输出指令向计数器写入初值后启动计数; 硬件启动:写入初值后不启动计数,外部电路信号(GATE) 启动计数。 (1)软件启动过程 • 门控信号GATE端保持为高电平; • 写入计数初值后第1个CLK,初值寄存器内容送计数器(CE); • 第2个CLK下降沿计数器(CE)开始减1计数,直到为0,OUT端 输出一个信号; • 实际CLK个数比写入的计数初值N多一个,即N+1。 (2)硬件启动过程 写入计数初值后不启动计数;门控信号GATE端低变高 CLK上升沿采样GATE;有,则该CLK的下降沿开始计数。
可编程计数器(定时器)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
第九章可编程定时计数器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读取计数通道的当前计数值来自计数值锁存器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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表示计数器计数方式选择位。
8253的内部结构框图如图10. 1所示;引脚如图10. 2所示。
8253内部可分为6个模块,每个模块的功能如下:
1. 数据总线缓冲器及数据总线D0~D7
这是8253与CPU数据总线连接的8位双向三态缓冲器,是8253内部总线与CPU系统的8位数据总线之间的接口。
CPU通过它写方式控制字到控制字寄存器,写计数初值到计数通道,读取计数通道的当前计数值。
即数据总线缓冲器有三个基本功能:通过编程向8253写入确定8253工作方式的命令;向计数寄存器装入计数初值;读出当前计数值。
2. 读/写控制逻辑及控制引脚
这是8253内部操作的控制部分,按照CPU发来的读写信号及地址信号来控制对各个计数器的读写,以及对控制寄存器的写入。
当片选信号
为高电平时,数据总线缓冲器处于高阻状态。
当片选信号有效时(低电平),CPU可以
对8253某端口进行读/写操作。
8253内部有3个独立的计数通道和1个控制字寄存器共4个端口,由A1和A0加以选择,但对控制字寄存器仅能进行写操作。
各个端口的读/写操作的选择见表10. 1。
注意点是控制寄存器只能写入不能读出。
3. 控制字寄存器
在初始化编程时,CPU写入方式控制字到控制字寄存器中,用以选择计数通道及其相应的工作方式。
4. 计数通道0、计数通道1、计数通道2
3个计数通道内部结构完全相同。
每个计数通道都由一个16位计数初值寄存器、一个16位减法计数器和一个16位计数值锁存器组成。
3个计数通道操作完全独立。
初始化编程时,虽然3个计数通道共用一个控制字寄存器端口地址,但CPU可以分别写3个方式控制字到控制字寄存器,分别选择各计数通道的工作方式。
在写计数初值到计数通道或CPU读取计数通道到当前计数值时,各计数通道都有各自的端口地址。
3个计数通道功能完全相同。
在设定了计数通道的工作方式后,接着可向该计数通道装入计数初值,该计数初值先送到计数初值寄存器保存,在GATE引脚为高电平时(方式0、2、3、4)或在GATE上升沿触发下(方式1、2、3、5),计数初值寄存器中的值自动装入到减法计数器中。
并启动计数器计数,减法计数器对CLK时钟脉冲的下降沿进行减1
计数(方式3不是减1计数),并把结果送入计数值锁存器中。
当减1计数器减到0时,输出OUT信号,一次计数结束。
计数初值寄存器的内容,在计数过程中保持不变。
CPU读取计数通道当前计数值,实际上读取的是16位计数值锁存器的内容。
在计数通道用作定时器时,可在该通道CLK端输入一个频率精确已知的时钟脉冲,根据定时时间和公式:计数初值=定时时间÷时钟周期,计算出计数初值(也称时间常数)。
在计数通道用作计数器时,被计数的事件应以脉冲方式从CLK端输入。
各计数通道的CLK输入和OUT信号输出之间的关系与门控信号GATE有关,取决于工作方式。
ICL7135C 和TLC7135C 转换器用德州仪器公司高效率CMOS 工艺制造。
这种4 1/2 数
位、双斜率积分(dual-slope-integrating)模拟-数字转换器是为提供与微处理器和可视显示
二者的接口而设计的。
数字驱动输出端D1 至D4 以及多路复用的二—十进制代码
(binary-coded-decimal)输出端B1、B2、B4 和B8 提供适用于LED 或LCD 译码器/驱动器和微处理器的接口。
ICL7135C 和TLC7135C 提供50-ppm 的分辨率,其最大线性度误差为1 个计数值。
零
点误差小于10μV,零点漂移小于0.5μV/℃。
低输入电流(小于10pA)使源阻抗
(source-impedance)误差为最小。
翻转误差(roll over error)限制至±1 计数值。
、ICL7135 时序图
图2 所示是Vid 为常数时的ICL7135 时序图,由图2 可知:在Signal-Integrate(即信号
积分)相开始时,ICL7135 的BUSY 信号线跳高并一直保持高电平,直到De-integrate(去积分)
相结束时才跳回低电平。
在满量程情况下,这个区域中的最多脉冲个数为30002 个。
其中De-integrate(去积分)相的脉冲个数反映了转换结果。
图3 是不同Vid 值时的ICL7135 时序。
由图3 可见:对于不同模拟量输入,ICL7135 的BUSY 信号的高电平宽度也不同。
图4 所示的是数据输出的时序,每次转换完成后(BUSY 变成低电平),数据开始输出。
STROBE 是数据锁存信号,每输出一个负脉冲就输出一位数据(D5-D1,B8,B4,B2,B1)。
每位数据占用200 个时钟,因此输出一次转换结果要1000 个时钟。
1.3、7135 的其它输出信号
(1)OVER-RANGE(超范围)输出
当超范围(over-range)条件发生时,在测量周期结束时BUSY(忙)信号变为低电平
之后,此引脚变为高电平。
如前所述,当超范围条件发生时,BUSY(忙)信号将保持高电平直至测量周期结束为止。
OVER RANGE(超范围)输出在BUSY(忙)结束时变为高电
平,且在下一次测量周期的去积分(deintegrate)相开始时变为低电平。
(2)UNDER-RANGE (欠范围)输出
当转换结果小于或等于满度范围的9%(1800 个计数)时,在BUSY(忙)信号结束时
此引脚变为高电平。
UNDER RANGE(欠范围)输出在下一测量周期的信号积分(Signal integrate)相开始时变为低电平。
(3)POLARITY (极性)输出
对于正输入信号, POLARITY (极性)输出为高电平且在每一个去积分( deintegrate )相的开始处更新。
对包括±0 和OVER RANGE(超范围)信号的所有输入,极性(Polarity)输出均有效。