微机原理接口技术_第1页
微机原理接口技术_第2页
微机原理接口技术_第3页
微机原理接口技术_第4页
微机原理接口技术_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

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

文档简介

第八章接口技术定时与计数器并行传输以其接口DMA传输及DMA控制器串行传输及其接口D/A与A/D转换及其接口8.1定时器/计数器计算机内广泛应用计时器/计数器,它主要用于:周期时标产生,用作:DRAM的定时刷新,定时查询,计算机内部日历钟的标准信号源;串行传输波特率发生器,方波发生器,高速脉冲输出;各种限时器,即单稳态电路,软件或硬件“看门狗”电路;各种时间间隔,频率和相位的测量;生成各种占空比的脉冲宽度调制(PWM)输出,以控制直流马达的转速。这种专门设计的计时器电路与软件计时程序相比,优点是可节省大量CPU时间。在系统需要很多计时器的场合,硬件计时器的应用可大大提高计算机的工作效率,并能提高计时及测量精度。一、计时器的一般工作原理计时器实际上是一个计数器电路,其时钟由一标准时钟发生器提供,由它作为计时标准。所以,计时器可提供高精度的时间测量和作为高精度限时器。其一般原理如图所示。Fosc—标准时钟发生器预分频器—其输出作为计数器时钟时间常数寄存器(TCR)—存放计数初值,决定计时长度。计数器—它从TCR取得初值,在时钟驱动下进行计数(可以是减计数或加计数),当计数溢出时,产生超时信号。二、可编程定时/计数器8253/8254

A0,A1地址线。占有4个I/O端口,在PC机中的端口地址为:

CH040HCH141H

CH242H

控制口43H

面向I/O的信号线(3组)CLK0~2

计数时钟输入GATE0~2

门控信号。“0”电平禁止计数器工作。OUT0~2

计数器输出。表示定时或计数已到。1、对外引脚与内部结构8253/8254内部结构数据总线缓冲器:三态、双向8位寄存器读/写控制电路:A1A0占用4个端口。

00~10对应计数器0~2,

11对应控制寄存器。控制命令寄存器:存放CPU送来的控制字2、地址安排8253/8354的每个计数通道逻辑框图计数器芯片内部有3个独立、完全相同的计数器。每一个计数器可工作在不同的模式。16位计数初值寄存器CR

用于存放计数初值。然后将初值装入减1计数器CE。可自动重载初值16位计数单元CE

减“1”计数器。CPU不能直接读、写CE的值。16位当前计数值锁存器OLOL“跟随”CE的值。收到“锁存”命令后,锁存当前CE的值。CPU读走后,恢复到“跟随”CE的状态。上电后,8253/4的状态是未知的,工作模式、计数值和输出也是未知的。因此,需初始化。

8254与8253相比,增加了状态回读命令。3、工作方式控制字

8253方式控制字共8位,初始化编程时写入控制口。写操作规则:

对每一计数器,控制字必须先于计数初值写入。计数初值的写入必须遵循控制字定义的计数格式(即:只读/写低字节,只读/写高字节或先读/写低字节再读/写高字节)例:设置计数器1、模式3、计数初值2345H

timerequ40h

moval,01110110b outtimer+3,al

movax,2345h outtimer+1,al

moval,ahouttimer+1,al读操作:简单读操作直接读OL的内容。但必须使GATE无效或用外部逻辑禁止CLK信号。否则,可能读到不正确的值。计数器锁存方式使用“锁存”命令,然后再读OL的内容。上述两种当前计数值的读出必须遵循控制字定义的计数格式(即:只读/写低字节,只读/写高字节或先读/写低字节再读/写高字节)为了读出稳定的值,可以设置门控输入或禁止时钟输入停止计数。有的情况不能停止计数,则可采用保持读出方式。使用控制字选择计数器并设RL1RL0=00,写入控制字寄存器,这时8253会把当时计数器值锁存到OL(16位),然后再对计数器发出正常的读命令,便可得到当前计数器的计数值。例如,若要读取通道1的16位计数值,应执行如下指令:

MOVAL,40H

;计数器1的锁存命令

OUT0FBH,AL

;写入控制字寄存器

INAL,0F9H

;读低8位

MOVCL,AL

;存于CL中

INAL,0F9H

;读高8位

MOVCH,AL

;存于CH中4、8253/8254的工作方式说明

8253/8254可以工作在如下六种工作方式之一。 方式0—计数结束中断(单次电路) 方式1—硬件触发的可重复单稳电路 方式2—分频器(波特率发生器) 方式3—方波发生器 方式4—软件触发的选通脉冲 方式5—硬件触发的选通脉冲

对6种工作方式,公共操作说明如下:写入控制字后,OUT端进入已知初始状态(高电平或低电平)写入初值后,经过CLK,计数初值装入CE部件。在CLK的,采样门控信号GATEGATE电平触发:GATECLKGATE边沿触发:GATE边沿触发器置位

CLK采样在CLK的,计数器CE减“1”

说明:除了方式1、5(硬件触发)外,工作于其它方式时,GATE应是高电平。

1)方式0(计数结束中断方式)采用方式0时,计数器在减为零时使输出端OUT变为高电平,向CPU发出中断申请。图中WR的第一个负脉冲代表写入控制字CW=10H,第二个负脉冲代表写计数初值=3。如果8253地址为50~53H,则图5-32就是执行以下指令时操作的时序。

MOVAL,10H

;00010000B→AL

OUT53H,AL

;写入控制字寄存器

MOVAL,03H

OUT50H,AL

;向0号计数器写入计数初值当方式控制字写入后,输出端OUT变为低电平;计数常数写入后,计数器开始减1计数并且维持OUT为低电平,当计数器减为零时,输出端OUT变为高电平。如果OUT端接INTR中断请求输入端,则向CPU发出中断申请,直至CPU写入新的控制字和新的计数值为止。若在计数过程中GATE出现低电平,则暂停计数。在计数过程中可以改变计数值。若是8位计数,在写入新的计数值后,计数器将按新的计数值重新开始计数。如果是16位计数,在写入第一字节后计数器停止计数,在写入第二字节后,计数器按新的数值开始计数,即改变计数值是立即有效的。方式1可以输出一个宽度可程控的负脉冲。当CPU写入控制字后,OUT即变高,但是当CPU写入计数常数后,计数器并不开始计数,而要到外部门控脉冲GATE启动之后的下一个CLK输入脉冲的下降沿才开始计数;这时输出OUT变低,直至计数到0,输出OUT再变高。若GATE再次触发,则将再产生一个负脉冲。如果在输出保持低电平期间,写入一个新计数值,不会影响低电平的持续时间,只有当下一个触发脉冲(GATE)到来时,才使用新的计数值。如果计数尚未结束又出现新的触发脉冲,则从新的触发脉冲之后的CLK下降沿开始重新计数,因此使输出负脉冲加宽。

2)方式1(硬件触发单稳态)

3)方式2(频率发生器)采用方式2时能在OUT端输出连续的负脉冲,其宽度等于一个时钟周期,脉冲周期等于写入计数器的计数值和时钟周期的乘积。由图看出,CPU送出控制字后输出将变为高,在写入计数值后,计数器对输入时钟CLK计数,直至计数器减至1时,输出变低,经过一个时钟周期输出恢复为高,计数器从初值开始重新计数。计数过程受门控脉冲GATE控制,GATE变低时停止计数;在GATE变高后的下一个CLK脉冲使计数器恢复初值,重新计数。在计数过程中改变计数值,对正在进行的计数过程没有影响,但计数到1,OUT变低一个CLK周期后,计数器将按新的计数值计数。若要8253的OUT2输出2kHz频率波形,负脉冲宽度为1μs。设CLK2输入1MHz的时钟GATE2接高电平,8253地址04~07H,则初始化程序为:

MOVAL,0B4HOUT07H,AL;写入控制字

MOVAL,0F4HOUT06H,AL;写入计数值的低8位

MOVAL,01HOUT06H,AL;写入计数值的高8位也可以是:MOVAL,0B5H;二-十进制计数BCDOUT07H,ALMOVAL,00HOUT06H,ALMOVA1,05H;500=1F4HOUT06H,AL4)方式3(方波发生器)采用方式3时,OUT端输出方波,当计数值N为偶数,则输出对称方波,前N/2计数期间OUT输出高电平,后N/2计数期间输出低电平;当N为奇数,则前(N+1)/2计数期间输出高电平,后(N-1)/2计数期间输出低电平,其余同方式2。

方式3操作如图所示。

当方式4控制字写入8253后,OUT输出即变高,写入计数值后开始计数(相当于软件启动),当计数到零时输出一个时钟周期的负脉冲,计数器停止计数。这种方式计数是一次性的。只有输入新的计数值才开始新的计数。在计数期间,如果写入新的计数值,将立即对本次产生影响)。当门控信号GATE输入低电平时,计数停止;GATE恢复为高电平时继续计数。方式4操作如图所示。5)方式4(软件触发选通)

6)方式5(硬件触发选通)该方式在写入方式控制字及计数常数值后,输出OUT保持高电平,只有当门控信号GATE出现上升沿后才开始计数,当计数到0时OUT输出一个CLK周期的负脉冲。计数过程尚未结束之前重新触发时,将使计数器从计数常数值重新开始计数。方式5的操作如图所示。5.8253/8254应用实例用8253构成定时、计数系统。要求系统完成如下功能:通道0用于外部事件计数,每计满100次通过中断控制器8259向CPU发出中断请求;通道1产生频率为1kHz的方波,作为串行接口的收发时钟信号;通道2用于产生标准定时时钟,每秒钟通过8259中断控制器向CPU发出一次中断请求信号。硬件连线如图所示。2.5M设地址译码器输出为0E0H~0E3H,则8253各口地址分别为;通道0为0E0H;通道1为0E1H;通道2为0E2H;控制口为0E3H(命令字)。根据系统要求,应将计数器0设置为方式0,即计数结束中断方式。共计数初值设为100(即64H)。输出OUT0的上升沿送至8259的IR0用于中断请求。

p8253equ0e0h

cli;初始化通道0

moval,00010000boutp8253+3,al;或out0e0h,al

moval,100;或moval,64houtp8253,al;或out0e3h,al

计数器1设定为方式3,即方波发生器方式,其输出信号的频率为1kHz。计数脉冲输入CLK1取自时钟发生器输出的2.5MHz的时钟脉冲,因此计数器1的计数初值为n=2.5M/1k=2500(094CH)初始化通道1

moval,01110110boutp8253+3,al;或out0e3h,al

movax,2500;或movax,094choutp8253+1,al;或out0e1h,al

moval,ahoutp8253+1,al;或out0e1h,al

计数器2也可设定为方式0,即计数结束产生中断,以实现计时功能,每秒钟利用OUT2向CPU发出一次中断请求。通道2的输入时钟频率为1kHz,所以计数初值应为1kHz/1=1000。通道2的输出OUT2送至8259的IR1。最好设为方式1,不用重复置初值。初始化通道2

moval,10110001b;BCD计数

outp8253+3,al

movax,1000H;若非BCD计数,则movax,3e8houtp8253+2,al;out0e2h,al

moval,ahoutp8253+2,al;out0e2h,al6、8253的接口方法

一个8253占用4个地址,由A1A0的取值来区分,00、01、10分别寻址0号、1号、2号3个计数器,11寻址控制寄存器,4个端口的具体地址是由CS和A1A0共同决定。8253的RD、WR分别接总线的IOR和IOW信号。设地址为340~343H接口电路如图所示。7、8253在IBMPC/XT系统板中的应用

IBMPC/XT系统板上使用了一片8253-5,其连接如图所示。其CS端来自译码电路(如图所示)的输出端T/CCS,地址范围是40~5FH,BIOS中8253地址约定为40~43H。3个通道的CLK都由8284的输出PCLK分频得到,其频率为1.19318MHz。3个计数器用途如下。

(1)计数器0:编程为方式3

,每55ms向中断控制器的IRQ0端发一次中断请求信号。此定时中断用于报时和磁盘驱动器的马达定时。初始化程序如下:

MOVAL,00110110B;0通道方式控制字

OUT43H,ALMOVAL,0;计数初值为65536OUT40H,ALOUT40H,AL

;1.19318M/65536=18.2064819Hz;即0.05492549s=54.92549ms

(2)计数器1:工作于方式2,OUT1接至DMA请求触发器的CP端,每隔15.12μs请求一次DMA,进行动态存储器一行的刷新。刷新占用DMA零通道,优先权等级最高。8253通道1的初始化程序如下:

MOVAL,01010100BOUT43H,ALMOVAL,12HMOV41H,AL

;1.19318MHz/18=66287.7778Hz;即15.0857μs;15.12μs为1.19M计算而来

(3)计数器2:用于产生近似1kHz的方波送至扬声器,GATE2受8255PB0的控制,PB0为高时OUT2才能产生方波。发声还受8255PB1的控制。OUT2产生的电平还经8255PC5被CPU检测。声响子程序为BEEP,入口地址为FFA08H。8255PB口地址为61H。;exm5_4beepprocnear

moval,10110110bout43h,a1

movax,0533h;计数初值

out42h,a1;0533H=1331

moval,ah;1.19318MHz÷1331=896Hzout42h,a1inal,61h;读61H端口的原来值

movah,al;存于AH

ora1,03h;使b1b0均为1,使扬声器发声

out61h,alsubcx,cx

;延时,CX为循环计数值g7:loopg7

dec

bl

;入口条件BL=6发长声。BL=1发短声

jnzg7

moval,ahout61h,al;恢复端口61H,停止发声

retbeependp8.2并行传输及其接口并行传输有以下特点:

接口设计简单,因为计算机的接口总线多数是行总线;

●传输距离短,通常采用并行传输的外部设备都在计算机附近。

并行接口分为简单接口(非选通接口)和选通接口两种。

简单接口一般用于控制输出口和状态输入口。

选通接口用于和外设交换数据。选通接口的电路比较复杂,而简单接口较简单。8.2.1简单并行口

1、简单输出口数据总线是高速、时分复用的公用总线。因此,输出口必须有数据寄存器,以接收并记忆发送给它的数据。简单输出口中的数据输出寄存器,可以用任何具有记忆功能的电路实现。通常是D锁存器或者是沿触发的D触发器。写口命令只在写该口时才生效。2、简单输入口

作为输入口,它要向总线发送数据。依据总线操作规则:任何总线数据源,必须是受控源,即只在特定时间的特定条件下才可向总线发送数据。其他条件下,该源必须与总线隔离开来,可使用三态门。3、通用简单并行口举例

I/O选择=1,外部输入;I/O选择=0,输入的是数据输出寄存器的内容。必须有命令寄存器来配置接口逻辑。8.2.2选通并行口及其联络选通I/O口的输入或输出是有条件的,而简单接口的输入或输出是无条件的。为了与外部可靠地交换信息,选通I/O口与外设间除了I/O数据线外,还有联络线,叫I/O联络。为了可靠传送,并行接口至少需要两条联络线。

1、异步互锁联络2、脉冲联络

3、混合联络混合联络中,其联络信号既不同于电平联络,也不同于脉外联络。发联络和收联络中一个是脉冲信号,一个是电平信号,或者二者都是电平信号,但又不属于互锁联络。实用中的两线联络大多属于这一种。4、NRZ(不归零)联络

在高速传输中,联络线上的信号可以对数据线上的信号造成很大干扰。为减少这种干扰,应尽量减少联络信号的跳变次数,基于此,提出了NRZ联络。8.2.3并行接口举例1、8位输出口联络逻辑2、8位输入口联络逻辑8.2.4可编程并行输入输出接口芯片8255A

8255A是一种典型的通用选通并行接口芯片。其内部有三个独立的8位数据口,即A口、B口、C口。A口:可工作在方式0、方式1、方式2。B口:可工作在方式0、方式1。C口:可工作在方式0,可给A、B口提供联络信号。三种工作方式

方式0--基本输入/输出方式

方式1--选通输入/输出方式

方式2--选通双向传送方式1、接口信号与内部结构当RESET输入端处于高电平时,所有的I/O口均被置成输入方式;要改变方式,只须向其控制字寄存器写入控制字就可以了。00011011A1A0A1A02、8255A口地址安排3、命令字8255A有两种命令字①

工作方式命令字

例如:设置A口方式1、输入,C口高4位为输出;

B口方式0、输出,C口低4位为输入。假设8255A的端口地址为60H~63H

mov

dx,

63h

moval,

10110001boutdx,

al

inal,60h

;从A端口读入8位数据

out61h,al

;从B端口输出8位数据

moval,0f0hout62h,al;从C端口输出高4位

inal,62h;从C端口输入低4位②

C口按位置位复位控制字例如:对端口C的bit3置1

mov

dx,

63h

mov

al,

00000111bout

dx,

al方式0

在这种方式下,3个口中的任何一个都可提供简单的输入和输出操作,即前已介绍的无条件传送方式。它不需要应答式联络信号,外设总是处于准备好的状态。

方式0提供两个8位口(A和B)和两个4位口(PC0~3,PC4~7);任何一个口都可用作输入或输出,所以可有16种组合;输出具有锁存功能,输入不具备锁存功能。方式0一般用于无条件传送的场合,也可以用作查询式传送。用作查询式传送时,可以将A口和B口作为数据口,把C口的4位(高4位或低4位)规定为输出口,用以输出一些控制信号,把C口的另4位规定为输入口,用以读入外设的状态。

作为方式0的例子,将无条件传送的例子改用8255A来实现。接口电路如图所示。数据采集的程序只须在前面加三条指令,以使8255A初始化。MOVAL,92H;A口方式0输入,B口方式0输入,C口输出MOVDX,343HOUTDX,AL4、A口和B口的选通工作方式

(1)8255A工作方式1(输入)STB

输入信号(外部设备发来)

低电平将数据锁存在输入缓冲器(INBUFFER)IBF输出信号

输入缓冲器满INTR

输出信号(由8255A发给8259A)

中断请求信号INTEA或B

(A口与B口内的中断允许控制位)

中断请求允许位。INTEA对应PC4位,INTEB对应PC2位。即:对INTEA/B的置位、复位是通过对PC4/2的置位、复位来完成的。

(2)8255A工作方式1(输出)OBF

输出信号

输出缓冲器满,低电平表示CPU已把数据写入8255A中。ACK

输入信号

低电平通知8255已将数据从端口A或端口B取走INTR

输出信号

中断请求信号INTEA或B

输出信号

断请求允许位。

INTEA对应PC6位,INTEB对应PC2位。即:对INTEA/B的置位、复位是通过对PC6/2的置位、复位来完成的。8255A工作方式1(输出时序)

(3)8255A工作方式2(双向传送)8255A工作方式2的特点为双向选通输入/输出方式

A口在某一时刻可输入数据,在另一时刻可输出数据。可采用中断方式或查询方式传送数据此时,B口可以工作在方式1(C口还有3条联络线)或方式0。使用C口中的若干线(5条)作专用的握手信号。是方式1下输入、输出的握手线的组合。8255A工作方式2时序PC3

例如:

假如在PC机上再接一个μ80微型打印机,用8255A作为接口,工作在选通输出方式,将缓冲区BUFFER内的ASCII码送打印机打印。电路如图所示。

当打印机的DSTB信号为低电平时,数据线D0~D7上的数据被锁入打印机内待打印。由于打印机动作相对于CPU来说很慢,打印机输出BUSY“忙”信号。

当打印结束,BUSY信号变低,打印机输出ACK负脉冲,通知8255A可接受新数据。所以用A口工作于方式1选通输出方式,以OBFA(即PC7)连接面DSTB脚,用PC5查询忙信号,可实现查询方式传送。如果用中断方式,则需将ACKA(即PC6)连接打印机的ACK信号,INTRA(即PC3)去申请中断。下面是查询方式的程序;exm8_5.asmdatasegment

aport

equ344h

cport

equ346h

ctrol

equ347hbufferdb‘Thisisasampleof8255A.’db‘PortAisinmodeone.’db‘Dataaretransferredbywayofpolling.’numequ$-bufferdataendsstacksegmentparstack‘stack’db100dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstartprocfarpushds

xorax,axpushax

mov

cx,num

moval,0a8h;control

mov

dx,ctrol

;wordoutdx,a1leasi,bufferl1:moval,[si]

mov

dx,aportoutdx,al

mov

dx,cportl2:inal,dx

;wait

andal,20h;busy=1

jzl2

l3:inal,dx

;waitanda1,20h;busy=0

jnzl3incsiloopl1retstartendpcodeendsendstart8.5模拟接口(数/模和模/数转换)模拟接口是与模拟设备的接口电路。模拟设备包括:音频设备视频设备各种传感器(压力、温度、湿度、速度等)的输出计算机要与模拟设备连接,必须进行D/A或A/D转换。根据系统对A/D或D/A的通道个数、转换速度的要求以及信号源频率等情况,通道形式有所不同,有单通道和多通道及低速与高速之分。共享A/D和D/A的多通道如下图所示。缓冲器寄存器8.5.1D/A转换原理

转换原理数字代码为“1”时,开关向上,该位的权电阻产生相应的权电流,权电流流入运放的求和点;为0时,开关向下,无电流流入。1、加权电流法(二进制加权电阻网络)电路组成:二进制代码对应的每个输入位,各有一个开关和一个权电阻。

对于一个n位的二进制数an-1an-2…a1a0

,其值为:N=an-12n-1+an-22n-2+…+a121+a020I1=an-1

Vref

/R+an-2

Vref

/2R+…+a1

Vref

/2n-2R+a0

Vref

/2n-1R=Vref

(an-12n-1+an-22n-2+…+a121+a020)/2n-1R=Vref

N/2n-1R

可以看出,输出电流与数字输入值成正比。

因为,I2≈I1=-Vout/RF所以,Vout=-RF

NVref

/2n-1R

缺点是电阻阻值范围太宽,不利于集成。例:12位D/A转换器:

MSB:R=10K,LSB:R=211R=2048*10k2、T型网络法(R-2R电阻网络)I=VRef

/RI11=I/2=VRef

/2RI12=I/22=VRef

/22R...I1n=I/2n=VRef

/2nRI1=an-1I11+an-2I12+…+a0I1n=(an-1/2

+an-2/22+…+a0/2n)VRef

/R=(an-12n-1+an-22n-2+…+a121+a020)VRef

/2nR=NVRef

/2nR

因为,I2≈I1=-Vout/RF

所以,Vout=-RFNVRef

/2nR此实现方法被广泛应用。3、分压电阻和开关树法

分压电阻和开关树法如下所示。这种方法也很常用。因为电阻只有两种。但所用的模拟开关数目随位数成几何级数增加。在一些芯片中采用。且只用于8位/10位分辨率。b0b14、D/A转换器的主要参数分辨率能分辨的最小电压增量。位数愈多分辨率愈高。例:一个8位的DAC,满量程为5V

分辨率为5000mv/28-1=5000mv/255≈19.61mv精度例如,一个DAC,在理论上应是模拟量5V电压对应数字量800H,但是实际上4.997V、4.998V、4.999V也对应数字量800H。这就存在着一个转换精度问题,这个精度反映了DAC的实际输出接近理想输出的精确程度。DAC的精度通常是用数字量的最低有效位LSB来表示。一般采用数字量的最低有效位作为衡量单位。

例:

1/2LSB。对于8位的DAC,其精度为:

(1/2)x(1/255)=

1/510转换时间数字量输入到输出模拟量达到稳定所需的时间。超高速:<100ns

高速:100ns~10µs

中速:10µs~100µs

低速:>100µs线性度理论上应按线性变化。模拟输出偏离理想输出的最大值称为线性误差。5、D/A转换器的连接特性输入缓冲能力三态输入缓冲、输入锁存器输入数据宽度

8位、10位、12位、14位、16位等输入码制二进制码、BCD码输出模拟量类型电压、电流输出模拟量极性单极性输出、双极性输出8.5.2DAC芯片举例1、有输入锁存器的DAC0832芯片DAC0832特点:

R-2R电阻网络(T形网络法)分辨率为8位转换时间为1µs(属于高速)单电源5V~15V

参考电压+10V~

-10VDAC0832引脚信号和内部结构外部引脚D0~

D7:数字量输入Iout0,Iout1:模拟电流输出端。它们的和为一常量CS:片选ILE:允许输入锁存WR1,WR2:写信号1,2XFER:传送控制信号。使能WR2有效Rfb:反馈电阻输出端VRef:参考电压AGND;模拟地DGND:数字地工作方式双缓冲方式进行两级缓冲,用两组控制信号分别进行控制。单缓冲方式此方式只进行一级缓冲,具体可用第一组或第二组控制信号对第一级或第二级缓冲器进行控制。

直通方式直通就是不进行缓冲,数字量直接送到DAC转换器,条件是除ILE端加高电平外,将所有的控制信号都接低电平。DAC0832双缓冲方式

moval,18h

outport1,al

;锁存到输入寄存器

outport2,al

;锁存到DAC寄存器,并开始转换DAC0832单缓冲方式实验电路原理如图,DAC0832采用单缓冲方式,具有单、双极性输出端(图中的Ua、Ub)8.5.3A/D转换原理

当比较器输出C=1时,计数器从0开始计数,C=0时,则停止计数。计数器复位后开始计数,此时Vo=0,比较器输出C=1。随着计数器计数值的增加,Vo不断上升,到Vo接近或等于Vi时,停止计数,数字输出的值就是Vi的值。转换原理:1、计数器式A/D转换特点:转换速度较慢,转换时间长(因为计数器是从0开始计数的)。转换时间长短不一致(转换时间长短与Vi的大小、计数器的位数有关)。2、逐次逼近式A/D转换

转换原理

计数器由逐次逼近寄存器代替,它不是从0开始计数,而是从最高位开始,通过设置试探值。进行计数。即当第一个时钟来到时,控制电路把最高位置1送给SAR,使其输出为10000000。使DAC的输出电压Vo为满量程的一半,然后根据Vo与Vi的大小,逐次逼近Vi值。采用从最高位开始逐位试探的方法从最高位开始:某位置“1”,若比较结果“低于”,则该位保留;若比较结果“高于”,则该位清除(置0)直到最低位。两种方式比较:对于n位的A/D转换器,只需用n次比较。而对于计数器式A/D转换器,最多要用2n次比较。因为逐次逼近式电路简单,成本低,所以它是一种最常用的变换方法。3、双积分式A/D转换由积分器、比较器、计数器和基准电源组成无高精度电阻网络抗干扰性好转换时间长(从几ms~上百ms)常用在数字仪表中4、并行式A/D转换用2n-1个比较器同时进行转换转换速度快、精度较差、价格贵5、A/D转换器的主要参数分辨率能够转换成二进制的位数。一般可直接用位数来表示分辨率。转换时间从输入启动转换信号开始到转换结束,得到稳定的数字输出量为止的时间。线性度

ADC实际转换特性与理想转换特性的最大偏离值。稳定性如温度、电压、器件值等的变化对ADC性能的影响。6、A/D转换器的外部信号※模拟信号输入线单通道输入或多通道输入※数字量输出线※转换开始线※转换结束线8.5.4ADC芯片举例(A/D转换器芯片ADC0809)对外引脚信号面向CPU或总线一侧

8条数据量输出:D7~D0

数据输出允许:OE(高有效)

A/D转换开始:START(高有效)

A/D转换结束:EOC(转换过程中为低,转换结束为高电平)

地址锁存允许:ALE(高有效)

模拟通道地址:ADDA~ADDC

(用来选择8个模拟通道号)

时钟信号:CLOCK(用于控制内部电路时序)面向外设一侧

8路模拟输入信号:IN0~IN7内部结构内部有地址锁存及译码器,三态数据输出锁存器,有一个8路模拟开关,一个比较器,一个带有树状开关的256R分压器,一个逐次逼近寄存器。例:ADC0809通过并行接口8255A与PC总线连接的接口电路如下图所示,请回答如下问题:

(1)写出8255A的端口地址。

(2)8255A的B口、C口高4位、C口低4位各工作于何种方式?写出8255A的控制字。此时A口能否工作于双向方式?

(3)若选择ADC0809的通道IN1有模拟信号输入,此时的引脚PC6PC5PC4=?(4)如何控制ADC0809转换的开始?

(5)CPU如何知道ADC0809转换结束?CPU如何得到ADC0809转换好的数字信号?

(6)若不用如图的方式通知CPU,还有哪种方式通知CPU得到ADC已转换好的数字信号?

(7)试编写一程序段,完成模拟通道IN1的转换与A/D数据输入(要求给程序加注释)。ADC0809应用实例解:这是并行接口和A/D转换器的综合应用题。(1)8255A的端口地址为:384H~387H(4个口地址)(2)B口:方式0基本输入;C口高4位:方式0输出;

C口低4位:方式0输入。控制字:1XXX0011B=83H~F3H的任一个都可以。

A口此时不可工作于双向方式。(3)PC6PC5PC4=001B

(4)CPU通过8255A让PC7输出高电平,即可使A/D转换开始。(5)CPU通过查询方式(检查EOC为高电平,即PC2为低电平)即可知道A/D转换是否结束。然后读8255A的B口即可得到转换好的数字信号。(6)采用中断方式通知CPU,即把转换结束信号EOC作为中断请求信号接到8259A的IRQ上,作为8259A的中断源。(7)程序段如下:

MOVDX,387H

;8255A的控制口为387H

MOVAL,83H

;控制字为83H;PB口为输入,PC2为输入,PC7为输出

OUTDX,AL

;写入控制字

MOVAL,10H

;取模拟通道IN1,PC6~PC4=001,PC7为低电平。

MOVDX,386HOUTDX,AL

;送C口,启动ADC0809开始转换

MOVAL,90H

;启动ADC0809开始转换,且产生PC7为高电平

OUTDX,AL

;高电平送入C口

NOP

;高电平延时

MOVAL,10H

;撤销启动信号,PC7仍为低电平

OUTDX,AL

LP:INAL,DX

;查询PC2(EOC)状态,若为低电平,没转换好

ANDAL,04H

JNZLP

;EOC=0,继续查询

MOVDX,385H

INAL,DX;EOC=1,已转换好。因0809的OE总有效,CPU读PB口MOVAH,4CH

;DOS调用,程序终止

INT21H8.4串行传输及串行接口8.4.1串行传输的应用具体应用见书P352串行传输的特点:所用的传输线少,适于远距离传送数据信息和控制信息可在同一条线上传送使用的信号电平与TTL不兼容双方需约定传输的通信协议(规程)或波特率

通信协议规定通信链路的建立与拆除、命令和响应以及出错时的恢复等各种规定,双方须严格遵守。8.4.2串行传输需要解决的问题1、同步(位同步、字节同步、数据块同步)2、差错处理(检错、纠错)3、通信协议(规程)单工方式发端只负责发送,收端只负责接收半双工方式只有一条传输通路,发送器∕接收器通过开关切换发收双方不能同时进行发送和接收操作全双工方式有两条传输通路通信双方都能在同一时刻进行发送和接收操作信息的检错与纠错差错控制远距离通信必然存在差错(误码)。要保证通信的可靠,必须采用某种措施解决这个问题。其措施就是检错与纠错。检错方法奇偶校验方阵校验

CRC循环冗余校验纠错方法纠错码卷积码纠错编码技术串行通信方式异步通信方式

以字符为单位进行传送

收发双方时钟不要求严格同步,允许有一定偏差

无数据传送时,传送高电平同步通信方式

以数据(或字符)块为单位进行传送

收发双方时钟要求严格同步

需要界定符(或同步字符)

无数据传送时,传送同步字符8.4.3串行通信的信息格式1、异步格式异步数据帧由1个起始位,5~8个数据位,0~1个奇偶检验位,1、1.5、2个停止位组成。波特率:所谓波特率,是指单位时间内传送二进制数据的位数,以位/秒为单位。波特率4800就是传送速度4800位/秒。位周期是每一个数据位的宽度,它等于传送波特率的倒数。常用的波特率为110,150,300,600,1200,2400,4800,9600,有的可达19200,38400或更高。16倍波特率收/发时钟的采样过程如下图所示2、同步格式(1)内同步方式面向字符的同步通信数据格式规定10个特殊字符作为控制字符在数据块中的传送的数据如果与控制字符相同,采用字符填充方式。DLE为转义字符。例:数据中若有ETX,则转义为DLEETX;数据中若有DLE,则转义为DLEDLE。面向比特的同步通信数据格式典型协议有SDLC,HDLC,LAPD,LAPB等若信息场中出现假的标识符(01111110),采用比特填充技术(“0”插入/删除技术)。即在收送端遇到5个“1”后自动加一个“0”;接收端在收到连续的5个“1”后把后面的“0”删除。这种“0”位的插入和删除是由硬件自动完成的。

(2)外同步格式

外同步格式中数据之前不含同步字符.而是用一条专用控制线来传送同步字符,以实现收发双方的同步操作,任何一帧信息都以两个字节的循环控制码CRC为结束。8.4.4串行接口标准RS-232C接口标准(直连距离15m,传输速率小于20Kb/s。PC机都有RS-232)RS-422接口标准(直连距离可达1200m,最大传输速率可达10Mb/s,1个发生器,10个接收器)RS-485接口标准(直连距离与RS-422标准一样,它允许电路中有32个发送器,32个接收器,可实现多点对多点的通信)RS-232C信号线定义共有25根信号线,9根主要信号线定义如下:TxD

发送数据线RxD

接收数据线RTS

请求发送。DTE请求DCE发送数据。CTS

清除发送。是DCE对RTS信号的响应。DSR

数据设备准备好。表示Modem可用SG信号地DCD(RLSD)载波检测信号。本地Modem已检测到远端Modem送出的载波信号DTR

数据终端准备好。表示DTE可用RI振令指示RS-232C连接器RS-232有两种连接器(25芯和9芯),如下图所示。在通信线路上采用调制解调技术,发送方使用调制器,把要传送的数字信号调制转换为适合在电话线路上传输的音频模拟信号;接收方则使用解调器从线路上测出这个模拟信号,还原成数字信号。调制的方法很多,按照调制技术的不同,有调频(FM)、调幅(AM)和调相(PM)三种。在数据通信中又常将这三种调制方法分别称为频移键控法FSK、幅移键控法ASK和相移键控法PSK。在计算机通信实践中用得最多的为频移键控法FSK。频移键控法调制的实现原理示意图计算机与计算机之间串口的直接连接方式RS-232C的电气特性与电平转换逻辑“1”为-3V~-15V逻辑“0”为+3V~+15VEIA电平与TTL电平之间需进行转换,如下图。8.4.5串行接口芯片举例串行接口的基本功能:数据格式的自动生成、串

并变换、传输速率控制、错误检测、电平转换。典型接口芯片同步USRT

面向字符MC6852,Intel8251A

面向比特MC6854,Intel8273,Z-80SIO异步UARTINS8250,MC6850,Intel8251A,Z-80SIO在PC机系列中采用INS8250AINS82C50ANS16450NS16C450NS16550NS16550APC16550D可编程串行接口芯片8250以下是与系统连接的有关信号:地址信号:A0~A2,内部有8个端口地址片选信号:CS0、CS1、CS2,三个片选是相“与”关系数据信号:D0~D7地址选通:ADS,低电平选通,高电平锁存地址数据输入选通:DISTR和DISTR,相当于读信号。二者作用相同,是相“或”关系。数据输出选通:DOSTR和DOSTR,相当于写信号。二者作用相同,是相“或”关系。驱动器输出禁止:DDIS,高电平禁止对数据总线驱动。CPU从8250读取数据时为低电平。复位信号:MR,用来复位内部寄存器及有关信号。中断请求:INTRPT,在条件满足时向CPU发中断请求。

外部通信设备的有关信号:串行数据输出:SOUT,向线路发出的串行数据线。与RS-232的TxD对应。串行数据输入:SIN,从线路接收的串行数据线。与RS-232的RxD对应。MODEM控制与状态信号:DTR与DSR,RTS与CTS,RI与DCD(RLSD),这些信号与RS-232的接口信号类似。波特率输出信号:Baudout,即发送数据的工作频率,其频率是发送波特率的16倍。接收时钟信号:RCLK,通常将其与Baudout连接,使收和发波特率相等。时钟信号:XTAL1和XTAL2,可在两端间接一石英晶体振荡器,由内部产生时钟。也可用外部时钟输入XTAL1。用户定义的输出信号:OUT1和OUT2,芯片内部Modem控制寄存器D2D3两位的输出信号,用户可以编程对其置位或复位,以灵活的适应外部的控制要求。例如用来作为INTRPT输出的控制信号。

※8250有8个8位寄存器和一个16位分频比锁存器,被安排在8个口地址空间内。除了数据接收缓冲寄存器(RBR,只读)和发送数据保持寄存器(THR,只写)占用同一口地址(0地址)外,其他命令/状态寄存器各占一个口地址。它们是:

•中断允许寄存器(IER),地址1,读/写(W/R);

•中断识别寄存器(IIR),地址2,只读(RO);

•线路控制寄存器(LCR),地址3,读/写;

•线路状态寄存器(ISR),地址5,读/写;8250内部组成

•Modem控制寄存器(MCR),地址4,读/写;通过该寄存器,可控制MODEM线(RTS,DTR,以及自定义线OUT1,OUT2)状态的高/低(ON/OFF)。

•Modem状态寄存器(MSR),地址6,读/写;它反映Modem输入线(CTS,DCD,RI,DSR)的状态和这些状态的变化。一个16位寄存器是分频比锁存器,它分成两个8位寄存器,

•分频比锁存器低位(DLL),地址0,读/写;

•分频比锁存器高位(DLH),地址1,读/写。

8个地址中的地址7没用。

线路控制寄存器(LCR):决定传输数据格式、奇偶校验、发送BREAK和分频比锁存器寻址等。该寄存器既可以写入,也可读出。其格式如下图所示。线路状态寄存器(LSR):其作用是向CPU提供有关数据传输的状态信息。CPU不仅可以对LSR进行读出,还可对其进行写入(除TSRE位外)。当系统进行自检时,可利用对LSR的写入,人为设置错误来对各种状态进行诊断测试。Modem控制寄存器(MCR)*

DTR,RTS,OUT1,OUT2是MODEM输出线控制位,它们分别控制DTR,RTS,OUT1,OUT2线的输出状态。当某位置1,相应的输出线就变为低电平。

LOOP是本地环测控制位,它置1,变为环测方式;清零,变为正常工作方式。Modem状态寄存器(MSR)

RLSD,RI,DSR,CTS位分别反映MODEM输入线DCD,RI,DSR,CTS的状态,比如,DCD线是低电平,则RLSD置1,若DCD是高电平,则RLSD清零。

*△RLSD,△DSR,△CTS反映DCD,DSR,CTS线的变化。若RI线从高电平(无效)变为低电平(有效,收到振铃),则TERI(TrailingEdgeofRingingIndicator)置1。中断允许寄存器(IER)*

EMSI:允许MODEM状态改变中断,1允许。*

ELSI:允许线路状态(出错)中断,1允许。*

ETHEI:允许THRE(发送寄存器空)中断,1允许。*

ERBFI:允许接收缓冲寄存器满中断,当LSR的DR位为1时,可产生接收中断.

这些中断的优先级为LSI最高,其后依次是DR(接收缓冲寄存器满),THRE和MODEM状态改变。中断识别寄存器(IIR)

ID0是中断有效位:0表示有待处理的中断请求,1表示没有。

ID2,IDl是中断源识别码。可以识别4种中断源。编码如下:

11接收数据出错;(最高级)

10接收数据寄存器满;

01发送保持寄存器空;

00Modem状态变化中断。(最低级)发送波特率=1.8432MHz÷除数寄存器值÷16

除数寄存器,实际上是分频系数。外部输入时钟XTAL1的频率(PC/XT系列中为1.8432MHz)除以除数寄存器中的双字节数后,得到数据发送器的工作频率,再除以16,才是真正的发送波特率。PC/XT中波特率和除数之间的关系见表9-5。8250的编程

INS8250的编程分为初始化和工作两部分。初始化主要是约定数据通信规范,工作编程则是实现数据的发送和接收。下面假设两台PC/XT通过各自的1号异步串行通信口COM1,按接线直接通信,通信的波特率选2400。现举例说明其编程如下。

1.初始化程序初始化编程包括约定传送波特率(对除数寄存器编程)、通信的字符数据格式(对线路控制寄存器编程)及INS8250的操作方式(对MODEM控制寄存器及中断允许寄存器编程)。;exm8_01;初始化编程;设置波特率为2400

mov

dx,3fbh

;线路控制寄存器地址

moval,80houtdx,a1

;DLAB=l

mov

dx,3f9h

;高位除数寄存器

mova1,0outdx,a1

mov

dx,3f8h

;低位除数寄存器

mova1,30houtdx,a1;设置数据格式;数据长7位,1个停止位,偶校验

mov

dx,3fb

moval,1ah;00011010outdx,al;设置操作方式,不用中断;而OUT2=1,DTR=0,RTS=0(8250芯片引脚信号)

mov

dx,3fch

;MODEM控制寄存器

moval,3

;设置RTS、DTR(有效)

outdx,al;即RS232CCOM1的引脚信号为1

mov

dx,3f9h

;中断允许寄存器

moval,0

;屏蔽全部中断

outdx,al

2.通信工作程序上面初始化程序屏蔽了中断,因此只可用查询方式进行通信,即读入线路状态寄存器,先检查数据接收部分,再检查数据发送部分,在接收数据时,还要检查接收数据是否有错。只有正确的接收数据,才可让CPU读走。以下是一段查询式通信的工作程序。;exm

;查询式通信;发送字符在CL中,若收到字符,暂存于ALkeep_try:mov

dx,3fdhinal,dx

testal,1eh

;检查出错误否

jneerror_routine

;转出错处理

testal,1

;检查收到新数否

jnzreceive

;转接收

testal,20h

;检查可否发送字节

jzkeep_try

;重新检查

mov

dx,3f8h

moval,cl

;发送字符

outdx,al

jmpshortkeep_tryreceive:mov

dx,3f8h

;接收字符

inal,dx…

本例在初始化MODEM控制寄存器时,设置RTS及DTR两信号有

温馨提示

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

评论

0/150

提交评论