资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第八章 定时计数控制接口,华北电力大学 计算机系 刘丽,2,定时计数控制接口,8253的引脚和六种工作方式,8253的编程,8253在IBM PC系列机上的应用,教学重点,3,定时器和计数器,定时控制在微机系统中具有极为重要的作用,计数是许多过程控制领域常用的功能 它们都是由数字电路中的计数电路构成 定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔 计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器,4,定时功能的实现方法,软件延时 利用微处理器执行一个延时程序段实现 不用硬件,但占用CPU时间、定时精度不高,随系统时钟频率改变 不可编程的硬件定时 采用分频器、单稳电路或简易定时电路由外接RC电阻、电容电路控制定时时间 定时电路简单、定时时间可以在一定范围改变 可编程的硬件定时 软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路 具有多种工作方式、能够输出多种控制信号,5,8.1 8253/8254定时计数器,Intel8253是可编程间隔定时器(Programmable Interval Timer),同样也可以做事件计数器(Event Counter) 8253有3个独立的16位计数器通道 每个计数器有6种工作方式 按二进制或十进制(BCD码)计数,8254是8253的改进型,内部工作方式和外部引脚与8253完全相同,只是增加了一个读回命令和状态字,6,8.1.1 8253/8254的内部结构和引脚,7,1. 计数器,计数初值存于预置寄存器; 在计数过程中, 减法计数器的值不断递减, 而预置寄存器中的预置不变。 输出锁存器用于写入锁存命令时, 锁定当前计数值,8,计数器的3个引脚,CLK时钟输入信号 在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1 GATE门控输入信号 控制计数器工作,可分成电平控制和上升沿控制两种类型 OUT计数器输出信号 当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号,9,2. 与处理器接口,D0 D7数据线 A0 A1地址线 CS*片选信号 RD*读信号 WR*写信号,10,8.1.2 8253/8254的工作方式,8253有6种工作方式,由方式控制字确定 每种工作方式的过程类似: 设定工作方式 设定计数初值 硬件启动 ,方式1和方式5必须,GATE端出现上升沿 计数初值进入减1计数器 每输入一个时钟计数器减1的计数过程 计数过程结束,11,8253/8254的工作方式说明,方式0、1和4、5,如果不重新设定计数初值或提供硬件启动信号,计数器就此停止计数过程 方式2和3,计数值减至0后,自动将预置寄存器的计数初值送入减1计数器,同时重复下一次计数过程,直到写入新的方式控制字停止 若设置计数初值为N,则从输出指令写完计数初值到计数结束,CLK信号的下降沿有N+1个;但从第一个下降沿到最后一个下降沿之间正好是N个完整的CLK信号,说明,12,1.方式0:计数结束中断, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,输出OUT信号随即变为低电平,其输出OUT信号变为高电平,门控信号为高时允许计数,为低暂停计数,重新为高时,接着当前计数值继续计数 计数期间给计数器重装新值,在写入新值后重新开始计数,13,2.方式1:可编程单稳脉冲 (N时钟周期的单稳负脉冲), 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,计数过程中写入新的计数值,不影响当前计数;若再次由GATE触发启动,则按照新值开始计数。计数过程结束前,GATE再次触发,则计数器重新装入计数值,从头开始计数,输出OUT信号变为高,14,3.方式2:频率发生器(分频器),计数器减为1时,OUT变为低,经过一个CLK,回复为高,且计数器重新开始计数,计数过程中装入新值,将不影响现行计数;但从下个周期开始按新的计数值计数 GATE为低电平将停止计数,并使输出为高。GATE为高电平,计数器将重新装入预置计数值,开始计数。这样。GATE能用硬件对计数器进行同步,15,4.方式3:方波发生器,计数值为偶数时,前一半输出为高电平,后一半输出为低电平。如果计数值为奇数,前一半比后一半多一个时钟脉冲的高电平,随后输出为低,16,5.方式4:软件触发选通信号,这种计数是一次性的 计数过程中重新装入新值,将不影响当前计数。GATE为低禁止计数,变为高则计数器重新装入计数初值,开始计数,17,6.方式5:硬件触发选通信号,计数过程中重新装入新值,不影响当前计数。GATE又有触发信号,则计数器重新装入计数初值,从头开始计数,18,7.各种工作方式的输出波形,每种工作方式写入计数值N开始计数后,OUT输出的信号不尽相同 计数过程中写入新计数值,也将引起输出波形的改变 总的来说,GATE信号为低禁止计数,为高允许计数,上升沿启动计数,19,8.1.3 8253/8254的编程,8253加电后的工作方式不确定 8253必须初始化编程,才能正常工作 写入控制字 写入计数初值 读取计数值 8254的读回命令,20,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),示例,21,2. 写入计数值,选择二进制时 计数值范围:0000HFFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:00009999 0000代表最大值10000,计数值写入计数器各自的I/O地址,示例,22,3. 读取计数值,对8位数据线,读取16位计数值需分两次 计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字I/O地址:给8253写入锁存命令 从计数器I/O地址:读取锁存的计数值 读取计数值后,或对计数器重新编程,将自动解除锁存状态,读取计数值,要注意读写格式和计数数制,23,4.8254的读回命令,8254比8253多了读回命令,可以令3个通道的计数值和状态锁存,向CPU返回一个状态字 读回命令写入控制端口,状态字和计数值都通过计数器端口读取,24,8.2 8253在IBM PC系列机上的应用,25,8.2.1 定时中断和定时刷新,从阅读初始化程序段 看计数器0作为定时中断的作用,将计数器1作为定时刷新 看如何编写初始化程序段,26,计数器0:初始化程序,mov al,36h ;36H00 11 011 0B ;计数器0为方式3,采用二进制计数 ;先低后高写入计数值 out 43h,al ;写入方式控制字 mov al,0 ;计数值为0 out 40h,al ;写入低字节计数值 out 40h,al ;写入高字节计数值,27,计数器0:定时中断,计数器0:方式3,计数值:65536,输出频率为1.19318MHz6553618.206Hz的方波 门控为常启状态,这个方波信号不断产生 OUT0端接8259A的IRQ0,用作中断请求信号 每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断 DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能,记录18次中断就是时间经过了1秒,28,计数器1:定时刷新,需要重复不断提出刷新请求,门控总为高,选择方式2或3,PC/XT要求2ms内进行128次刷新操作,PC/AT要求4ms进行256次刷新操作 ,即15.6s刷新一次 CLK为1.19318MHz,即每个脉冲持续1s/(1.19318106)=0.838 s,方式2,计数初值为18(18 0.838 s =15.084 s ),29,计数器1:初始化程序,mov al,54h ;54H01 01 010 0 B ;计数器1为方式2,采用二进制计数 ;只写低8位计数值 out 43h,al ;写入方式控制字 mov al,18 ;计数初值为18 out 41h,al ;写入计数值,30,8.2.2 扬声器控制,计数器2的输出控制扬声器的发声音调 计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声 扬声器还受控于并行接口(8255芯片) 必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音,31,发音频率设置子程序,;入口参数AX1.19318106发音频率 speaker proc push ax mov al,0b6h ;b6h10 11 011 0b out 43h,al ;写入控制字 pop ax out 42h,al ;写入低8位计数值 mov al,ah out 42h,al ;写入高8位计数值 ret speaker endp,32,扬声器开子程序,speakon proc push ax in al,61h ;PB端口的地址为61H or al,03h ;D1D0PB1PB011B,其他位不变 out 61h,al pop ax ret speakon endp,33,扬声器关子程序,speakoff proc push ax in al,61h ;PB端口的地址为61H and al,0fch ;D1D0PB1PB000B,其他位不变 out 61h,al pop ax ret speakoff endp,34,例8.1 扬声器声音的控制,;数据段 freq dw 1193180/600 ;代码段 mov ax,freq call speaker ;设置扬声器音调 call speakon ;打开扬声器声音 mov ah,1 ;等待按键 int 21h ;按键后 call speakoff ;关闭扬声器声音 ;子程序,35,8.2.3 可编程硬件延时,DOS系统有三个有关日时钟的中断。 中断向量号08H的日时钟中断服务程序,负责日时钟的跟踪 中断向量号1AH的日时钟调用程序,供应用程序读取或设置时间 中断向量号1CH的报时中断,这是在08H号中断服务程序中调用的中断。DOS并没有利用它,只是初始化1CH号中断向量指向一条返回指令 日时钟的计时单位是54.925493ms 1秒为18个计时单位:54.925493ms18=0.98865887s1s 1分为1092个计时单位:54.925493ms1092=59.978638s60s 1小时为65543个计时单位:54.925493ms65543=3599.98153600s,36,8.2.3 可编程硬件延时,利用日时钟每隔55ms中断一次不变的特点,可以编写一段不随系统时钟频率变化的固定延时程序 由于日时钟中断的时间单位是55ms,所以无法实现更短时间的延时。这时只有利用实时时钟中断,不过它的最短延时约是1ms(976 s),37,日时钟功能调用,中断调用指令:INT 1AH 子功能号:AH=00H 出口参数:CX.DX=计时变量值(以55ms为单位,CX为高字,DX为低字) AL=0,未超过24小时,38,例:延时5s的程序,;延时开始 mov ah,0 ;读取日时钟功能调用 int 1ah add dx,90 ;加5秒(51890) mov bx,dx ;期望值送bx repeat: int 1ah ;再读日时钟 cmp bx,dx ;与期望值比较 jne repeat ;不等,则循环 ;相等,延时结束,39,8.3 扩充定时计数器的应
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号