微机系统与接口教学资料 第八章_第1页
微机系统与接口教学资料 第八章_第2页
微机系统与接口教学资料 第八章_第3页
微机系统与接口教学资料 第八章_第4页
微机系统与接口教学资料 第八章_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章 定时与计数器,一、基本概念,二、定时/计数器 Intel 8253,三、IBM PC/XT 中的定时/计数器电路,四、应用举例,一、基本概念 1. 定时信号的需求: 在计算机系统中,经常要用到定时信号,比如: 在许多个人计算机中,动态存储器的刷新定时;系统日历时钟的计时;喇叭的 声源;都是用定时信号来产生的。 在计算机实时控制与处理系统中,计算机需要每隔一段时间采样一次,在对采 样的数据处理、控制,也要用到定时信号。 2. 定时信号的产生 定时信号的产生有两种方式: 软件方法:延时子程序; 硬件方法:用定时/计数器(简单的软件控制,产生准确的时间延迟)。,3. 可编程定时/计数器的工作

2、原理,CPU对计数器设定工作方式,装入初值,在GATE(门控信号)的启动下,计数器开始工作,在输入脉冲CLK的作用下做减 1 计数(来一个脉冲计数值减 1 ),减至 0时,输出端 OUT 输出一个信号。,4. 可编程定时/计数器的功能,计数 在设定好计数初值后,做减 1 计数,减为 0 时,输出一个信号。,定时 在设定好计数初值后,做减 1 计数,并按定时常数不断输出为时 钟周期整数倍的定时间隔。,二、可编程定时/计数器 Intel 8253,原理,主要功能 芯片上有三个独立的16位计数器通道; 每个计数器可以按照二进制或二十进制计数; 每个计数器的计数速率可达 2MHZ ; 每个通道有 6

3、种工作方式,可有程序设置和改变; 所有的输入输出都与 TTL 兼容。,(2) 结构,管脚信号,D7D0 数据总线(双向) RD 读输入 WR 写输入 A0,A1 选择内部寄存器地址 CS 片选 CLK 输入脉冲(计数器即 对此脉冲计数) GATE 门控信号输入(控制 计数器工作的外部信 号,为低时,禁止计 数器工作) OUT 输出引脚(计数到0 时,OUT上必有输出, 输出信号的波形由 工作方式决定),端口选择,控制字 在8253的初始化编程时,由CPU向8253的控制字寄存器 写入一个控制字,它规定了8253的工作方式。,2. 工作方式 8253共有六种工作方式,(1) 方式0 计数结束中断

4、,(2) 方式1 可编程的单拍脉冲,(3) 方式2 频率发生器,(4) 方式3 方播频率发生器,(5) 方式4 软件触发选通,(6) 方式5 硬件触发选通,3. 8253编程,(1) 方式0 计数结束中断,当控制字写入控制字寄存器时,即使OUT输出端变低,在写入计数初值后, 计数器开始计数(此时GATE信号必须为高),计数结束后OUT输出端变高。,特点: 1. 计数器只计一遍。当计数到 0 时,并不恢复计数初值,不开始重新 计数,且输出一直保持为高。只有在写入下一个计数值时,OUT 变低,开始新的计数。,特点: 3. 在计数过程中,可改变计数值。在写入新的计数之后,计数器按新 的值重新开始计数

5、。,特点: 2. 在计数过程中,可由门控信号GATE控制暂停。GATE=0, 计数暂停, GATE变高后,接着计数。,特点: 4. 8253内部没有中断控制电路,也没有专用的中断请求引线,因此, 若要用于中断,则可用OUT 信号作为中断请求信号,但需要有外接 的中断优先权排队电路与中断向量产生电路。 在PC机中,用 8259A 作中断优先权排队电路与中断向量产生电路。,Watchdog timer的概念,(2) 方式1 可编程的单拍脉冲,当控制字写入控制字寄存器后,OUT输出保持为高,当CPU写完计数值后, 计数器并不开始计数,直到 GATE 信号启动之后的下一个输入CLK脉冲的下降沿 开始计

6、数),OUT输出端变低。在整个计数过程中,OUT 都维持为低,直到计数 为 0 时,输出变为高,输出一个单脉冲。,特点: 1. 若设置的计数值为N,则输出的单脉冲宽度即为N个输入脉冲间隔。 2. 当计数到 0 后,可再次由外部触发启动,输出一个同样宽度的 单拍脉冲,而不用再次送计数值。,特点: 3. 在计数过程中,外部可发门控信号进行再触发,在触发脉冲上升沿 后的下一个CLK脉冲的下降沿,计数器将重新开始工作。,特点: 4. 在计数过程中,CPU可改变计数初值,这时计数过程不受影响,计 数到 0 后输出为高。若再次触发启动,则计数器将按新的计数值计数。 所以改变计数值是下次有效的。,(3) 方

7、式2 频率发生器,当控制字写入控制字寄存器后,OUT输出为高。在写入计数值后,计数器将立即自动对输入脉冲 CLK 计数。在计数过程中,OUT一直保持为高,直到计数器减到 1 时,OUT变低,经过一个CLK后,OUT恢复为高,计数器重新开始工作。,特点: 1. 不用重新设置计数值,计数器能够连续工作,输出固定频率的脉冲。,特点: 2. 计数过程可由门控信号GATE控制。当GATE变低时,暂停计数;在 GATE变高后的下一个CLK脉冲使计数器恢复初值,重新开始计数。,特点: 3. 在计数过程中可以改变计数值,这对正在进行的计数过程没有影响, 但在计数到 1 输出变低后,下一个计数周期,计数器将按新

8、的计数 值计数。所以改变计数值是下次有效的。,(4) 方式3 方波频率发生器,同频率发生器,区别在于,方波频率发生器在计数过程中输出一半时间为高,一半时间为低。即其输出是N(N为计数值)个CLK脉冲的方波。,特点: 1. 若计数值为偶数,在装入计数值后,每个CLK脉冲使计数值减2,当计数 到 0 时,一方面输出改变状态,一方面重新装入计数值开始新的计数。 若计数值为奇数,装入计数值后,第一个CLK脉冲使计数器减1,以后每 个CLK使计数器减2。 所以,若计数值N为奇数,则(N+1)/2个CLK脉冲为高电平,(N-1)/2 个CLK脉冲为低电平。,特点: 2. GATE信号能使计数过程重新开始。

9、GATE=0,计数停止,当GATE=1后, 计数器将重新装入计数初值,重新开始计数。,特点: 3. 若在计数期间写入新的计数值,并不影响现行计数过程。但若此时收到 GATE信号,则计数器将在下一个CLK脉冲时装入新的计数值并开始计数。,(5) 方式4 软件触发选通,在这种方式下,当写入控制字后,输出为高,当写入计数值后立即开始计数。计数到 0 后,输出变低,经过一个CLK周期,输出又变高,计数器停止计数。这种计数方式是一次性的,当输入新的计数值后,才能开始新的计数。,特点: 1. CPU写入计数值的下一个CLK脉冲,将计数值装入计数器,再下一个 CLK脉冲开始计数,即在装入计数值后的第 N+1

10、 个脉冲后,才输出一个 负脉冲。,特点: 3. 若在计数期间写入新的计数值,则按新的计数值重新开始计数。,特点: 2. GATE=0,禁止计数,GATE=1,允许计数。因此要做到软件触发, GATE必须保持为高。但GATE不影响输出。,(6) 方式5 硬件触发选通,在这种方式下,当写入控制字后,输出为高,当写入计数值后,计数器并不立即开始计数,而是由门控信号的上升沿触发启动。计数到 0 后,输出变低,经过一个CLK周期,输出又变高,计数器停止计数。等到下一次门控信号的触发才能开始新的计数。,特点: 1. CPU写入计数值的下一个CLK脉冲,将计数值装入计数器,再下一个 CLK脉冲开始计数,即在

11、装入计数值后的第 N+1 个脉冲后,才输出一个 负脉冲。,特点: 2. 若在计数过程中使用GATE信号,则使计数器重新开始计数。但GATE不 影响输出。,特点: 3. 若在计数期间改变计数值,只要没有门控信号的触发,不影响计数过程, 计数到0后,若有门控信号触发,则按新的计数值开始计数;若未计数到 0,即有门控信号触发,则立即按新的计数值重新开始计数。,3. 8253编程,要使用 8253 必须首先对其进行初始化编程。初始化编程的步骤是: (1) 写入通道控制字,规定通道的工作方式; (2) 写入计数值 若规定只写低8位,则写入的为计数值的低8位,高8位自动置0; 若规定只写高8位,则写入的为

12、计数值的高8位,低8位自动置0; 若是16位计数值,则分两次写入,先写入低8位,在写入高8位。,4. 8253 编程举例,(1) 初始化编程:使用通道0,工作在方式 1 下,按二十进制计数,计数值为5080。,0 0 1 1 0 0 1 1 通道0 先写低8位 方式1 BCD计数 再写高8位, 通道控制字, 计数值的低8位为80,高8位为50。 MOV AL, 33H OUT 07H, AL MOV AL, 80 OUT 04H, AL MOV AL, 50 OUT 04H, AL,;假设8253的地址为 04H 07H ; 0 0 0 0, 0 1 0 0 0 0 0 0, 0 1 1 1,

13、CPU 读取计数器的计数值。 因为计数值在不断地变化,故读取计数值时,必须将当前计数值锁存。 通常的做法是:向8253送一个控制字,令通道中的锁存器将计数值锁存, 然后由CPU读取。 例:读取通道1 中的计数值。 通道控制字 MOV AL, 40H OUT 07H, AL IN AL, 05H MOV CL, AL IN AL, 05H MOV CH, AL,三、IBM PC/XT 中的定时/计数器电路,PC机中,8253 的三个计数器都得到使用,三个计数器的时钟脉冲都是1.1931816MHZ,即时钟信号发生器8284A的PCLK外围设备用时钟信号。,1.1931816 MHZ,IRQ0到8

14、259,1. 计数器0 计数器0工作在方式3(方波频率发生器)下,在系统运行期间: GATE恒接于+5V,处于开启状态,当装入一个初值后,即开始计数。 计数初值为 0 (65536),输出的方波频率为 18.2 HZ 。 输出OUT0 接于 8259 的中断请求线 IRQ0 上,这样便每隔 1/ 18.2 =55ms 产 生一次 0 级中断, 当 0 级中断发生时,系统便进入 BIOS 日时钟中断子程序,产生日时钟计数; 此外,还作为软盘驱动器的马达开启时间管理,当开启一定的时间后,令其自 动关闭。,方式3,1.1931816 MHZ,0,65536,18.2 HZ,2. 计数器1,计数器1工

15、作在方式 2(频率发生器方式)下,在系统运行期间: GATE恒接 +5V,处于常启状态; OUT1 接 DMA控制器 8237 的 0 通道 DREQ0, 计数初值定为 18,输出频率=1.1931816 MHZ / 18 =66.287 KHZ 的一系列负脉冲, 即: 每隔 1/66.287 = 15.0857 s 向DMA控制器提出DMA请求,由DMA控制 器的 0 通道完成对动态存储器的刷新。 用于定时的向DMA控制器提出请求,以对动态存储器刷新。,方式2,1.1931816 MHZ,3. 计数器 2,计数器3工作在方式3(方波频率发生器方式)下,在系统运行期间: 预置初值为 533H,

16、 GATE2 信号受系统并行接口芯片8255 PB0 的控制; OUT2 受系统并行接口芯片8255 PB1 的控制。 用于提供系统喇叭发声的音调。,4. 8253 的 BIOS 功能调用,INT 1AH 读当前时钟;设置当前时钟。 INT 1CH 在时钟中断处理程序(INT 8)中有一条软中断指令 INT 1CH INT 1CH 的处理程序只是一条返回指令(IRET指令),用户可在此 程序中加入自己的程序,当发生时钟中断时则可执行此程序,以实现 时实控制。,5. 8253 的 DOS 功能调用,INT 21H 的 AH=2AH 设置日期 2BH 读日期 2CH 设置时间 2DH 读时间,四、

17、应用举例 1. 编写时钟中断处理程序日时钟,CLK0,CLK1,CLK2,OUT0,IRQ0,INT,INTR,INTA,INTA,S2 S1 S0,D70,类型码,00 00 59 1F,00000,00020,00023,1F59:0000,中 断 向 量 表,中 断 服 务 程 序,8253,8259,8086,8288,内存,时间常数的计算,要求 8253 每隔 10ms 发一次定时中断。,计数初值= PCLK / 计数器输出频率 =PCLK * 计数器输出周期 = 1.1931816*106*( *10*10-3) = 11932,地址 寄存器 40H 计数器1 41H 计数器2 4

18、2H 计数器3 43H 控制寄存器,PC机中8253 地址分配,Stack segment para stack stack db 256 dup(?) Stack ends Data segment public data Count100 db 100 ;100计数器 Tenhour db 0 ;时的十位数 Hour db 0 ;时的个位数 db : Tenmin db 0 ;分的十位数 Minute db 0 ;分的个位数 db : Tensec db 0 ;秒的十位数 Second db 0 ;秒的个位数 Data ends Code segment para public code

19、Start proc far assume cs:code, da:data, es:data, ss:stack Begin: push ds xor ax, ax push ax,mov ax, data mov ds, ax mov es, ax mov si, 82h ;PSP中命令行参数hh:mm:ss存放地址 mov di, offset tenhour ;数据段中存放时间的首地址 mov cx, 8 cld rep movsb ;将8个字串从PSP中移到数据段中存放时间的单元中 mov ah, 0 ;键盘功能调用等待按键 int 16h cli ;关中断 mov ax, 0 mo

20、v es, ax mov di, 20h mov ax, offset timer stosw mov ax, seg timer stosw ;将中断服务程序入口地址存入中断向量表,mov al, 36h ;设8253 控制字选计数器0,双字节写,方式2,二进制 out 43h, al mov bx, 11932 ;送计数值 mov al, bl out 40h, al mov al, bh out 40h, al mov al, fch ;设8259 屏蔽寄存器允许时钟和键盘中断 out 21h, al sti ;开中断 Forever:mov bx, offset tenhour ;取

21、hh:mm:ss 8个字串进行显示 mov cx, 8 Dispclk: mov al, bx call dispchar inc bx loop dispclk mov al, second ;取秒数 Wait: cmp al, second jz wait ;等待变化 jmp forver ;变了则重新显示,Timer proc far push ax dec count100 ;计数值减1, jnz timerx ;不到 0,返回 inc second ;到0,秒加1 cmp second, 9 ;处理秒 jle timerx mov second, 0 inc tensec cmp t

22、ensec, 6 jl timerx mov tensec, 0 inc minute ;处理分 cmp minute, 9 jle timerx mov minute, 0 inc tenmin cmp tenmin, 6 jl timerx mov tenmin, 0 inc hour ;处理时 cmp hour, 4 jl timerx,mov hour, 0 inc tenhour cmp tenhour, 2 jl timerx mov tenhour, 0 Timerx: mov al, 20h ;对8259发EOI命令 out 20h, al pop ax iret Timer endp Dispchar proc near ;显示 push bx mov bx, 0 mov ah, 14h ;用显示器功能调用 int 10h pop bx ret Dispchar endp Start endp Code ends end begin,2. 扬声器控制,设计一个程序,使扬声器发出600Hz频率的声音,按下任意键声音停止 PC机的发声系统以计数器2为核心。CLK2的输入频率1.19MHz,改变计数器初值可以由OUT2得到不同频率的方波输出对于600Hz,计数初值1.19MHz/600Hz=1938 发声系统受8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论