第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用 第五节 8253的应用
第一节 概述 定时/计数器可以实现定时与计数两个功能,可用于: 系统时钟 DRAM刷新定时 定时采样 实时控制 脉冲的计数 。。。
如何实现定时? 软件方法:用一段程序实现延时 硬件方法:定时/计数器电路 利用程序循环延迟指定的时间 缺点:CPU占用率?延时精度?兼容? 利用脉冲计数在设定的时间输出定时信号 ● 8253是一种硬件定时/计数器芯片
外部引线及内部结构 8253概貌 3个16位的定时/计数器(通道) 24引脚双列直插式 最高计数频率2MHz TTL电平兼容 单电源+5V供电
3个独立的16位计数器通道 每个通道都可以通过编程设定为6种工作方式之一 可设定为按二进制计数或二―十进制计数 8253的基本功能 3个独立的16位计数器通道 每个通道都可以通过编程设定为6种工作方式之一 可设定为按二进制计数或二―十进制计数
8253的内部结构和引脚信号 A0 A1 CS 计数器 1 2 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 数据 总线 1 2 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 数据 总线 缓冲器 读/写 控制 电路 RD WR A0 A1 CS 内部总线 D7-D0
外部引线及内部结构 连接系统端的主要引线: D7~D0 CS RD WR A1,A0 A1 A0 选 择 0 0 计数通道0 用于选择四个编址部件之一 A1 A0 选 择 0 0 计数通道0 0 1 计数通道1 1 0 计数通道2 1 1 控制寄存器
外部引线及内部结构 计数通道的主要引线(每通道均相同): CLKn 时钟脉冲输入,计数器的计时基准。 GATEn 门控信号输入,控制计数器的启停。 OUTn 计数器输出信号,不同工作方式下 产生不同波形。 (n = 0~2)
图9-1 计数器逻辑图
定时/计数器的工作过程 1. 设置8253的工作方式 2. 设置计数初值到初值寄存器 3. 第一个CLK信号使初值寄存器的内容置入 计数寄存器 4. 以后每来一个CLK信号,计数寄存器减1 5. 减到0时,OUT端输出一特殊波形的信号 注:以上计数过程中还受到GATE信号的控制
CPU通过OUT指令把控制字写入控制寄存器。 第二节 Intel 8253的控制字 用于确定各计数器的工作方式。 8253必须先初始化才能正常工作。 每个计数器都必须初始化一次。 CPU通过OUT指令把控制字写入控制寄存器。
控制字寄存器 (A1A0 = 1 1 ) SC1 SC0 RL1 RL0 M2 M1 M0 BCD 1 BCD码计数 0 2进制计数 0 2进制计数 00 计数器0 01 计数器1 10 计数器2 1 1 无效 计数器选择: 000 方式 0 001 方式 1 10 方式 2 11 方式 3 100 方式 4 101 方式 5 方式选择 读写操作 00 计数器锁存,供CPU读 01只读/写计数器低字节 10只读/写计数器高字节 11先读/写计数器低字节, 后读/写高字节 8253控制字
若要用通道1,工作在方式2,按二--十进制计数,计数值为1005H,端口地址为04H~07H,则初始化编程为: MOV AL,75H OUT 07H,AL MOV AL,05H OUT 05H,AL MOV AL,10H
读取通道0的16位计数值: MOV AL,00H OUT 07H,AL IN AL,04H MOV CL,AL MOV CH,AL
工作方式 第三节 Intel 8253的工作方式 方式1——可重复触发的单稳态触发器 方式2——频率发生器 方式3——方波发生器 方式0——计数结束中断 方式1——可重复触发的单稳态触发器 方式2——频率发生器 方式3——方波发生器 方式4——软件触发选通 方式5——硬件触发选通
8253的工作方式 1、方式0 CW=10 LSB=4 WR CLK GATE OUT 4 3 2 1 FF FE 图9-4 方式0的波形
图9-5 方式0 GATE信号的作用
图9-6 方式0 在计数过程改变计数值
方式0特点: (1)计数器只计数一遍 (2)输出信号OUT会在N+1个CLK脉冲后变高 (3)GATE变低电平可以停止计数过程 (4)改变计数立即有效
2、方式1 CW=12 LSB=3 WR CLK GATE OUT FF 3 2 1 3 2 图9-7 方式1的波形
图9-8 方式1 GATE信号的作用
LSB=4 图9-9 方式1在计数过程改变计数值
方式1特点: (1)计数到0后,如果有外部触发,就可以按原来的计数初值工作 (2)计数过程中GATE信号可以用作重新触发,计数器重新计数 (3)改变计数初值并不是立即有效
3、方式2 CW=14 LSB=3 WR CLK GATE OUT 3 2 1 0 2 1 图9-10 方式2的波形
图9-11 方式2 GATE信号的作用
图9-12 方式2在计数过程中改变计数值
方式2特点: (1)不用重新设置计数值,计数器可以连续工作 (2)以GATE信号停止计数。在GATE变成高电平后的下一个CLK脉冲,计数器恢复原来的初值,重新计数 (3)改变计数值不是立即有效
4、方式3 CW=16 LSB=4 WR CLK GATE OUT 4 2 4 2 4 2 4 2 4 2 图9-13 方式3波形(计数值为偶数)
图9-14 方式3波形(计数值为奇数)
图9-15 方式3 GATE信号的作用
方式3特点: (1)GATE信号由低变高可以使计数过程重新开始 (2)改变计数初值并不影响现行的计数过程
5、方式4 CW=18 LSB=3 WR CLK GATE OUT 3 2 1 FF FE FD 图9-16 方式4的波形
图9-17 方式4 GATE信号的作用
图9-18 方式4在计数过程中改变计数值
方式4特点: (1)如果设置计数初值为N,则输出信号OUT会在N+1个CLK脉冲后输出一个负脉冲。 (2)改变计数值为立即有效
6、方式5 CW=1A LSB=3 WR CLK GATE OUT 3 2 1 FF 3 图9-19 方式5的波形
图9-20 方式5 GATE信号的作用
图9-21 方式5在计数过程中改变计数值
方式5特点: (1)若设置计数值为N,则经过N+1个CLK脉冲后OUT引脚输出一个负脉冲 (2)GATE信号重新触发,可以令计数器重新计数 (3)改变计数初值并不是立即有效
工作方式总结
第四节 Intel 8253在IBM PC机上的应用
编程控制计算机扬声器发声: (1)通过PB1对扬声器控制 PB0=0使得8253计数器2的OUT2输出为高电平。然后通过编程使得PB1不断进行反相操作,高低电平分别持续相同的时间,使得输出一定频率的方波,驱动扬声器发声
参考程序
(2)通过8253计数器2对扬声器控制 8255PB0端口输出为高电平,使能8253计数器2;PB1端口也为高电平,打开与门。计数器2工作在方式3,通过预置合适的计数初值,使得计数器2输出一定频率的方波
参考程序
第五节 8253的应用 一、计算机钢琴程序 1、设计要求: 第五节 8253的应用 一、计算机钢琴程序 1、设计要求: 利用8253定时器的作用,通过控制计算机内部的扬声器,当键盘输入为数字键1~8的时候,依次发出1~8八个音调。当键盘输入为CTRL+C时推出“钢琴”状态
2、设计思路 各音符的频率值 键入字符 1 2 3 4 5 6 7 8 音符 频率值 524 588 660 698 784 880 988 1048 要使计算机成为可以弹奏的钢琴,需要使用系统调用的01H功能以接收键入字符,可以通过建立一张键入字符与频率值相关的表,在程序中通过查表的方法将键入字符转化成频率值
结束 键入字符值转化为查表偏移量 相除得到计数初值 初始化8253计数器2 延时 关闭与门,切断脉冲信号源 接收键入字符 是CTRL+C键? Y 结束 N 键入字符值转化为查表偏移量 常数120000H作为被除数 查表所得频率值作为除数 相除得到计数初值 初始化8253计数器2 设置8255PB1=PB0=1 延时 关闭与门,切断脉冲信号源
DATA SEGMENT TABLE DW 524,588,660,784,880,988,1048 DATA ENDS STACK SEGMENT STA DB 20 DUP (?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX
SING:MOV AH,01H INT 21H ;接收键入字符 CMP AL,03H ;是CTRL+C键? JZ DONE ;是则结束 SUB AL,31H SHL AL,01 ;转化为查表偏移量(每一表项占两字节) MOV BL,AL MOV AX,0000H MOV DX,12H MOV BH,00 DIV WORD PTR [TABLE+BX] ;相除求得频率值 MOV BX,AX MOV AL,10110110B OUT 43H,AL ;设置8253计数器控制字 MOV AX,BX OUT 42H,AL
MOV AL,AH OUT 42H,AL IN AL,61H OR AL,03H OUT 61H,AL ;打开与门 CALL DELAY ;软件延时 AND AL,0FCH OUT 61H,AL JMP SING DONE:MOV AX,4C00H ;结束 INT 21H DELAY PROC NEAR PUSH CX PUSH AX MOV AX,03H
LOOP1:MOV CX,0FFFFH LOOP2:DEC CX JNZ LOOP2 DEC AX JNZ LOOP1 POP AX POP CX RET DELAY ENDP CODE ENDS END START
二、自动计数系统。 当工件从光源与光敏电阻之间通过时,CLK0端即可接收到一个脉冲信号,由计数器0计数。每当有80个工件通过后,由输出端OUT0输出一个负脉冲作为中断请求信号通知CPU。CPU在处理该中断的中断服务程序中启动计数器1,由OUT1产生2000Hz的方波驱动蜂鸣器发声,提示工件以满80个,5秒后扬声器停止发声。
光敏电阻 驱动器 扬声器 CLK1 GATE1 5MHz 8255PA1 OUT0 TNT OUT1 光源 工件 R +5V