第十章 定时器、并行及串_第1页
第十章 定时器、并行及串_第2页
第十章 定时器、并行及串_第3页
第十章 定时器、并行及串_第4页
第十章 定时器、并行及串_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第十章定时器、并行及串行接口

主要内容可编程计数/定时器Intel8254

可编程并行接口Intel8255A可编程串行输入/输出接口芯片8250接口电路综合设计举例10.1可编程计数/定时器Intel8254

Intel8253/8254是可编程间隔定时器PIT(ProgrammableIntervalTimer)。8254是8253的改进型,比8253具有更优良的性能。在Intel8l5EP芯片组的8280lBA中也集成了8254。8254的基本功能

(1)有3个独立的16位减法计数器:CNT0、CNT1、CNT2;

(2)每个计数器都可按二进制计数或十进制(BCD码)计数;

(3)每个计数器可编程工作于6种不同工作方式;(4)8254-2每个计数器允许的最高计数频率为10MHz(8253为2MHz,8254为8MHZ,8280lBA中集成的8254为14.31818MHZ);

(5)8254有读回命令,除了可以读出当前计数器的内容外,还可以读出状态寄存器的内容。8253仅可以读出当前计数器的内容。定时/计数的用途:定时中断、定时检测、定时扫描、实时控制中的采样、DRAM定时刷新等定时和计数本质上是一样的计数的信号随机,定时的信号具有周期性定时方法软件定时:利用一段循环程序实现延时缺点:CPU占用率?延时精度?兼容?硬件定时:定时/计数器电路不可编程定时:采用中小规模IC构成,定时值不可改变可编程定时:采用可编程计数器完成,软件可改变计数值

8253是一种可编程定时/计数器芯片一、8254的内部结构及引脚功能1.内部结构及引脚数据总线缓冲器用于和CPU数据总线接口的8位双向三态缓冲器。读写控制逻辑接受来自CPU的读写控制信号。

/RD

读控制信号,输入,低电平有效。

/WR

写控制信号,输入,低电平有效。

A1

A0

选通地址线,输入,用来选择3个计数器和控制字寄存器。

/CS

片选信号,输入,低电平有效。

8254/8253控制与寻址关系

/CS/WR/RDA1A0操作

00100CPU初值写计数器0(CNT0)

00101CPU初值写计数器1(CNT1)

00110CPU初值写计数器2(CNT2)

00111CPU控制字写控制寄存器

01000读CNT0计数值到CPU01001读CNT1计数值到CPU01010读CNT2计数值到CPU1XXXX无操作

控制字寄存器

用于寄存来自CPU的控制字。8253控制字寄存器只能写入,不能读出。计数器0、1、2

3个计数器结构:有一个计数初始值寄存器、减法计数器、输出锁存器和状态寄存器。初始值寄存器(16位)用于存放计数初值,最大计数值为65536。减法计数器(16位)初值装入计数器后,从CLK的第二个脉冲开始,每来一个脉冲计数器减1。输出锁存器(16位)用于锁存减1计数器的内容,使CPU在读操作时能得到计数器的稳定值。状态寄存器(8253无)保存当前控制字寄存器的内容、输出状态以及初始值寄存器内容是否已装入计数器的状态。必须先锁存再读取。计数器控制端GATE门控信号输入端,用以控制计数或复位。通常当其为低电平时,禁止计数器的工作。CLK

时钟脉冲输入端。OUT计数到零(或定时时间到)脉冲输出端。软件启动过程硬件启动过程GATE端保持为高电平写入计数初值后的第2个CLK脉冲的下降沿开始计数程序指令启动————软件启动外部电路信号启动——硬件启动GATE端有一个上升沿对应CLK脉冲的下降沿开始计数4.启动方式方式

(1)软启动(GATE=1)在该方式下,CPU写入初值后,CLK的第一个脉冲将初值装入计数器,减法计数器在CLK时钟作用下,从CLK的第二个脉冲开始每来一个脉冲计数器减1。

(2)硬启动启动前GATE=0。在CPU写入初值,并在GATE端得到启动正脉冲之后,CLK的第一个脉冲将初值装入计数器,从CLK的第二个脉冲开始每来一个脉冲计数器减1。二、计数器的通道结构控制逻辑CRHCRLOLHOLLCECLKGATEOUT读/写格式:只读/写低8位,高8位自动清零只读/写高8位,低8位自动清零先读/写低8位,后读/写高8位读出当前计数值的方法直接读:用GATE信号使计数器停止,再规定读写格式,然后读出。锁存读:利用锁存指令,先锁存当前计数值,再用输入指令将16位计数值读出。三、定时/计数的工作过程

1.设置8253的工作方式

2.设置计数初值到初值寄存器

3.第一个CLK信号使初值寄存器的内容置入计数器

4.以后每来一个CLK信号,计数器减15.减到0时,OUT端输出一特殊波形的信号注:以上计数过程中还受到GATE信号的控制8253的工作方式一、方式0(软件启动,不自动重复计数)①控制字写入后OUT即变为低电平;②计数初值写入后在下一个CLK下降沿才送入计数器,当计数器为0时,输出OUT变为高电平;③当GATE变为低电平时计数停止,再变为高电平时计数继续进行;④若想再次OUT输出,必须重写计数值。二、方式1(硬件启动,可重复触发,可编程单脉冲)主要特点:写入CW后OUT变为高电平,然后写入计数初值,当GATE上升沿触发后,OUT变为低电平并开始计数,归零时OUT变为高电平;门控信号GATE端的跳变触发计数,可重复触发;若下一次GATE上升沿提前到达,则OUT端负脉冲拉宽为两次计数过程之和;计数过程中写入新初值不影响本次计数

三、方式2(速率发生器)

主要特点:软、硬件启动,自动重复计数。装入初值后OUT端变高电平,计数过程中OUT端为高电平,计数到1时OUT输出负脉冲,并连续重复此过程(周期性负脉冲)。四、方式3(方波发生器)主要特点:方式3的OUT输出是周期性的方波。(若计数值n是偶数,则输出OUT是对称方波;若计数值n是奇数,则输出OUT在(n+1)/2计数期间保持为高电平,而在(n-1)/2计数期间保持为低电平。)五、方式4(软件触发选通)主要特点:*计数过程中,GATE端应保持高电平。*每写入一次初值,计数一个周期,然后停止计数。*方式4的OUT输出是一次性负脉冲。*若想再次OUT输出,须再次写入计数值。六、方式5(硬件触发选通)主要特点:*方式5的OUT输出是一次性负脉冲。*若想再次OUT输出,只须再次启动GATE脉冲。8253工作方式小结:写入CW后,方式0输出即变低,其余5种方式输出均变高。方式0:用来实现定时或对外部事件进行计数。方式1:用来产生单脉冲。方式2:产生序列负脉冲,每个负脉冲的宽度与CLK的周期相同方式3:产生连续的方波。方式2和方式3都实现对CLK的n分频方式4和方式5的波形相同,都是计数器归0后的1个负脉冲,宽度为1个CLK。方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。但方式2是连续的,方式4是由软件(设置初值)触发启动,而方式5由硬件(门控脉冲)触发启动。方式1、5触发计数方式相同,但输出波形不同。方式1为输出n个CLK脉冲周期的负脉冲(计数过程中输出为低),而方式5输出的是宽度为1个CLK脉冲周期的负脉冲(计数过程输出为高)用于确定各计数器的工作方式。每个计数器都必须初始化一次。CPU通过OUT指令把控制字写入控制寄存器。四、8254的编程SC1SC0:计数器通道选择

00通道001通道110通道211非法RL1RL0:计数器读写选择

00计数器锁存

01只读写低8位

10只读写高8位

11先读写低8位,再读写高8位M2M1M0:计数器工作方式选择

000方式0001方式1x10方式2x11方式3100方式4101方式5BCD:计数器进制选择

016位二进制计数器

1BCD码计数器1.控制字格式

工作方式控制字(8位)

D7D6──计数器/控制字寄存器选择控制位

D7D6=00,选计数器0;D7D6=01,选计数器1;

D7D6=10,选计数器2;D7D6=11,读出控制字的标志之一(8253为非法操作)。

D5D4──计数器读写操作方式选择位。

D5D4=00──选择计数器中的计数值锁存到输出寄存器,从输出寄存器读取当前的计数值。

D5D4=01──对计数器的低字节(LSB)进行读/写;=10——对计数器的高字节(MSB)进行读/写;

D5D4=11——对计数器进行两次读/写操作,先低字节,后高字节。

D3D2D1──计数器工作方式选择(六种)。D3D2D1=000,选方式0;D3D2D1=001,选方式1;D3D2D1=X10,选方式2;D3D2D1=X11,选方式3;D3D2D1=100,选方式4;D3D2D1=101,选方式5。D0──计数方式数制方式选择位D0=0,选二进制格式计数;D0=1,选BCD码格式计数。

读出控制字(8位,8253无)

D7D6=11,D0=0标志位。

D5计数值锁存控制位。D5=0,锁存当前计数值。

D4状态锁存控制位。D4=0,锁存当前计数器的状态。

D3D2D1选择控制位。定义同方式控制字。当CPU读出某一计数器的计数值/状态信息时,被选择的计数器自动解锁,但其它计数器不受影响。状态字(8253无)

D5~D0其意义与工作方式字相同。

D6计数值有效指示位。D6=0,表示计数初值已装入计数器,可以读取;否则不能读取。

D7OUT引脚现行状态。D7=1,OUT引脚为高电平;

D7=0,OUT引脚为低电平。

2.初始化编程举例

8253与PC/XT总线的连接如图,要求计数器0工作在方式1,初值N=100,二进制计数;计数器1,工作在方式3,初值N=1000,BCD码计数,并在计数过程中读取此计数器的计数值。试编写初始化程序。

(1)各端口地址的确定计数器0地址=1XXXXXXXX0010000B=8010H计数器1地址=1XXXXXXXX0010001B=8011H控制寄存器地址=1XXXXXXXX0010011B=8013H(2)工作方式控制字计数器0CW0=00010010B=12H

计数器1CW1=01110111B=77H(3)读计数器1锁存控制字

CW11=01000000B=40H

(4)初始化程序

MOVAL,12H ;CW0写入控制寄存器

MOVDX,8013HOUTDX,ALMOVAL,77H ;CW1写入控制寄存器

OUTDX,AL

MOVAL,100 ;初值N0写入计数器0MOVDX,8010HOUTDX,ALMOVAX,1000 ;初值N1写入计数器1MOVDX,8011HOUTDX,AL ;先写低字节

MOVAL,AHOUTDX,AL ;后写高字节

MOVAL,40H ;CW11写入计数器1MOVDX,8013HOUTDX,ALMOVDX,8011HINAL,DX ;读计数器1的低字节计数值

MOVCL,ALINAL,DX ;读计数器1的高字节计数值

MOVAH,ALMOVAL,CL ;读取的计数值存AX中与系统的连接示意CLKGATEOUTD0~D7WRRDA1A0CSDBIOWIORA1A0译码器高位地址A15-A28253占用4个接口地址:

计数器0

计数器1

计数器2

控制寄存器共三组初始化写控制字写计数值低8位写计数值高8位非必须写入顺序:

可按计数器分别写入控制字和初值。

也可先写所有计数器控制字,再写入它们的初值包括8253的编程

设置控制字(写入控制寄存器地址)

赋计数初值(写入相应计数器地址)读计数器内容(从相应计数器地址读出)1、对计数器赋计数初值控制字写完后,接着赋计数初值。计数初值写入计数器的格式必须按照控制字的RL1、RL0的读写指示来写。另外,当D0=0时,即选择二进制计数,计数初值可在0~FFFFH之间选择。当D0=1时,即选择BCD码计数,计数初值可在0~9999之间选择。若想扩大计数范围,可以将两个或三个计数器级连使用。即将一计数器的OUT信号与另一计数器的CLK信号相连接。8253OUT1GATE1CLK1OUT0GATE0CLK0+5V+5V1MHz1KHz1Hz例1

若要使计数器1工作在方式0,仅用8位二进制计数,计数值为128,试对其进行初始化编程。假设3个计数器和控制寄存器的端口地址为:70H~73H

MOVAL,50H;写控制字01010000OUT73H,ALMOVAL,80H;写计数初值,只写低八位

OUT71H,AL

例2

若要使计数器0工作在方式1,按BCD码计数,计数值为3000,试对其进行初始化编程。

MOVAL,23H;00100011OUT73H,ALMOVAL,30H;计数初值只写高八位

OUT70H,AL

2、读计数器的内容8253的读操作只能读计数器的值,而不能读控制字。若读16位计数值,则对该计数器读两次,先读低8位,再读高8位。如果在计数过程中读计数器内容,则需发锁存命令。计数器的锁存命令是用一个字节的最高两位D7和D6指定要锁存的计数器;D5和D4必须为00作为锁存命令的标志。而低4位可为全0。它是控制字的一种特殊形式,所以要把此锁存命令写到控制字寄存器中去。可见,3个计数器的锁存命令分别为00H,40H和80H。

例3若要使计数器2工作在方式2,按二进制计数,计数值为1110H。要在计数过程中读取该计数器的计数值。试对其进行初始化编程。

MOVAL,0B4HOUT73H,ALMOVAL,10HOUT72H,ALMOVAL,11HOUT72H,ALMOVBH,20H;让8253工作一段时间,在读它的

W:DECBH;计数值

JNZW

MOVAL,80H;对计数器2进行锁存,它的某个计

OUT73H,AL;数值就锁存到它的锁存寄存器里

INAL,72HMOVCL,AL;先读低8位

INAL,72H;再读高8位

MOVAH,ALMOVAL,CL

例4系统中有一片8253芯片,利用其通道1完成对外部事件计数,计满250次向CPU发出中断申请;利用2通道输出频率为1kHz的方波,试编写8253的初始化程序,硬件电路如图。三、8253的应用A7A6A5A4A3A2

MOVAL,71H;通道1控制字01110001OUT1FH,AL

MOVAL,0A7H;通道2控制字10100111OUT1FH,AL

MOVAL,50H;通道1计数值低8位

OUT1DH,AL

MOVAL,02H;通道1计数值高8位

OUT1DH,AL

MOVAL,40H;通道2计数值高8位

OUT1EH,AL端口地址分析:1CH、1DH、1EH、1FHN1=250,N2=Tout/Tclk=fclk/fout=40008253应用例采用8253作定时/计数器,其接口地址为0120H~0123H。要求计数器0每10ms输出一个CLK脉冲宽的负脉冲;用计数器1产生10KHz的连续方波信号,计数器2在定时5ms后产生输出高电平。输入8253的时钟频率为2MH。画线路连接图,并编写初始化程序。计算计数初值:

CNT0:10ms/0.5us=20000CNT1:2MHz/10KHz=200CNT2:5ms/0.5us=10000确定控制字:

CNT0:方式2,16位计数值

CNT1:方式3,低8位计数值

CNT2:方式0,16位计数值CLK0GATE0OUT1D0~D7WRRDA1A0CSDBIOWIORA1A0译码器8253CLK2GATE1GATE2+5VCLK1OUT0OUT2?8253应用例初始化程序CNT0:MOVDX,0123HMOVAL,34HOUTDX,ALMOVDX,0120HMOVAX,20000OUTDX,ALMOVAL,AHOUTDX,ALCNT1:……CNT2:……四、8254的应用例:8254计数器2接有一发光二极管,要使发光二极管以点亮2s,熄灭2s的间隔工作,地址分别为8010H-8013H。(1)分析选8254计数器2工作在方式3,输出占空比为1:1周期为4s的方波。选计数器1工作于方式2输出连续的脉冲,采用级连方式,将计数1的输出OUT1作为计数器2的输入脉冲。

(2)初始值的确定

计数器1的输出脉冲频率设为1KHz,(输出周期为1ms),计数器1的初值N1=2MHz/1KHz=2000。计数器2输出方波的周期为4s,计数值N2=4s/1ms=4000。(3)方式控制字计数1的控制字:CW1=01110100B=74H计数2的控制字:CW2=10110110B=B6H(4)程序

MOV

DX,8013H ;控制字端口地址。

MOVAL,74H ;计数1控制字

OUTDX,ALMOVAL,0B6H ;计数器2控制字

OUTDX,AL

MOVDX,8011H ;计数器1端口地址

MOVAX,2000 ;计数器1初值

OUTDX,AL ;计数器1初值低8位

MOVAL,AH ;计数器1初值高8位

OUTDX,AL

MOVDX,8012H ;计数器2端口地址

MOVAX,4000 ;计数器2初值

OUTDX,AL ;计数器2初值低8位

MOVAL,AH ;计数器2初值高8位

OUTDX,AL

程序执行时,当初值分别送入两计数器后,OUT、OUT即可输出连续脉冲。

2.PC机中8253的应用在82801BA中,集成了3个计数器,其内部结构、功能、工作方式和编程,都与8254完全兼容。82801BA中的8254工作频率时达14.31818MHZ,端口地址为40H-43H。

用PC机内8254盘模拟“电子琴”演奏

利用PC机扬声器发出不同频率声音,当按下数字键1-8时,依次发出1,2,3,4,5,6,7,i八个音符。计数器2工作于方式3,时钟脉冲输入CLK2为1.1931816MHz的连续脉冲。当GATE2为高电平时,OUT2输出的方波经放大和滤波后推动扬声器。送到扬声器的信号受端口61H信号的双重控制,端口6lH的DO位控制GATE2,OUT2信号输出和端口6lH的D1位同时作为与门的输入。只有端口6lH的DO和D1位都为1时,才能使扬声器发出声音。通过改变计数初值,可改变OUT2输出方波信号的频率,从而改变扬声器发声的音调。

用系统调用的01H功能以接收键入字符。键入字符与频率值关系:

键入字符

1

2

3

4

5

6

7

8频率值

524588660

698784880988

1048参考程序DATASEGMENTTABLEDW524,588,660,698,784,880,998,1048;音符频率表DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX

MOVAL,10110110B ;计数器2初始化

OUT43H,AL ;方式3方波输出SING:MOVAH,01H ;接收键入的字符

INT21HCMPAL,03H ;是否按Ctrl+C键?

JZFINISH ;是,则结束程序

SUBAL,31H;ASCIID码转数值

SHLAL,01 ;转为查表序号;(每个音符频率占两个字节)

温馨提示

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

评论

0/150

提交评论