微机原理与接口技术-电子教案-梁建武 第5章2

上传人:E**** 文档编号:89439412 上传时间:2019-05-25 格式:PPT 页数:38 大小:1.08MB
返回 下载 相关 举报
微机原理与接口技术-电子教案-梁建武 第5章2_第1页
第1页 / 共38页
微机原理与接口技术-电子教案-梁建武 第5章2_第2页
第2页 / 共38页
微机原理与接口技术-电子教案-梁建武 第5章2_第3页
第3页 / 共38页
微机原理与接口技术-电子教案-梁建武 第5章2_第4页
第4页 / 共38页
微机原理与接口技术-电子教案-梁建武 第5章2_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《微机原理与接口技术-电子教案-梁建武 第5章2》由会员分享,可在线阅读,更多相关《微机原理与接口技术-电子教案-梁建武 第5章2(38页珍藏版)》请在金锄头文库上搜索。

1、微机原理及接口技术,主编 梁建武,中国水利水电出版社,5.2 定时/计数器控制接口技术,定时控制在微机系统中极为重要 定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔 计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器,定时功能的实现方法,在微机应用系统中,经常会有这样的应用要求:一种是要求有一些外部实时时钟,以实现延时控制或定时;另一种是要求能对外部事件计数的计数器。在微机系统中,常采用一下三种方法实现:软件定时,不可编程硬件定时和可编程硬件定时。 软件延时利用微处理器执行一个延时程序段实

2、现 不可编程的硬件定时采用分频器、单稳电路或简易定时电路控制定时时间 可编程的硬件定时软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路,5.2.1 8253/8254定时计数器,3个独立的16位计数器通道 每个计数器有6种工作方式 按二进制或十进制(BCD码)计数,8254是8253的改进型,1. 8253/8254的内部结构和引脚,计数器结构示意图,计数初值存于预置寄存器; 在计数过程中, 减法计数器的值不断递减, 而预置寄存器中的预置不变。 输出锁存器用于写入锁存命令时, 锁定当前计数值,计数器的3个引脚,CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计

3、数器的计数值减1 GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型 OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号,2. 与处理器接口,D0 D7数据线 A0 A1地址线 RD*读信号 WR*写信号 CS*片选信号,5.2.2 8253/8254的工作方式,8253有6种工作方式,由方式控制字确定 熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式 每种工作方式的过程类似: 设定工作方式 设定计数初值 硬件启动 计数初值进入减1计数器 每输入一个时钟计数器减1的计数过程 计数过程结束,方式0 计数结束产生中断, 设 定

4、工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式1可编程单稳态触发器, 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,方式2 频率发生器(分频器),方式3 方波发生器,方式4 软件触发选通脉冲,方式5 硬件触发选通脉冲,各种工作方式的输出波形,讨论: 计数开始的时刻,计数开始的时刻,需要注意: 处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数

5、器。 从第二个CLK信号的下降沿,计数器才真正开始减1计数。,5.1.3 8253/8254的编程,8253加电后的工作方式不确定 8253必须初始化编程,才能正常工作 写入控制字 写入计数初值 读取计数值 8254新增读回命令,1 写入方式控制字,00 计数器0 01 计数器1 10 计数器2 11 非法,00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 010 方式2 011 方式3 100 方式4 101 方式5,0 二进制 1 十进制,控制字写入控制字I/O地址(A1A011),示例,2 写入计数值,选择二进

6、制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:00009999 0000代表最大值10000,计数值写入计数器各自的I/O地址,示例,3 读取计数值,对8位数据线,读取16位计数值需分两次 计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字I/O地址:给8253写入锁存命令 从计数器I/O地址:读取锁存的计数值,读取计数值,要注意读写格式和计数数制,4. 8253应用举例,在PC系列机中,使用了1片8253/8254,其内部3个计数器分别用于:日历时钟,包括年月日、时分秒,精确到0.01s;动态存储器刷新;声音,根据

7、不同的音频产生不同的频率信号,驱动扬声器。其连接如图所示。,4. 8253应用举例 续,8253/8254的I/O地址范围是040H05FH,计数器0、计数器1、计数器2的计数器端口地址分别为40H、41H和42H,控制字的端口地址为43H。3个计数器的时钟信号CLK0CLK2由系统时钟分频后得到1.19318MHz提供。,(1) 计数器0,计数器0是一个产生实时时钟信号的系统计时器。利用它系统可以完成日历时钟计数、写操作后的电动机的自动延迟停机以及为用户提供定时中断调用。用户可以使用这个中断调用运行自己的中断处理程序。 以下为系统ROM-BIOS对计数器0的初始化编程: MOV AL, 36

8、h ;计数器0为方式3,采用二进制计数,先低后高写入计数值 OUT 43H, AL ;写入方式控制字 MOV AL, 0 ;计数初值0 OUT 40H, AL ;写入低字节计数初值 MOV AL, AH OUT 40H, AL ;写入高字节计数初值,(2) 计数器1,计数器1专门用作DRAM定时刷新请求。PC/XT机要求在2ms内进行128此刷新操作,PC/AT机要求在4ms内进行256次刷新操作,由此可知,每隔2ms/128 = 15.6s必须进行一次刷新。这样计数器1的GATE1接+5V,CLK1输入为1.19318MHz方波,采用工作方式2,减“1”计数器CE的预置计数初值为18,因此在

9、OUT2端输出一负脉冲,周期为18/1.19318 = 15.084s,该信号作为D触发器的触发时钟信号,使每隔15.084s产生一个正脉冲,周期性地对DRAM进行刷新,满足刷新要求,初始化程序如下: MOV AL, 54H ;计数器1采用工作方式2,二进制计数,写入低8位 OUT 43H, AL MOV AL, 18 ;计数初值为48 OUT 41H, AL,(3) 计数器2,PC系列机利用计数器2的输出控制扬声器的发声,作为机器的报警信号或伴音信号。计数器2的时钟输入CLK2输入为1.19318MHz方波,采用工作方式3,系统中初值寄存器的内容预置为0533H(十进制1331),当GATE

10、2为高电平时,OUT2输出频率为1.19318MHz/1331 = 900Hz的方波,该方波信号经放大和滤波后可以推动扬声器发声。实现扬声器发声的程序如下: Speaker PROC PUSH AX MOV AL, 0B6H ;计数器2采用工作方式3,先低后高写入16为计数初值 OUT 43H, AL POP AX OUT 42H, AL ;写入计数初值 MOV AL, aH OUT 42, AL RET Speaker ENDP,(3) 计数器2 续,;扬声器打开子程序 SpeakerOn PROC PUSH AX IN AL, 61H ;读取61H端口的控制信息 OR AL, 03H ;D

11、1D0 = PB1PB0 = 11B OUT 61H, AL ;控制打开发声 POP AX RET SpeakerOn ENDP ;扬声器关闭子程序 SpeakerOff PROC PUSH AX IN AL, 61H AND AL, 0FCH ;D1D0 = PB1PB0 = 00B OUT 61H, AL ;控制关闭发声 POP AX RET SpeakerOff ENDP,(4) 软件延时,BIOS的15H号中断调用的86号子功能,该中断调用可以使用户很好的实现较短时间的延时。 中断调用命令:INT 15H,子功能号:AH = 86H; 入口参数:CX.DX = 延时时间的微秒值(CX是

12、高16位、DX是低16位), 出口参数:标志位CF = 0,表示成功,执行了延时,CF = 1,表示不成功,未执行延时。 虽然以微妙为单位,但因为实时时钟的最小单位是976.5625s(1/1024Hz),所以,实际上该功能调用的实际延时是976s的整数倍。例如要延时 1s,可以用以下程序: MOV AH, 86H MOV CX, 15 ;1000000 微秒的高 16位 MOV DX, 16960 ;1000000微秒的低 16 位 INT 15H,4. 8253应用举例 续,例:用8254作为某数据采集系统的定时器,每隔10ms用中断方式采集一次数据,已知输入时钟频率为10kHz,8259

13、端口地址为2021H,中断类型号为13H,8254端口地址为4043H,请为8259和8254编制初始化程序。 程序源代码: INT0 EQU 20H INT1 EQU 21H D8254 EQU 43H D8254A EQU 40H STACK SEGMENT STACK STA DW 50 DUP(?) TOP EQU LENGTH STA STACK ENDS,4. 8253应用举例 续,CODE SEGMENT ORG 1000H ASSUME CS:CODE,DS:CODE,SS:STACK START: ;初始化 ;设置中断的入口地址 XOR BX,BX PUSH BX POP D

14、S ;将DS清零 CLI ;关中断 ;如果设置8259的起始中断向量号为10 ;以下6个中断向量分别分配给IRQ0、IRQ1、IRQ2、IRQ3. LEA AX,IRQ0_INTERRUPT ;中断向量10H MOV DS:WORD PTR64,AX MOV DS:WORD PTR66,CS NOP,LEA AX,IRQ1_INTERRUPT ;中断向量11H MOV DS:WORD PTR68,AX MOV DS:WORD PTR70,CS NOP LEA AX,IRQ2_INTERRUPT ;中断向量12H MOV DS:WORD PTR72,AX MOV DS:WORD PTR74,CS

15、 NOP LEA AX,IRQ3_INTERRUPT ;中断向量13H MOV DS:WORD PTR76,AX MOV DS:WORD PTR78,CS NOP PUSH CS ;将CS中的内容传到DS POP DS,4. 8253应用举例 续,;初始化8259 CLI ;关中断 ;ICW1: 特征 A0 = 0 , D4 = 1 ;边沿触发要求上升沿后保持高电平, MOV AL, 00010011B ;边沿触发,单片使用,需要ICW4 OUT INT0, AL JMP $+2 ;延时 ;ICW2: 特征 A0 = 1 按顺序判断 MOV AL, 00010000B ;中断矢量从10H号开始 OUT INT1, AL JMP $+2 ;ICW4: 特征 A0 = 1 按顺序判断,ICW1设置要ICW4 ;EOI,全嵌套方式,非缓冲,86/88系统 MOV AL, 00000001 ;采用全嵌套,非缓冲,非自动结束,16位微机处理 OUT INT1, AL JMP $+2,4. 8253应用举例 续,;8259操作命令 ;*

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号