第9章 计数器/定时器和多功能接口芯片_第1页
第9章 计数器/定时器和多功能接口芯片_第2页
第9章 计数器/定时器和多功能接口芯片_第3页
第9章 计数器/定时器和多功能接口芯片_第4页
第9章 计数器/定时器和多功能接口芯片_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、第第9章章 计数器计数器/定时器和多功定时器和多功能接口芯片能接口芯片 第第9章章 计数器计数器/定时器和多功能接口芯片定时器和多功能接口芯片 重点重点8253/8254的编程结构;的编程结构;8253/8254的两类控制字;的两类控制字;8253/8254必须遵守的编程原则;必须遵守的编程原则;8253/8254的两类编程命令;的两类编程命令;8253/8254的的6种工作模式的特点种工作模式的特点.9.1 可编程计数器可编程计数器/定时器的工作原理定时器的工作原理定时器和计数器在工作方式上有许多相似之处:作为作为计数器计数器时时:输入的计数信号是随机的,输入的计数信号是随机的,计数的是外部

2、脉冲信号;计数的是外部脉冲信号;作为作为定时器定时器时时:输入的脉冲信号具有周期性,输入的脉冲信号具有周期性,计数的是内部基准时钟产生的脉冲。计数的是内部基准时钟产生的脉冲。9.1 可编程计数器可编程计数器/定时器的工作原理定时器的工作原理 计数器计数器/定时器的用途:定时器的用途: 在多任务的分时系统中作为中断信号实现程序的切换。在多任务的分时系统中作为中断信号实现程序的切换。 可往可往I/O设备输出精确的定时信号。设备输出精确的定时信号。 作为一个可编程的波特率发生器。作为一个可编程的波特率发生器。 实现时间延迟。实现时间延迟。计数器计数器/定时器定时器9.1 可编程计数器可编程计数器/定

3、时器的工作原理定时器的工作原理 计数器计数器/定时器的原理图定时器的原理图 9.2 8253/8254的编程结构和外部信号的编程结构和外部信号9.2.1 8253/8254的编程结构的编程结构 有三个计数器有三个计数器 共用共用1个控制寄存器个控制寄存器和和1个状态寄存器个状态寄存器(只有(只有8254有状态有状态寄存器)寄存器) 每个计数器通过每个计数器通过3个个引脚和外部联系引脚和外部联系 执行部件实际上是执行部件实际上是1个个16位的减法计数位的减法计数器器内部有几个端口地址?内部有几个端口地址?对应哪些部件?对应哪些部件?9.2.2 8253/8254的外部信号的外部信号 CLK0CL

4、K2 GATE0GATE2 OUT0OUT2 A1、A0 RD WR CS 876543212223192021911101514131816172412D0D1D2D3D4D5D6D7RDWRA0A1CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2VCC地9.3 8253/8254控制字和状态字控制字和状态字工作方式SC1SC0RL1RL0M2M1M0BCD0:二进制计数1:BCD计数0 0 :选计数器00 1 :选计数器11 0 :选计数器21 :无效 0 0 0:方式0 0 0 1:方式1 1 0:方式2 1 1:方式3 1 0 0:方式4 1 0 1:

5、方式50 0:计数器锁存0 1:只读/写计数器低字节1 0:只读/写计数器高字节1 1:先读/写计数器低字节, 后读/写计数器高字节计数器选择读/写格式数制选择9.3.1 8253/8254控制寄存器和控制字控制寄存器和控制字模式设置控制字模式设置控制字对应哪个对应哪个端口地址?端口地址?9.3.2 8254的状态寄存器和状态字的状态寄存器和状态字 状态寄存器的格式如下:状态寄存器的格式如下:不要求掌握不要求掌握D7-out端的状态端的状态D6- =0表示初值已经装入表示初值已经装入D5D4-读写位数,读写位数,D3D2D1-工作方式工作方式D0- 计数方式计数方式对应哪个端对应哪个端口地址?

6、口地址?9.4 8253/8254的编程命令的编程命令 编程有编程有3条原则必须遵守:条原则必须遵守: 对计数器设置初始值前必须先写控制字。对计数器设置初始值前必须先写控制字。 初始值设置时,要符合控制字中的格式规定,初始值设置时,要符合控制字中的格式规定,即只写低位字节还是只写高位字节,或高低位即只写低位字节还是只写高位字节,或高低位字节都写,控制字中一旦规定,具体初始值设字节都写,控制字中一旦规定,具体初始值设定时就要一致。定时就要一致。 要读取计数器的当前值和状态字,必须用控制要读取计数器的当前值和状态字,必须用控制字先锁定,才能读取。字先锁定,才能读取。9.4 8253/8254的编程

7、命令的编程命令 编程命令包括两类编程命令包括两类 写入命令:写入命令: 设置控制字命令设置控制字命令 设置初值命令设置初值命令 锁存命令(不要求)锁存命令(不要求) 读出命令:读出命令: 读取计数器当前的值。读取计数器当前的值。 对对8254,还可读取状态字(不要求),还可读取状态字(不要求)各各对应哪个端口对应哪个端口地址?地址?9.4 8253/8254的编程命令的编程命令 MOV AL,11011000B;对计数器;对计数器2发锁存命令,锁存当前计数值发锁存命令,锁存当前计数值OUT 76H,AL;76H为控制口地址为控制口地址IN AL,74H;读取计数器;读取计数器2的读取值,的读取

8、值,74H为计数器为计数器2的地址的地址对对8254读取状态字和计数值读取状态字和计数值MOV AL,11000000B;计数器;计数器0的锁存命令的锁存命令OUT 76H,AL;76H为控制口地址,对锁存计数器为控制口地址,对锁存计数器0的状态和计数值的状态和计数值IN AL,76H;从状态口读取计数器;从状态口读取计数器0的状态的状态MOV CL,AL;将计数器;将计数器0的状态送到的状态送到CLIN AL,70H;读取计数器;读取计数器0 的低的低8位位MOV BL,AL;将低;将低8位送到位送到BLIN AL,70H;读取计数器;读取计数器0的高的高8位位MOV BH,AL;BX中为计

9、数器中为计数器0的当前计数值的当前计数值段读取计数器段读取计数器2的当前计数值的例子的当前计数值的例子9.5 8253/8254的工作模式的工作模式 6种工作模式种工作模式(我们介绍前四种我们介绍前四种) 方式方式0:计数结束产生中断:计数结束产生中断 方式方式1:可重复触发的单稳态触发器:可重复触发的单稳态触发器 方式方式2:分频器:分频器 方式方式3:方波发生器:方波发生器 方式方式4:软件触发的选通信号发生器:软件触发的选通信号发生器 方式方式5:硬件触发的选通信号发生器:硬件触发的选通信号发生器9.5 8253/8254的工作模式的工作模式8253六种工作方式的共同点 控制字写入计数器

10、时,所有控制逻辑立即复位,输出端OUT进入初始态 写入初值后,要经过一个时钟周期后计数执行部件CE才开始工作 时钟脉冲CLK的上升沿,门控信号GATE被采样 在时钟脉冲的下降沿,计数器做减1 计数124444 作用作用:电平触发,输出一个上升沿跳变电平触发,输出一个上升沿跳变OUT的初始态是什么电平?的初始态是什么电平?符合什么条件才开始计数?符合什么条件才开始计数?什么情况下停止(或暂停)什么情况下停止(或暂停)计数?计数?会不会自动重复计数?会不会自动重复计数?怎样才能重新计数?怎样才能重新计数?计数过程中计数过程中再次写入计再次写入计数初值是否立即生效?数初值是否立即生效?模式模式0计数

11、结束产生中断计数结束产生中断(典型的事件计数用法)模式模式1 可重复触发的单稳态触发器可重复触发的单稳态触发器 作用作用:上升沿触发,输出一个宽度为上升沿触发,输出一个宽度为N个时钟周期个时钟周期的负脉冲的负脉冲图图9.4 模式模式1的时序图的时序图OUT的初始态是什么电平?的初始态是什么电平?符合什么条件才开始计数?符合什么条件才开始计数?什么情况下停止(或暂停)什么情况下停止(或暂停)计数?计数?会不会自动重复计数?会不会自动重复计数?怎样才能重新计数?怎样才能重新计数?计数过程中计数过程中再次写入计再次写入计数初值是否立即生效数初值是否立即生效?模式模式2分频器分频器 作用:(简单考虑)

12、作用:(简单考虑)GATE持续为高时,如同一持续为高时,如同一个个N分频的计数器,正脉冲宽度分频的计数器,正脉冲宽度N-1个时钟,负脉个时钟,负脉冲宽度冲宽度1个时钟个时钟模式模式3方波发生器方波发生器 作用:(简单考虑)作用:(简单考虑)GATE持续为高时,如同一持续为高时,如同一个方波发生器,正脉冲宽度个方波发生器,正脉冲宽度N/2(或或N/2+1)个时钟,个时钟,负脉冲宽度负脉冲宽度N/2个时钟个时钟总结8253的使用步奏 与系统的连接 芯片初始化 置计数初值编编程程例1 8253通道2接有一发光二极管,要使发光二极管以亮2s,灭2s所的间隔工作,试编程。(各端口地址为FFE9HFFEF

13、H)CLK1OUT1CLK2OUT2GATE1GATE2CSA1A0D7D0.QQDCP2MHZ+5分析 按题目要求应从OUT2输出周期为4S的方波,从图可知CLK1输入时钟周期为1s,若仅用通道1工作则获得的最大输出方波周期为1s X 65536=65.5ms,故要用两个通道配合工作 8253通道1工作于频率发生器方式,计数值为4000,OUT1输出周期为4ms的脉冲,通道2工作在方波发生器方式,计数值为1000即可 通道1的控制字为:01 10 010 1 65H 通道2的控制字为:10 10 011 1 A7HMOV DX,0FFEFHMOV AL,65HOUT DX,ALMOV AL,

14、0A7HOUT DX,ALMOV DX,0FFEBH MOV AL,40HOUT DX,ALMOV DX,0FFEDHMOV AL,10HOUT DX,AL 初始化程序流程写控制字写控制字写计数值低写计数值低8位位写计数值高写计数值高8位位*非必须非必须写如顺序:写如顺序:可以计数器为可以计数器为单位,也可先单位,也可先写所有计数器写所有计数器控制字,再写控制字,再写入初值入初值例 2 采用8253作定时/计数器,其接口地址为0120H0123H。 要求计数器0每10ms输出一个CLK脉冲宽的负脉冲;用计数器1产生10KHz的连续方波信号,计数器2在定时5ms后产生输出高电平。输入8253的时

15、钟频率为2MHZ。 画线路连接图,并编写初始化程序。 分析1、计数器0工作在方式2,输出信号周期是10ms,计数值200002、计数器1工作在方式3,输出信号频率10KHZ,计数值是2003、计数器2工作在方式0,计数值是10000CLK0GATE0OUT1D0D7WRRDA1A0CSCLK2GATE2CLK1OUT0OUT2GATE1GG2AG2BCBA&1&IORIOW.A15A9.A7A6A8A5A4A3A2Y0A1A0IORIOWD0D7+5V2MHZ例题:8253的应用 计数器计数器/定时器定时器8253,振荡器(频率为,振荡器(频率为1MHZ)连线如下图所示,其)连

16、线如下图所示,其中振荡器的脉冲输出端接通道中振荡器的脉冲输出端接通道0的计数输入端的计数输入端CLK0,设,设8253的端的端口地址为口地址为180H186H。请完成以下任务:请完成以下任务:(1)该电路中通道)该电路中通道0的的OUT0输出输出2KHZ连续方波,通道连续方波,通道0的计数初的计数初值为多少(写出计算式)?值为多少(写出计算式)?GATE0应接何电位?在图上画出。应接何电位?在图上画出。(2)若要)若要8253的的OUT1端,能产生周期为端,能产生周期为1秒的连续方波,该如何秒的连续方波,该如何解决?在图上画出。解决?在图上画出。(3)写出实现上述功能的)写出实现上述功能的82

17、53初始化程序。初始化程序。例题:8253的应用 1M/2K=500=1F4H , 2K/1=2000=7DH工作方式SC1SC0RL1RL0M2M1M0BCD0:二进制计数1:BCD计数0 0 :选计数器00 1 :选计数器11 0 :选计数器21 :无效 0 0 0:方式0 0 0 1:方式1 1 0:方式2 1 1:方式3 1 0 0:方式4 1 0 1:方式50 0:计数器锁存0 1:只读/写计数器低字节1 0:只读/写计数器高字节1 1:先读/写计数器低字节, 后读/写计数器高字节计数器选择读/写格式数制选择控制字:控制字:计数器计数器0:36H(或或37H) 计数器计数器1:76H

18、(或或77H)5V设设8253的端口地址为的端口地址为180H186H。1M/2K=500=1F4H , 2K/1=2000=7DH控制字:计数器控制字:计数器0:36H(或或37H) 计数器计数器1:76H(或或77H)计数器计数器0: MOV DX,186H MOV AL,00110111B OUT DX,AL MOV DX,180H MOV AL,00H OUT DX,AL MOV AL,05H OUT DX,AL计数器计数器1: MOV DX,186H MOV AL,01110111B OUT DX,AL MOV DX,182H MOV AL,00H OUT DX,AL MOV AL,

19、10H OUT DX,AL A0A1 A0 A1D0D7D0D7OUT1OUT2OUT0GATE0GATE1GATE2CLK0CLK1CLK2D QCLK+5V接至接至DMA控制器控制器接至扬声器驱动器接至扬声器驱动器PB0PB1IRQ0DRQ0 8253+5V1.19318MHzDACK0 BRDIORIOWRDWRCST/CCS 47 6 53 2 1061H端口端口 8253与与门门放放大大器器扬扬声声器器01控制其它外设控制其它外设8255PB1.19MHz设定声调子程序BEEP PROC MOV AL,10110110B ; 计数器2,工作方式3,二进制 OUT 43H,AL ; 先

20、低后高写入16位计数值 MOV AX,0533H ;1.19318MHZ/1331D= 896HZ OUT 42H,AL MOV AL,AH OUT 42H,AL ; 高8位 RETBEEP ENDP 47 6 53 2 1061H端口端口 8253与与门门放放大大器器扬扬声声器器01控制其它外设控制其它外设8255PB1.19MHzspeaker_on proc;扬声器开子程序push axin al,61h;读取原来8255B口or al,03h;D1D0=PB1PB0=11b,其他位不变out 61h,al ;直接控制发声pop axretspeaker_on endp扬扬声声器器开开子

21、子程程序序 47 6 53 2 1061H端口端口 8253与与门门放放大大器器扬扬声声器器01控制其它外设控制其它外设8255PB1.19MHzspeaker_off proc;扬声器关子程序push axin al,61h;读取原来8255B口and al,0fch;D1D0=PB1PB0=00b,其他位不变out 61h,al;直接控制闭音pop axretspeaker_off endp扬扬声声器器关关子子程程序序 47 6 53 2 1061H端口端口 8253与与门门放放大大器器扬扬声声器器01控制其它外设控制其它外设8255PB1.19MHzDATA SEGMENT MESS D

22、B PRESS S OR P OR CTRL-C,0AH,0DH,$ MESS1 DB PLEASE ENTER 1-8,0AH,0DH,$ MESS2 DB YOU PRESS WRONG KEY,0AH,0DH,$ FREQ DW 5421,4828,4552,4056,3614,3614 DW 4056,4552,4828,5421,4828,4828 DW 5421,5421 DW 5421,4828,4552,4056,3614,3614 DW 2710,3417,4056,4056,3 DUP(4552) DW 4056,4552,3614,3614 DW 4 DUP(2710),

23、3614,4 DUP(3042) DW 3614,4056,4056,4552,4552,3042 DW 3614,3614 DW 4 DUP(2710),2415,2710,4 DUP(3042) DW 3614,4056,4552,4552,4828,5421 DW 6085,5421,3 DUP(4056),3614,0 TIME DW 3 DUP(25),12,12,4 DUP(25),25 DW 25,4 DUP(12),100 DW 3 DUP(25),3 DUP(12),25,25,12 DW 3 DUP(25), 4 DUP(12),100,12,25 DW 12,25,25,

24、12,25,12,25,12,12 DW 3 DUP(25),12,12,100 DW 2 DUP(12,25,12,25,12,12),25 DW 25,12,12,25,100 DW 2 DUP(12,12,12,12,25,12,12,100) DW 4 DUP(12),25,25,12,25,12 DW 25,25,4 DUP(12) DW 25,3 DUP(12),88,20 DUP(0),0YINJIE DW 4452,4056,3614,3417,3042,2710,2415,2280,0YANSHI DW 10 DUP(30)KEY DB 0DATA ENDSCODE SEGM

25、ENT ASSUME CS:CODE, DS:DATAMAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX START1: MOV AH,09H MOV DX,OFFSET MESS INT 21H MOV AH,01H INT 21H CMP AL,S JZ START2 CMP AL,P JZ START3 CMP AL,Q JZ START4 START2: CALL YANZOU JMP START1 START3: CALL SOUND1 JMP START1 START4: MOV AH,4CH IN

26、T 21H MAIN ENDP SOUND1 PROC NEAR LOOP1: MOV DX,OFFSET MESS1 MOV AH,09H INT 21HS2: MOV AH,01H INT 21H MOV KEY,AL CMP KEY,Q JZ S6 CALL DELAY2 JMP S2S6: RET SOUND1 ENDPDELAY2 PROC NEAR S: MOV SI,OFFSET YINJIE MOV DI,OFFSET YANSHI MOV AL,KEY CMP AL,1 JB WRONG CMP AL,8 JA WRONG1 MOV AH,0 SUB AX,31H ROL A

27、X,1 ADD SI,AX MOV AL,0B6H OUT 43H,AL MOV AX,SI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL PUSH AX MOV BX,DI MOV CL,2 ROL BX,CLWAIT3: MOV CX,10000DELAY3: LOOP DELAY3 DEC BX JNZ WAIT3 POP AX MOV AL,AH OUT 61H,AL RETWRONG: MOV DX,OFFSET MESS2 MOV AH,09H INT 21H JMP SOUND1WRO

28、NG1: CMP KEY,S JZ WRONG2 JMP WRONGWRONG2: CALL YANZOU JMP SOUND1DELAY2 ENDP YANZOU PROC NEAR MOV SI,OFFSET FREQ MOV DI,OFFSET TIME MOV AL,0B6H OUT 43H,AL SOUND:MOV AX,SI CMP AX,0 JE DONE OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL MOV BX,DI MOV CL,2 ROL BX,CL WAIT1: MOV CX

29、,10000 DELAY: LOOP DELAY DEC BX JNZ WAIT1 MOV AL,AH OUT 61H,AL INC SI INC SI INC DI INC DI JMP SOUND DONE: RET YANZOU ENDP CODE ENDS END START利用PC机上的定时器通道0工作在方式3,计数时间到产生中断#include #include voidinterrupt myint8(void);voidmain(void)disable();outportb(0 x43,0 x36); / 0 x43是定时器控制寄存器地址outportb(0 x40,0 x9

30、d); /0 x40是定时器0通道地址outportb(0 x40,0 x2e); /0 x9d,0 x2e分别是计数值低八位和高八位setvect(0 x08,myint8); /设置中断向量enable();while(1);voidinterrupt myint8(void) static int count=0; printf( n%d,count+);outportb(0 x20,0 x20); / 第一个0 x20主8259的OCW2的 地址, /第二个0 x20是中断结束命令9.5 8253/8254的工作模式的工作模式 模式模式4软件触发的选通信号发生器软件触发的选通信号发生器图图9.7 模式模式4的时序图的时序图9.5 8253/8254的工作模式的工作模式 模式模式5硬件触发的选通信号发生器硬件触发的选通信号发生器图图9.8 模式模式5的时序图的时序图9.6 8253/8254应用举例(应用举例(1) 用用8253/8254为为A/D子系统提供采样信号的

温馨提示

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

评论

0/150

提交评论