常用可编程接口芯片定时器.ppt

上传人:牧羊曲112 文档编号:6279079 上传时间:2023-10-12 格式:PPT 页数:54 大小:534.50KB
返回 下载 相关 举报
常用可编程接口芯片定时器.ppt_第1页
第1页 / 共54页
常用可编程接口芯片定时器.ppt_第2页
第2页 / 共54页
常用可编程接口芯片定时器.ppt_第3页
第3页 / 共54页
常用可编程接口芯片定时器.ppt_第4页
第4页 / 共54页
常用可编程接口芯片定时器.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《常用可编程接口芯片定时器.ppt》由会员分享,可在线阅读,更多相关《常用可编程接口芯片定时器.ppt(54页珍藏版)》请在三一办公上搜索。

1、第 8 章常用接口技术,8.1 定时控制接口8.2 并行接口8.3 异步串行通信接口8.4 模拟接口,8.1 定时控制接口,定时控制具有极为重要的作用微机控制系统中常需要定时中断、定时检测、定时扫描等实时操作系统和多任务操作系统中要定时进行进程调度PC机的日时钟计时、DRAM刷新定时和扬声器音调控制都采用了定时控制技术可编程定时器芯片软硬件相结合、方便灵活的定时电路软件延时方法处理器执行延时子程序,8.1.1 定时器8253/8254,定时器(计数器):由数字电路中的计数电路构成,记录输入脉冲的个数脉冲信号具有一定随机性,往往通过脉冲的个数可以获知外设的状态变化次数(计数)脉冲信号的周期固定(

2、使用高精度晶振产生脉冲信号),个数乘以周期就是时间间隔(定时)Intel 8253/8254可编程间隔定时器3个独立的16位计数器通道每个计数器有6种工作方式,1.内部结构和引脚,与计算机系统总线的接口3个相互独立的计数器通道,结构完全相同计数器0计数器1计数器2,每个计数器通道16位减法计数器16位预置寄存器输出锁存器,定时器外设引脚,CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号,连接处理器引脚

3、,D7D0数据线A1A0地址线注意,当在8086,IA-32构架上使用,一般通过系统数据总线D7D0传送数据,这时应该使用偶数地址(A0=0)RD*读信号WR*写信号CS*片选信号,假设A15A3为0000 0000 0100 0*0,奇数地址有误,可编程计数器/定时器功能,功能体现在两个方面:一是:作为计数器。即在设置好计数初值后,便开始减1计数,减到0时,输出一个信号二是:作为定时器。即在设置好定时时间常数后,便开始减一计数,并按定时时间常数不断地输出时钟周期整数倍的定时信号。两者之间的差别:计数器只输出一个信号,除非冲服触发定时器输出连续信号(减到0后,自动回复时间常数初值并重新开始计数

4、)。,典型用处,在多任务的分时系统中作为中断信号实现程序的切换。可往I/O设备输出精确的定时信号。作为一个可编程的波特率发生器。实现时间延迟。,基本结构原理,原理就是可预置初值的减法计数器。主要组成包括:(1)初值寄存器接收并保存CPU送来的初值(2)计数寄存器从初值寄存器接收计数初值,减法计数器。计数脉冲就是时钟输入信号,在门控信号有效时开始计数。(3)控制寄存器接收CPU的控制信号,选择不同的工作模式等(4)状态寄存器保存计数器的状态基本原理图如下图,2.工作方式,8253有6种工作方式,由方式控制字确定每种工作方式的过程类似:设定工作方式 设定计数初值 硬件启动 计数初值进入减1计数器

5、每输入一个时钟计数器减1的计数过程 计数过程结束,(1)定时器方式0:计数结束中断,设定工作方式,设定计数初值,计数值送入计数器,计数过程,计数结束,方式0的波形如图所示.,当控制字写入控制字寄存器后,输出OUT就变低,当计数值写入计数器后开始计数,在整个计数过程中,OUT保持为低,当计数到0后,OUT变高;GATE的高低电平控制计数过程是否进行。,写控制字,写计数初值,GATE=1计数,工作方式0有如下特点:,计数器只计一遍,当计数到0时,不重新开始计数保持为高,直到输入一新的计数值,OUT才变低,开始新的计数;计数值是在写计数值命令后经过一个输入脉冲,才装入计数器的,下一个 脉冲开始计数,

6、因此,如果设置计数器初值为N,则输出OUT在N1个 脉冲后才能变高;在计数过程中,可由GATE信号控制暂停。当GATE0时,暂停计数;当GATE1时,继续计数;,在计数过程中可以改变计数值,且这种改变是立即有效的,分成两种情况:若是8位计数,则写入新值后的下一个脉冲按新值计数;若是16位计数,则 在写入第一个字节后,停止计数,写入第二个字节后的下一个脉冲按新值计数。,(2)定时器方式1:可编程单稳脉冲,设定工作方式,设定计数初值,硬件启动,计数值送入计数器,计数过程,计数结束,方式1的波形如图所示,CPU向8253写入控制字后OUT变高,并保持,写入计数值后并不立即计数,只有当外界GATE信号

7、启动后(一个正脉冲)的下一个脉冲才开始计数,OUT变低,计数到0后,OUT才变高,此时再来一个GATE正脉冲,计数器又开始重新计数,输出OUT再次变低,.,因此输出为一负脉冲,脉冲宽度受计数初值控制,由GATE信号触发。,特点,输出OUT宽度为计数初值的单脉冲;输出受门控信号GATE的控制,分三种情况:计数到0后,再来GATE脉冲,则重新开始计数,OUT变低;在计数过程中来GATE脉冲,则从下一CLK脉冲开始重新计数,OUT保持为低;改变计数值后,只有当GATE脉冲启动后,才按新值计数,否则原计数过程不受影响,仍继续进行,即新值的改变是从下一个GATE开始的。计数值是多次有效的,每来一个GAT

8、E脉冲,就自动装入计数值开始从头计数,因此在初始化时,计数值写入一次即可。,(3)方式2 分频器,方式2的波形如图所示。在这种方式下,CPU输出控制字后,输出OUT就变高,写入计数值后的下一个CLK脉冲开始计数,计数到1后,输出OUT变低,经过一个CLK以后,OUT恢复为高,计数器重新开始计数。因此在这种方式下,只需写入一次计数值,就能连续工作,输出连续相同间隔的负脉冲(前提:GATE保持为高),即周期性地输出,,特点,通道可以连续工作;GATE可以控制计数过程,当GATE为低时暂停计数,恢复为高后重新从初值;(注意:该方式与方式0不同,方式0是继续计数)重新设置新的计数值即在计数过程中改变计

9、数值,则新的计数值是下次有效的,同方式1。,(4)定时器方式3:方波发生器,方式3的波形如图所示,这种方式下的输出与方式2都是周期性的,不同的是:输出的是方波。当计数值N是偶数,输出正负脉冲宽度 N/2的方波当计数值N是奇数,正脉冲宽度(N+1)/2,负脉冲宽度(N-1)/2。,特点,通道可以连续工作;关于计数值的奇偶,若为偶数,则输出标准方波,高低电平各为N/2个;若为奇数,则正脉冲宽度(N1)/2个CLK周期,负脉冲宽度(N1)/2个CLK周期;GATE信号能使计数过程重新开始,当GATE0时,停止计数,当GATE变高后,计数器重新装入初值开始计数,尤其是当GATE0时,若OUT此时为低,

10、则立即变高,其它动作同上;在计数期间改变计数值不影响现行的计数过程,一般情况下,新的计数值是在现行半周结束后才装入计数器。但若中间遇到有GATE脉冲,则在此脉冲后即装入新值开始计数。,(5)定时器方式4:软件触发选通信号,方式4的波形如图所示。CPU写入控制字后,OUT立即变高,写入计数值开始计数,当计数到0后,OUT变低,经过一个CLK脉冲后,OUT变高,这种计数是一次性的(与方式0有相似之处),只有当写入新的计数值后才开始下一次计数。,当计数值为N时,则间隔N1个CLK脉冲输出一个负脉冲(计数一次有效);GATE0时,禁止计数,GATE1时,恢复继续计数;在计数过程中重新装入新的计数值,则

11、该值是立即有效的(若为16位计数值,则装入第一个字节时停止计数,装入第二个字节后开始按新值计数)。,(6)定时器方式5:硬件触发选通信号,当控制字写入后,OUT立刻变高,写入计数值后并不立即开始计数,而是由GATE的上升沿触发启动计数的,当计数到0时,输出变低,经过一个CLK之后,输出恢复为高,计数停止,若再有GATE脉冲来,则重新装入计数值开始计数,上述过程重复。,特点,在这种方式下,若设置的计数值是N,则在GATE脉冲后,经过(N1)个CLK才一个负脉冲;若在计数过程中又来一个GATE脉冲,则重新装入初值开始计数,输出不变,即计数值多次有效;若在计数过程中修改计数值,则该计数值在下一个GA

12、TE脉冲后装入开始按此值计数。,3.8253/8254的编程,8253是可编程接口芯片8253/8254需要处理器对他进行初始化编程,才能正确工作。编程指的是设置控制字设置时间常数等,(1)控制寄存器与控制字,有两个模式设置寄存器和读出控制寄存器 模式设置控制字,(a)BCD计数初值格式,=0,二进制=1,BCD码,地址:最高端口控制端口,(b)M2,M1,M0模式选择000 模式0001模式1X10模式2X11模式3100模式4101模式5(c)WR1,WR0读/写指示位。00对计数器进行锁存,以便读出01只读/写低8位10只读/写高8位11先读/写低8位,后读/写高8位,(d)SC1,SC

13、0 计数器选择00选择计数器001选择计数器110选择计数器211读出控制字的标识码,只要该2位=0,写入的是读出模式控制字,控制字写入控制字I/O地址:A1A011,00 计数器001 计数器110 计数器211 非法(8253)11 读回命令(8254),00 计数器锁存命令 01 只读写低字节10 只读写高字节11 先读写低字节 后读写高字节,000 方式0001 方式1*10 方式2*11 方式3100 方式4101 方式5,0 二进制1 十进制,设置模式设置控制字举例,假设8253端口:80H,82H,84H,86H,通道0使用二进制计数,工作在模式0,通道1使用BCD计数,模式1,

14、通道2使用二进制计数,模式2,全部通道16位计数器,先写低8位,后写高8位。通道0模式控制字:00110000B通道1模式控制字:01110011B通道2模式控制字:10110110B,MOVDX,86H;MOVAL,30H;控制字OUTDX,ALMOVAL,73H;OUTDX,ALMOVAL,0B6HOUTDX,AL,.读出控制字,D7,D6,=11,为读出模式控制字,这时D0=0D5:=0,将所选定的计数器当前计数值锁存,以便后面读取D4:=0,将所选定的计数器的状态进行锁存,D3,D2,D1:分别对应3个计数通道,=1,选中通道被锁存可以同时锁存多个通道的计数器的计数值但不能同时锁存多个

15、计数器的状态,地址:最高端口控制端口 写,(2)状态寄存器,只有8254有状态端口,8253无该端口。,D7:输出端OUT的状态D6:表示初值是否已装入计数器,=0:已装入,=1未装入D5D0:与模式寄存器含义相同,(3)编程命令与初始化编程,编程原则:设置初值前必须先写模式控制字 初值设置要符合控制字中的格式规定 要读取计数器的当前值(或读取状态字),必须用控制字先锁定,再读取。编程命令有两类:写入命令 读出命令,写入命令3个,有三个(1)设置模式控制字命令 设置工作模式等。(2)设置初始值命令(3)锁存命令 与读出命令配合,在读出前,要先锁存,读出命令2个,(1)读取计数器当前的值。要先锁

16、定,然后再读出。(2)对8254,还可读取状态字 要先锁定,然后再读出。例如要读出通道2的计数值,先向读出控制寄存器写锁定命令,端口地址:70H,72H,74H,76H例如要读出通道2的 11 0 1 1 0 0 0,读出控制字,D7,D6,=11,为读出模式控制字,这时D0=0D5:=0,将所选定的计数器当前计数值锁存,以便后面读取D4:=0,将所选定的计数器的状态进行锁存,D3,D2,D1:分别对应3个计数通道,=1,选中通道被锁存可以同时锁存多个通道的计数器的计数值但不能同时锁存多个计数器的状态,地址:最高端口控制端口 写,方式控制字编程示例,;8253的计数器0、1、2端口和控制端口地

17、址:40H43H;设置其中计数器0为方式0;采用二进制计数,先低后高写入计数值mov al,30h;方式控制字:30H00 11 000 0Bout 43h,al;写入控制端口:43H,3.编程:写入计数值,选择二进制时计数值范围:0000HFFFFH0000H是最大值,代表65536选择十进制(BCD码)计数值范围:000099990000代表最大值10000计数值写入计数器各自的I/O地址按方式控制字规定的读写格式进行,计数值编程示例,;8253的计数器0、1、2端口和控制端口地址:40H43H;设置计数器0采用二进制计数;写入计数初值:1024(400H)mov ax,1024;计数初值

18、:1024(400H);写入计数器0地址:40Hout 40h,al;写入低字节计数初值mov al,ahout 40h,al;写入高字节计数初值,8.1.2 定时器的应用(1)方波脉冲,要求利用8253在OUT2输出2KHZ方波编写相应的程序,地址:1000 000*XX0(没有使用的地址信号,0和1都可以,这里使用0比较方便)通道0数据寄存器:8000H通道1数据寄存器:8002H通道2数据寄存器:8004H控制寄存器:8006H方波:通道3选择方式3,2MHz-2KHz分频系数1000,使用二进制,控制字:10 11 011 0其它通道不用 时间常数:100003E8H如果要求输出脉冲宽

19、度为1个时钟周期的分频脉冲而不是方波脉冲,就选用方式2,CODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOVDX,8006H;控制字端口MOVAL,0B6H;控制字OUTDX,ALMOVDX,8004H;通道2时间常数端口MOVAL,0E8H;低8位时间常数OUTDX,ALMOVAL,03H;高8 位时间常数OUTDX,ALJMP$;没有其他工作,只产生脉冲,故;完成设置后,在此死循环CODE ENDSEND START,(2)定时中断,mov al,36h;计数器0为方式3,二进制计数;先低后高写入计数值out 43h,al;写入方式控制字mov al,0

20、;计数值为0out 40h,al;写入低字节计数值out 40h,al;写入高字节计数值计数器0:方式3,计数值:65536,输出方波频率:1.19318MHz6553618.206Hz,不断产生OUT0端接8259A的IRQ0,每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能,(3)定时刷新,需要重复不断提出刷新请求 门控总为高,选择方式2或32ms内刷新128次,即15.6s刷新一次 计数初值为18mov al,54h;计数器1为方式2;采用二进制计数,只写低8位计数值out

21、43h,al;写入方式控制字mov al,18;计数初值为18out 41h,al;写入计数值,(4)扬声器控制,;发音频率设置子程序;入口参数:AX1.19318106发音频率speakerproc push ax;暂存入口参数 mov al,0b6h;定时器2为方式3,先低后高 out 43h,al;写入方式控制字 pop ax;恢复入口参数 out 42h,al;写入低8位计数值 mov al,ah out 42h,al;写入高8位计数值 ret speaker endp,扬声器发音控制,speakonproc;扬声器开子程序push axin al,61h;读取61H端口的原控制信息or al,03h;D1D0PB1PB011,其他不变out 61h,al;直接控制发声pop axretspeakonendp,;扬声器关子程序and al,0fch;D1D0PB1PB000,其他不变,例8-1控制扬声器程序,;数据段freqdw 1193180/600;给一个600Hz的频率;代码段mov ax,freqcall speaker;设置扬声器的音调call speakon;打开扬声器声音call readc;等待按键call speakoff;关闭扬声器声音;子程序,输出:明确向哪个端口输出什么数据输入:清楚从哪个端口输入什么数据,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号