540 likes | 664 Views
第三章 定时/计数技术. 本章重点 : (1)定时与计数的概念理解 (2)8254的外部特性及内部工作方式的理解 (3)8254方式命令字及计数初值的设置 (5)8254的应用 (4) 实时钟电路 MCl46818 及其应用. 3.1 8254/8253定时计数器. 1.定时与计数 2.微机系统中的定时 微机系统中常为 CPU 或外设提供时间标记、对外部事件计数。需要系统的定时问题。 微机系统中的定时可分为两种: 内部定时和外部定时。 内部定时 是计算机本身运行的时间基准或时序关系。 外部定时 是外设实现某种功能时,本身所需要的一种时序关系。
E N D
第三章 定时/计数技术 • • 本章重点: • (1)定时与计数的概念理解 • (2)8254的外部特性及内部工作方式的理解 • (3)8254方式命令字及计数初值的设置 • (5)8254的应用 • (4)实时钟电路MCl46818及其应用
3.1 8254/8253定时计数器 • 1.定时与计数 • 2.微机系统中的定时 • 微机系统中常为CPU或外设提供时间标记、对外部事件计数。需要系统的定时问题。 • 微机系统中的定时可分为两种:内部定时和外部定时。 • 内部定时是计算机本身运行的时间基准或时序关系。 • 外部定时是外设实现某种功能时,本身所需要的一种时序关系。 • 本章重点讨论外部定时技术 • 3.定时方法 • (1)软件定时(软件编程,占用CPU,效率低等) • (2)硬件定时(定时/计数器或单稳延时电路,不占用CPU时间,准确、不受主频影响、定时时间长等)
3.1 8253/8254定时计数器 • 3个独立的16位计数器通道 • 每个计数器有6种工作方式 • 按二进制或十进制(BCD码)计数 8254是8253的改进型
计数器的3个引脚 • CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1 • GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型 • OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
2. 与处理器接口 • D0 ~ D7数据线 A0 ~ A1地址线 • RD*读信号 WR*写信号 • CS*片选信号
3.2 可编程定时计数器8253/8254 • 外部特性与内部逻辑 • 1.外部特性 • 8253是24引脚的DIP封装芯片,+5V供电,内有三个独立的计数器,每个计数器有单独的时钟、计数输出、门控制。引脚定义如下图: • ①数据总线,D0~D7:为三态输出/输入线。用于将8254与系统数据总线相连 。 • ②片选线/CS:为输入信号,低电子有效。 • ③读信号/RD:为输入信号,低电平有效。它由CPU发出,用于对8253寄存器进行读操作。 • ④写信号/WR:为输入信号,低电子有效。它由
外部特性与内部逻辑 • CPU发出,用于对8253寄存器进行写操作。 • ⑤地址线A1A0与CPU系统地址总线A1A0相连,与/CS一起用于选通8253内部寄存器。 • ⑥计数器时钟信号CLK;为输入信号。是8253的计数时钟。 • ⑦计数器门控选通信号GATE:为输入信号。GATE信号的作用是用来禁止、允许或开始计数过程的。 • ⑧计数器输出信号OUT:为输出信号。 OUT信号的作用是,计数器工作时,每来1个时钟脉冲,计数器减1,当计数值减为0,就在输出线上输出一OUT信号,以示定时或计数已到。
外部特性与内部逻辑 • 2.内部逻辑结构 • ①数据总线缓冲器。它是一个三态、双向8位寄存器,用于将8253与系统数据总线Do—D7相连。功能:向8253写入确定8253工作方式的命令;向计数寄存器装入初值;读出计数器的初值或当前值。 • ②读/写逻辑。确定操作那一个寄存器。 • ③控制命令寄存器。它接受CPU送来的控制字。 用于选择计数器及其工作方式。 • ④计数器。3个独立的计数器内部结构完全相同,如图3.3所示。由16位计数初值寄存器、减1计数器和当前计数值锁存器组成。
CLK 数据总线 0 D7~D0 计数器0 GATE 缓冲器 0 OUT 内 0 RD 部 WR 读写控制 逻辑 CLK 1 A 数 计数器1 0 GATE A 1 1 据 OUT 1 CS 总 CLK 控制字 2 计数器2 线 GATE 寄存器 2 OUT 2 图3.2 8253/8254的内部结构和引脚
计数初值的设置与方式命令字 • 计数初值(定时常数)是决定8253的定时长短与计数多少的重要参数。计数初值与输入时钟(CLK)频率及输出波形(OUT)频率之间的关系为:Ci=CLK/OUT或Tc=CLK/OUT 1.方式命令的作用对8253进行初始化,或对当前计数值进行锁存。8253初始化: (1)向命令寄存器写入方式命令,选择计数器,确定工作方式,指定计数器计数初值的长度和装入顺序以及计数值的码制(BCD码或二进制码) .(2)向已选定的计数器按方式命令的要求写入计数初值。
计数初值的设置与方式命令字 • 2.方式命令的格式 • 方式命令的格式如下所示: • ①D7D6:用于选择计数器。 • =00 0号计数器 • =01 1号计数器 • =10 2号计数器 • =11 不用
计数初值设置 • ②D5D4:用来控制计数器读/写的字节数(1或2个字节)及读/写高低字节的顺序。 • =00 为锁存命令,把计数器的当前值锁 存在锁存寄存器中. • =01 仅读/写一个低字节 • =10 仅读/写一个高字节 • =11 读/写2个字节,先是低字节,后是高字节. • ③D3~D1:用来选择计数器的工作方式。 • =000 方式 0 =011 方式3 • =001 方式1 =100 方式4 • =010 方式 2 =101 方式5
计数初值的设置与方式命令字 • (110和111不用) • ④Do(BCD):用来指定计数器的码制,是按二进制数还是按十进制数计数。 • BCD=0 二进制BCD=1 十进制 • 例1:选择2号计数器,工作在方式3,计数初值为533H(2个字节),采用二进制计数。命令口地址307H,二号计数器数据口地址是306H。 • 初始化程序段为 MOV DX,307H ;命令口 MOV AL,10110110B;2号计数器的初始化命令字 OUT DX,AL ;写入命令寄存器
计数初值的设置与方式命令字 MOV DX,306H ;2号计数器数据口 MOV AX,533H ;计数初值 OUT DX,AL ;先送低字节到2号计数器 MOV AL,AH ;取高字节送AL OUT DX,AL ;后送低字节到2号计数器 • 3.读当前计数值 • 操作过程:先发一条锁存命令(即方式命令中的D5D4=00),将减1计数器的计数值锁存到输出锁存器;然后,执行读操作,便可得到当前计数值。
计数初值的设置与方式命令字 例2:要求读出并检查1号计数器的当前计数值是否是全“1”(假定计数值只有低8位), • 其程序段为 MOV DX,307H ;命令口 L:MOV AL,01000000B ;送1号计数器初始化命令字 OUT DX,AL ;写入命令寄存器 MOV DX,305H ;1号计数器数据口 IN AL,DX ;读1号计数器的当前计数值 CMP AL,,0FFH JNE L HLT
工作方式及特点 • 8253/8254有六种工作方式,主要区别在于: (1)输出波形不同;(2)启动计数器的触发方式不同;(3)计数过程中GATE对计数操作的控制不同。 • 1.方式0:低电平输出(GATE信号上升沿继续计数) • 特点: (1)向计数器写完计数值后,开始计数,OUT变为低电平,并在计数过程中保持低电平,计数值减为0时,OUT变为高电平。(2)GATE为高电平时,计数器开始工作,GATE为低电平时,停止计数,并保持数值不变,GATE再次变高电平时,从中止处继续计数。(3)计数器工作期间,如果重新写入初值,按新写入的初值重新计数。
2.方式1:低电平输出(GATE信号上升沿重新计数)2.方式1:低电平输出(GATE信号上升沿重新计数)
3.3 8253-5/8254-2的应用举例 • 8253 的典型应用: • 1.计时器-时钟 • 2.实现稳定延时 • 3.和扬声器一起构成发生器 • 4.波特率时钟发生器 • 应用举例:1、一般性的应用: • (1)设计思想: 8253 的时钟为5MHZ,8253工作在方式3时,OUT引脚输出一系列方波,可作为定时单位,采用定时单位为10ms时,可以在OUT引脚上输出周期性的方波,且具有自动重载计数初值的功能。
计时器的应用 • 如果用OUT脚输出的方波做新的计时单位,为了编程方便,可以使方波的周期为10ms. • 硬件连接可以选择图3.10的设计。 • 8253的OUT引脚每经过10ms向CPU申请一次中断。在中断子程序中统计10ms的个数,到达100个则1秒时间到,秒计数器加1。并判断秒计数器的值是否为60,是,则分计数器加1。依次类推,实现时分秒计数器的更新。到达24小时后,所有计数器清零,新的一天的计时开始。下列代码是初始化程序。
计时器的应用 • 初始化程序段如下: • Count_10ms EQU 2000H • Count_scend EQU 2001H • Count_minut EQU 2002H • Count_hour EQU 2003H • ………. • MOV AL,0 MOV Count_10ms,AL;初期上电,RAM MOV Count_scend,AL;清零。 MOV Count_minut,AL MOV Count_hour,AL
计时器的应用 MOV DX,307H MOV AL,00110110 OUT DX,AL ;初始化8253 MOV DX,304 MOV AL,50H ;送计数初值低位 OUT DX,AL MOV AL,0C3 ;送计数初值高位 OUT DX,AL
计时器的应用 • 应用举例:2、系统中日时钟的应用: • 系统中的日时钟原理介绍: • (1)系统中8253的时钟为1.1931816MHZ。 • (2)8253工作在方式3,计数初值设为最大-65536。(设选用8253的计数器0) • (3)OUT0引脚输出的方波频率:1.1931816MHZ/65536=18.2HZ • 周期为1/18.2HZ×1000ms=54.945ms. • (3)计时单位: 54.945ms为一个基准单位,且准确。则:
计时器的应用 1天=24×60×60×1000ms/54.954ms=1573040(个计时单位); 1小时= 60×60×1000ms/54.954ms=65543(个计时单位); 1分钟= 60×1000ms/54.954ms=1092(个计时单位); 1秒= 1000ms/54.954ms=18.2(个计时单位) • (4)新的计时单位的计数机构: • 利用OUT0引脚向8259申请中断,在中断程序 中进行加1操作,实现对新的计时单位的累计,完成对一天计时的任务。
计时器的应用 • 实现方法:在BIOS数据区开辟两个双字的存储单元作为每次加1操作的RAM。则该双字RAM中存放的就是当前的时间。当低位字=00B0H,高位字=0018H时,则计满24小时,然后清零,重新加1操作,开始第二天的计时。 • 注:如果要得到当前时间要进行下列计算: • A、小时数=RAM中的值除以65543; • B、分钟数= A的余数除以1092; • C、秒数= B的余数再除以18.2
计时器的应用 • 应用举例: 3.稳定延时 • (1)要求:利用系统硬件定时器延时5秒 • (2)分析: • A、利用定时器每秒中断18.2速率不变的特性,通过调用BIOS的软中断INT1AH的0号功能,读取时间计数器的当前值。 • B、将延时时间换算成计时单位(即多少个54.954ms)加上时间计数器的当前值,作为定时器的目标值。 • C、利用INT1AH的0号功能调用,不断读取时间计数器的值并与目标值比较。相等则定时时间到,不等则继续延时。
计时器的应用 • D、这样延时的好处在于:定时时间与CPU的主频无关,只与8253的时钟频率有关。延时较稳定。 • (3)设计 • A、利用系统资源,硬件不需改动。 • B、软件编程(延时5秒时,折合成计时单位=91) MOV AH,0H INT1AH ;中断调用,读取日时钟 ADD DX,91H MOV BX,DX REP: MOV AH,0H INT1AH
计时器的应用 CMP DX,BX ;与目标值比较 JNZ REP ;不等,继续延时,相等,延 ;时结束,程序向下执行 应用举例: 4、发生器 原理还是利用8253的工作方式3,不断输出一定频率的方波,将此方波接至扬声器,控制发声,方波的频率不同,则扬声器的声音频率就不同。 程序略。
计时器的应用 • 应用举例: 5. 波特率时钟发生器 • (1)要求: 设计一个波特率时钟发生器,其输入时钟CIK=1.19318MHz,波特率因子facbr=16,输出的波特率为8档,它们分别是110b/s,150b/s,300b/s,600b/s,1200b/s,2400b/s,4800b/s,9600b/s。要求利用人-机对话方式选择波特率。按Esc键,退出。 • (2)分析: • A、波特率的概念:每秒钟传输的二进制数的位数。 • B、波特率因子 的概念:每传输1位所需要的时钟脉冲个数,叫做波特率因子 。
计时器的应用 • C、传输原理:在实际传输中,发送1位或接收1位数据,是在时钟脉冲作用下,进行移位来实现的。发送时,用发送时钟,从发送器移出;接收时,用接收时钟,向接收器移入。(复习移位寄存器的应用) • D、8253定时常数的计算: 由波特率及波特率因子的概念可得: 串行传输的频率TxC=波特率Baud×波特率因子Factor; 设计要求:串行传输的频率TxC=OUT输出的频率,因此有:
计时器的应用 OUT=CLK/Tc=Baud×Factor; 所以:定时常数Tc=CLK/Baud×Factor 由此可计算出上述8种波特率下的定时常数分别为:678H、497H、249H、124H、62H、31H、16H、8H。 (3)设计 A、硬件设计:波特率时钟发生器的硬件包括定时/计数器8253、并行接口芯片8255A及I/O端口地址译码电路等,如图3.14所示。
计时器的应用 • B、软件编程:
3.4 实时钟电路MCl46818及其应用 • 什么是实时时钟:不仅支持每天时间(时、分、秒)的更新,而且支持日期(世纪、年、月、日和星期)的更新的一种永久性的时钟电路。 • MCl46818是PC机中的实时时钟芯片。 • MCl46818的外部特性及工作原理 • 1.引脚功能
实时钟电路MCl46818及其应用 • ①地址/数据线(ADo~AD1):双向,双功能,既传送地址,又传送数据,是CPU对芯片内部64个字节实时钟信息访问的通道。 • ②读/写控制线:在引脚PS和CE同时有效的条件下,CPU通过 ADo~AD1、AS、DS 、R/W信号共同完成读写操作。 • PS为电源检测端。当该端为低电平时,表示实时钟已掉电(或电池耗尽);当该端为高电平时,表示电源接通 。 • ③芯片复位线(RES):当RES=0时,芯片复位,将内部状态寄存器B的允许中断位清零,并置引脚/IRQ为高阻,但并不影响内部时钟电路和CMOSRAM的操作。
实时钟电路MCl46818及其应用 • ④振荡频率输入(OSC1、OSC2) 。 • ⑤方波(SQW) 输出引脚。 • ⑥时钟输出线(CKOUT) 。 • 2. 实时钟工作原理
实时钟电路MCl46818及其应用 • 实时钟的定时信息在CMOS-RAM中的地址分配: • 芯片提供64个字节存放实时钟信息和系统配置信息,及控制实时钟电路的工作的状态寄存器 。
实时钟电路MCl46818及其应用 • 1.时间信息 • 2.日期信息 • 3.报警信息 • 实时钟的状态寄存器 • 1. 状态寄存器A • UIP=1表示实时钟更新信息,不能读写;UIP=0,可以读写。
实时钟电路MCl46818及其应用 • 2. 状态寄存器B • TE:计时允许位 ;PIE:周期中断允许位 ; AIE:报警中断允许位 ; UIE:计时更新结束中断允许位 ;SQWE:方波输出允许位; DM:实时钟信息格式选择位 ,当DM=1时,选择二进制格式;当DM=0时 ,选择BCD格式;DSE:允许夏令时为1,否则为0 • 3.状态寄存器C