常用可编程接口芯片定时器课件_第1页
常用可编程接口芯片定时器课件_第2页
常用可编程接口芯片定时器课件_第3页
常用可编程接口芯片定时器课件_第4页
常用可编程接口芯片定时器课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第8章

常用接口技术8.1定时控制接口8.2并行接口8.3异步串行通信接口8.4模拟接口8.1定时控制接口定时控制具有极为重要的作用微机控制系统中常需要定时中断、定时检测、定时扫描等实时操作系统和多任务操作系统中要定时进行进程调度PC机的日时钟计时、DRAM刷新定时和扬声器音调控制都采用了定时控制技术可编程定时器芯片软硬件相结合、方便灵活的定时电路软件延时方法处理器执行延时子程序8.1.1定时器8253/8254定时器(计数器):由数字电路中的计数电路构成,记录输入脉冲的个数脉冲信号具有一定随机性,往往通过脉冲的个数可以获知外设的状态变化次数(计数)脉冲信号的周期固定(使用高精度晶振产生脉冲信号),个数乘以周期就是时间间隔(定时)Intel8253/8254可编程间隔定时器3个独立的16位计数器通道每个计数器有6种工作方式每个计数器通道16位减法计数器16位预置寄存器输出锁存器预置寄存器GATECLKOUT减1计数器输出锁存器定时器外设引脚CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号可编程计数器/定时器功能功能体现在两个方面:一是:作为计数器。 即在设置好计数初值后,便开始减1计数,减到0时,输出一个信号二是:作为定时器。 即在设置好定时时间常数后,便开始减一计数,并按定时时间常数不断地输出时钟周期整数倍的定时信号。两者之间的差别:计数器只输出一个信号,除非冲服触发定时器输出连续信号(减到0后,自动回复时间常数初值并重新开始计数)。典型用处在多任务的分时系统中作为中断信号实现程序的切换。可往I/O设备输出精确的定时信号。作为一个可编程的波特率发生器。实现时间延迟。基本结构原理原理就是可预置初值的减法计数器。主要组成包括:(1)初值寄存器——接收并保存CPU送来的初值(2)计数寄存器——从初值寄存器接收计数初值,减法计数器。计数脉冲就是时钟输入信号,在门控信号有效时开始计数。(3)控制寄存器——接收CPU的控制信号,选择不同的工作模式等(4)状态寄存器——保存计数器的状态基本原理图如下图2.工作方式8253有6种工作方式,由方式控制字确定每种工作方式的过程类似: ①设定工作方式 ②设定计数初值[③硬件启动] ④计数初值进入减1计数器 ⑤每输入一个时钟计数器减1的计数过程 ⑥计数过程结束(1)定时器方式0:计数结束中断①②⑤④⑥GATEOUTCLK

031244方式0WR①设定工作方式②设定计数初值④计数值送入计数器⑤计数过程⑥计数结束方式0的波形如图所示.当控制字写入控制字寄存器后,输出OUT就变低,当计数值写入计数器后开始计数,在整个计数过程中,OUT保持为低,当计数到0后,OUT变高;GATE的高低电平控制计数过程是否进行。写控制字写计数初值GATE=1计数④在计数过程中可以改变计数值,且这种改变是立即有效的,分成两种情况:若是8位计数,则写入新值后的下一个脉冲按新值计数;若是16位计数,则在写入第一个字节后,停止计数,写入第二个字节后的下一个脉冲按新值计数。(2)定时器方式1:可编程单稳脉冲①②⑤④⑥①设定工作方式②设定计数初值③③硬件启动④计数值送入计数器⑤计数过程⑥计数结束GATEOUTCLK

031244方式1WR方式1的波形如图所示,CPU向8253写入控制字后OUT变高,并保持,写入计数值后并不立即计数,只有当外界GATE信号启动后(一个正脉冲)的下一个脉冲才开始计数,OUT变低,计数到0后,OUT才变高,此时再来一个GATE正脉冲,计数器又开始重新计数,输出OUT再次变低,….因此输出为一负脉冲,脉冲宽度受计数初值控制,由GATE信号触发。(3)方式2分频器方式2的波形如图所示。在这种方式下,CPU输出控制字后,输出OUT就变高,写入计数值后的下一个CLK脉冲开始计数,计数到1后,输出OUT变低,经过一个CLK以后,OUT恢复为高,计数器重新开始计数。因此在这种方式下,只需写入一次计数值,就能连续工作,输出连续相同间隔的负脉冲(前提:GATE保持为高),即周期性地输出,特点①通道可以连续工作;②GATE可以控制计数过程,当GATE为低时暂停计数,恢复为高后重新从初值;(注意:该方式与方式0不同,方式0是继续计数)③重新设置新的计数值即在计数过程中改变计数值,则新的计数值是下次有效的,同方式1。(4)定时器方式3:方波发生器03124GATEOUTCLK

4方式3031240312403124WR特点①通道可以连续工作;②关于计数值的奇偶,若为偶数,则输出标准方波,高低电平各为N/2个;若为奇数,则正脉冲宽度(N+1)/2个CLK周期,负脉冲宽度(N-1)/2个CLK周期;③GATE信号能使计数过程重新开始,当GATE=0时,停止计数,当GATE变高后,计数器重新装入初值开始计数,尤其是当GATE=0时,若OUT此时为低,则立即变高,其它动作同上;④在计数期间改变计数值不影响现行的计数过程,一般情况下,新的计数值是在现行半周结束后才装入计数器。但若中间遇到有GATE脉冲,则在此脉冲后即装入新值开始计数。(5)定时器方式4:软件触发选通信号GATEOUTCLK031244方式42233310WR(6)定时器方式5:硬件触发选通信号GATEOUTCLK031244方式522333110WR当控制字写入后,OUT立刻变高,写入计数值后并不立即开始计数,而是由GATE的上升沿触发启动计数的,当计数到0时,输出变低,经过一个CLK之后,输出恢复为高,计数停止,若再有GATE脉冲来,则重新装入计数值开始计数,上述过程重复。特点①在这种方式下,若设置的计数值是N,则在GATE脉冲后,经过(N+1)个CLK才一个负脉冲;②若在计数过程中又来一个GATE脉冲,则重新装入初值开始计数,输出不变,即计数值多次有效;③若在计数过程中修改计数值,则该计数值在下一个GATE脉冲后装入开始按此值计数。3.8253/8254的编程8253是可编程接口芯片8253/8254需要处理器对他进行初始化编程,才能正确工作。编程指的是设置控制字设置时间常数等(1)控制寄存器与控制字有两个——模式设置寄存器和读出控制寄存器①模式设置控制字(a)BCD——计数初值格式,=0,二进制=1,BCD码地址:最高端口——控制端口(b)M2,M1,M0——模式选择 000 模式0 001 模式1 X10 模式2 X11 模式3 100 模式4 101 模式5(c)WR1,WR0——读/写指示位。 00 对计数器进行锁存,以便读出 01 只读/写低8位 10 只读/写高8位 11 先读/写低8位,后读/写高8位(d)SC1,SC0计数器选择 00 选择计数器0 01 选择计数器1 10 选择计数器2 11 读出控制字的标识码,只要该2位=0,写入的是读出模式控制字控制字写入控制字I/O地址:A1A0=1100计数器001计数器110计数器211非法(8253)11读回命令(8254)00计数器锁存命令01只读写低字节10只读写高字节11先读写低字节后读写高字节000方式0001方式1*10方式2*11方式3100方式4101方式50二进制1十进制设置模式设置控制字举例假设8253端口:80H,82H,84H,86H,通道0使用二进制计数,工作在模式0,通道1使用BCD计数,模式1,通道2使用二进制计数,模式2,全部通道16位计数器,先写低8位,后写高8位。通道0模式控制字:00110000B通道1模式控制字:01110011B通道2模式控制字:10110110BMOV DX,86H;MOV AL,30H;控制字OUT DX,ALMOV AL,73H;OUT DX,ALMOV AL,0B6HOUT DX,AL②.读出控制字D7,D6,=11,为读出模式控制字,这时D0=0D5:=0,将所选定的计数器当前计数值锁存,以便后面读取D4:=0,将所选定的计数器的状态进行锁存,……D3,D2,D1:分别对应3个计数通道,=1,选中通道被锁存 可以同时锁存多个通道的计数器的计数值 但不能同时锁存多个计数器的状态地址:最高端口——控制端口写(2)状态寄存器只有8254有状态端口,8253无该端口。D7:输出端OUT的状态D6:表示初值是否已装入计数器,=0:已装入,=1未装入D5~D0:与模式寄存器含义相同(3)编程命令与初始化编程编程原则:①设置初值前必须先写模式控制字②初值设置要符合控制字中的格式规定③要读取计数器的当前值(或读取状态字),必须用控制字先锁定,再读取。编程命令有两类:①写入命令②读出命令写入命令——3个有三个(1)设置模式控制字命令设置工作模式等。(2)设置初始值命令

(3)锁存命令

与读出命令配合,在读出前,要先锁存读出命令——2个(1)读取计数器当前的值。 要先锁定,然后再读出。(2)对8254,还可读取状态字要先锁定,然后再读出。例如要读出通道2的计数值,先向读出控制寄存器写锁定命令端口地址:70H,72H,74H,76H例如要读出通道2的11

011000

读出控制字D7,D6,=11,为读出模式控制字,这时D0=0D5:=0,将所选定的计数器当前计数值锁存,以便后面读取D4:=0,将所选定的计数器的状态进行锁存,……D3,D2,D1:分别对应3个计数通道,=1,选中通道被锁存 可以同时锁存多个通道的计数器的计数值 但不能同时锁存多个计数器的状态地址:最高端口——控制端口写方式控制字编程示例 ;8253的计数器0、1、2端口和控制端口地址:

40H~43H ;设置其中计数器0为方式0 ;采用二进制计数,先低后高写入计数值

moval,30h

;方式控制字:30H=00110000B

out

43h,al

;写入控制端口:43H3.编程:写入计数值选择二进制时计数值范围:0000H~FFFFH0000H是最大值,代表65536选择十进制(BCD码)计数值范围:0000~99990000代表最大值10000计数值写入计数器各自的I/O地址按方式控制字规定的读写格式进行计数值编程示例 ;8253的计数器0、1、2端口和控制端口地址:40H~43H ;设置计数器0采用二进制计数 ;写入计数初值:1024(=400H)

movax,1024

;计数初值:1024(=400H)

;写入计数器0地址:40H

out40h,al ;写入低字节计数初值

moval,ah out

40h,al ;写入高字节计数初值8.1.2定时器的应用——(1)方波脉冲要求利用8253在OUT2输出2KHZ方波编写相应的程序地址:1000000*****XX0(没有使用的地址信号,0和1都可以,这里使用0比较方便)通道0数据寄存器:8000H通道1数据寄存器:8002H通道2数据寄存器:8004H控制寄存器 :8006H方波:通道3选择方式3,2MHz-->2KHz分频系数1000,使用二进制,控制字: 10110110其它通道不用 时间常数:1000——03E8H如果要求输出脉冲宽度为1个时钟周期的分频脉冲而不是方波脉冲,就选用方式2 CODESEGMENT

ASSUMECS:CODE,DS:DATASTART: MOV DX,8006H ;控制字端口 MOV AL,0B6H ;控制字 OUT DX,AL MOV DX,8004H ;通道2时间常数端口 MOV AL,0E8H ;低8位时间常数 OUT DX,AL MOV AL,03H ;高8位时间常数 OUT DX,AL JMP$ ;没有其他工作,只产生脉冲,故

;完成设置后,在此死循环 CODEENDS ENDSTART(2)定时中断

moval,36h ;计数器0为方式3,二进制计数 ;先低后高写入计数值

out43h,al ;写入方式控制字

moval,0 ;计数值为0

out40h,al ;写入低字节计数值

out40h,al

;写入高字节计数值计数器0:方式3,计数值:65536,输出方波 频率:1.19318MHz÷65536=18.206Hz,不断产生OUT0端接8259A的IRQ0,每秒产生18.206次中断请求,或说每隔55ms(54.925493ms)申请一次中断DOS系统利用计数器0的这个特点,通过08号中断服务程序实现了日时钟计时功能(3)定时刷新需要重复不断提出刷新请求

门控总为高,选择方式2或32ms内刷新128次,即15.6s刷新一次

计数初值为18

moval,54h ;计数器1为方式2 ;采用二进制计数,只写低8位计数值

out43h,al ;写入方式控制字

moval,18 ;计数初值为18

out41h,al ;写入计数值(4)扬声器控制;发音频率设置子程序

温馨提示

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

评论

0/150

提交评论