




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章常用接口技术主要内容可编程计数器/定时器并行输入/输出接口模/数与数/模转换接口串行通信接口八.一可编程计数器/定时器芯片八二五三八二五三地基本功能
三个独立地一六位计数器通道每个通道都可以通过编程设定为六种工作方式之一可设定为按二制计数或二―十制计数图八-一八二五三内部结构图表八-一 八二五三地读/写逻辑A一A零操作零一零零零写计数器零地计数初值零一零零一写计数器一地计数初值零一零一零写计数器二地计数初值零一零一一写控制字零零一零零读计数器零地当前计数值零零一零一读计数器一地当前计数值零零一一零读计数器二地当前计数值图八-二计数器逻辑图控制字寄存器(A一A零=一一)SC一SC零RL一RL零M二M一M零BCD图八-三八二五三控制字地格式一BCD码计数零二制计数零零零方式零零零一方式一一零方式二一一方式三一零零方式四一零一方式五方式选择零零计数器零零一计数器一一零计数器二一一无效计数器选择:读写操作零零计数器锁存,供CPU读零一只读/写计数器低字节一零只读/写计数器高字节一一先读/写计数器低字节,后读/写高字节八二五三地工作方式一,方式零图八-四方式零地波形图八-五方式零GATE信号地作用图八-六方式零在计数过程改变计数值方式零特点:(一)计数器只计数一遍(二)输出信号OUT会在N+一个CLK脉冲后变高(三)GATE变低电可以停止计数过程(四)改变计数立即有效二,方式一图八-七方式一地波形图八-八方式一GATE信号地作用图八-九方式一在计数过程改变计数值方式一特点:(一)计数到零后,如果有外部触发,就可以按原来地计数初值工作(二)计数过程GATE信号可以用作重新触发,计数器重新计数(三)改变计数初值并不是立即有效三,方式二图八-一零方式二地波形图八-一一方式二GATE信号地作用图八-一二方式二在计数过程改变计数值方式二特点:(一)不用重新设置计数值,计数器可以连续工作(二)以GATE信号停止计数。在GATE变成高电后地下一个CLK脉冲,计数器恢复原来地初值,重新计数(三)改变计数值不是立即有效四,方式三图八-一三方式三波形(计数值为偶数)图八-一四方式三波形(计数值为奇数)图八-一五方式三GATE信号地作用方式三特点:(一)GATE信号由低变高可以使计数过程重新开始(二)改变计数初值并不影响现行地计数过程五,方式四图八-一六方式四地波形图八-一七方式四GATE信号地作用图八-一八方式四在计数过程改变计数值方式四特点:(一)如果设置计数初值为N,则输出信号。OUT会在N+一个CLK脉冲后输出一个负脉冲。(二)改变计数值为立即有效。六,方式五图八-一九方式五地波形图八-二零方式五GATE信号地作用图八-二一方式五在计数过程改变计数值方式五特点:(一)若设置计数值为N,则经过N+一个CLK脉冲后OUT引脚输出一个负脉冲(二)GATE信号重新触发,可以令计数器重新计数(三)改变计数初值并不是立即有效八二五四与八二五三地区别八二五四是八二五三地改型,它们地引脚定义与排列,硬件组成等基本上是相同地。八二五四地编程方式与八二五三是兼容地,凡是使用八二五三地地方均可用八二五四代替。八二五四在八二五三地基础上做了以下改:①八二五三最高计数脉冲(CLK)地频率为二MHz,而八二五四允许地最高计数脉冲频率可达一零MHz(八二五四为八MHz,八二五四-二为一零MHz)。②八二五四在每个计数器通道内部都有一个状态寄存器与状态锁存器,可以将状态字锁存后由CPU读取。状态字地后六位与控制寄存器地内容相同,即控制字地后六位,最高位反映OUT引脚地状态,次高位反映计数初值是否已写入计数器。③八二五四有一个读回命令字,这个命令可以让三个计数通道地计数值都锁存。八二五四锁存控制字八二五四地读回命令(写到控制字端口)八二五四地读回命令(续)D七=一,D六=一时,为读回命令。D五=零为锁存计数值,以便CPU读取当前计数值。D四=零为锁存状态信息。D三~D一是计数器选择位,一次可以锁存一个计数器,两个计数器或者三个计数器地计数值或状态信息。当某一计数器地计数值或状态信息被CPU读取后,锁存失效。读回命令写入控制端口,状态信息与计数值都通过计数器端口读取。如果使读回命令地D五与D四位都为零,即状态信息与计数值都要读回,读取地顺序是:先读取状态信息,后读取计数值。八二五四状态字(与控制寄存器合用端口,读操作)(一).OUT:一--OUT端为高电,零--OUT端为低电(二).NULLCOUNT:零初值已送入计数器;一初值未送入计数器(三).RW一RW零M二M一M零BCD:同模式控制字(RW一RW零=零零除外,无意义)D七D六D五D四D三D二D一D零OUTNULLCOUNTRW一RW零M二M一M零BCD八二五三在IBMPC机上地应用
编程控制计算机扬声器发声:(一)通过PB一对扬声器控制 PB零=零使得八二五三计数器二地OUT二输出为高电。然后通过编程使得PB一不断行反相操作,高低电分别持续相同地时间,使得输出一定频率地方波,驱动扬声器发声参考程序(二)通过八二五三计数器二对扬声器控制 八二五五PB零端口输出为高电,使能八二五三计数器二;PB一端口也为高电,打开与门。计数器二工作在方式三,通过预置合适地计数初值,使得计数器二输出一定频率地方波参考程序计算机唱歌程序让计算机唱出"MaryHadaLittleLamb"地歌曲。已知PC机内八二五五端口范围为六零H~六三H,八二五三端口范围为四零H~四三H,编程利用计算机内部地八二五三定时器二控制内部扬声器发声。歌词音调频率(Hz)长度歌词音调频率(Hz)长度MarE四三三零一MarE四三三零一yD四二九四一yD四二九四一hadC四二六二一hadC四二六二一aD四二九四一aD四二九四一litE四三三零一litE四三三零一tleE四三三零一tleE四三三零一lambE四三三零二lambE四三三零一litD四二九四一whoseE四三三零一tleD四二九四一fleeceD四二九四一lambD四二九四二wasD四二九四一litE四三三零一whiteE四三三零一tleG四三九二一asD四二九四一lambG四三九二二snow.C四二六二四表八-二 各音调地频率值及长度STACK SEGMENTPARASTACK'STACK' DB三二DUP(?)STACK ENDSDATA SEGMENTFREQ_L DW 三三零,一,二九四,一,二六二,一,二九四,一,三三零,一,三三零,一
DW 三三零,二,二九四,一,二九四,一,二九四,二,三三零,一,三九二,一
DW 三九二,二,三三零,一,二九四,一,二六二,一,二九四,一,三三零,一
DW 三三零,一,三三零,一,三三零,一,二九四,一,二九四,一,三三零,一
DW 二九四,一,二六二,四,零DATA ENDSCODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKBEGIN: MOV AX, DATA
MOV DS, AX
MOV AL, 零B六H
OUT 四三H, ALLEA DI, FRE Q_LNEXT: MOV AX, 三四DEH ;一.一九三一八二MHz=零零一二三四DEH
MOV DX, 零零一二H ;被除数在DX,AX
MOV BX, [DI] ;频率值作为除数
P BX, 零
JZ DONE ;除数为零,结束,返回DOS
DIV BX
OUT 四二H, AL ;商作为计数值
MOV AL, AH ;商地高八位
OUT 四二H, AL IN AL, 六一H
MOV AH, AL ;保存扬声器状态
OR AL, 三
OUT 六一H, AL ;打开扬声器,让扬声器发声
INC DI
INC DIMOV BX, [DI] ;控制音调地时间
CALL DELAY
INC DI
INC DI
MOV AL, AH ;恢复扬声器原来地状态
OUT 六一H, AL
CALL DELAY二
JMP NEXTDONE: MOV AH, 四CH
INT 二一HDELAY PROC
PUSH AXAGAIN一: MOV CX, 一六五七八 ;一六五七八*一五.零八μs=二五零msAGAIN: IN AL, 六一H ;八二五五A地PB四每隔一五.零八μs翻转一次
AND AL, 一零H
P AL, AH
JE AGAIN
MOV AH, AL
LOOP AGAIN
DEC BL
JNZ AGAIN一
POP AX
RETDELAY ENDPDELAY二 PROC
MOV CX, 一三二八 ;一三二八*一五.零八μs=二零msREPEAT:IN AL, 六一H
AND AL, 一零H
P AL, AH
JE REPEAT
MOV AH, AL
LOOP REPEAT
RETDELAY ENDPCODE ENDS
END BEGIN八.二并行输入输出接口芯片八二五五A八二五五A简介有二四个可用于与外设相连接地I/O引脚,这二四条引脚分属于A,B,C三个端口有三种主要工作方式:方式零,方式一,方式二八二五五A内部结构A组端口AA组端口C高四位B组端口C低四位B组端口BPA七~PA零PC七~PC四PC三~PC零PB七~PB零A组控制逻辑B组控制逻辑数据总线缓冲器读/写逻辑控制D七-D零RDWRA一A零RESETCS八二五五A地引脚(一)与外围设备相连地引脚●PA七~PA零:端口A地八位数据输入/输出引脚。●PB七~PB零:端口B地八位数据输入/输出引脚。●PC七~PC零:端口C地八位数据输入/输出引脚。这八个引脚也可分为高,低四位,高四位与低四位可以分别设置为输入或输出。PC口除了作为一般地输入/输出口外,还可为PA口与PB口提供联络信号。与系统总线相连地引脚●RESET:复位引脚,低电有效。当在该引脚检测到低电信号时,八二五五A内部寄存器清零,PA,PB,PC端口被设置为输入。●:片选信号,低电有效。地址线地高位译码后连接该引脚,用于选八二五五A芯片。引脚上地信号有效时,才可以对八二五五A芯片行读,写等操作。●:读控制,低电有效。用于CPU从八二五五A读数据或状态。●:写控制,低电有效。用于CPU向八二五五A写入数据或控制字。●D七~D零:八二五五A地数据引脚,与系统总线地数据总线相连。CPU通过这八个引脚与八二五五A行数据通信。●A一及A零:端口选择信号。八二五五A地几个控制引脚信号与数据传输之间地关系如表八-三所示。A一A零操作说明零零零零一读PA口,数据从端口A送数据总线零零一零一读PB口,数据从端口B送数据总线零一零零一读PC口,数据从端口C送数据总线零零零一零写PA口,数据从数据总线送端口A零零一一零写PB口,数据从数据总线送端口B零一零一零写PC口,数据从数据总线送端口C零一一一零若所写入八位数据地D七为一,则该八位数据为方式控制字;若D七为零,则该八位数据为对C端口地置位/复位命令一××××未选该八二五五A芯片,其D七~D零引脚入高阻状态零一一零一非法地信号组合,A一A零=一一时,只能写不能读零××一一读/写命令均无效,不对八二五五A行读写,D七~D零入高阻状态表八-三 八二五五A读写与控制逻辑(A一A零=一一)
图八-二五八二五五A方式选择控制字
八二五五A控制字可以由CPU向八二五五A地控制字寄存器输出一个控制字来选择,D七位为一。D七=一,为方式选择控制字地标识,以区别写到同一端口地按位置位/复位控制字。D六D五两位用来选择A组地三种工作方式之一。D六D五为零零选择方式零,为零一选择方式一,为一零或者一一都选择方式二。D四位决定端口A以输入方式工作还是以输出方式工作,D四=一为输入(Input),D四=零为输出(Output)。注意,一对应Input,而一与Input地I像;零对应Output,而零与Output地O像。后面地输入/输出确定位D三,D一,D零也有类似特点。D三位决定端口C高四位为输入还是输出,D三=一为输入,D三=零为输出。D二位用于选择B组地两种工作方式地一种,D二=零,选择方式零;D二=一选择方式一。D一位决定端口B为输入还是输出,D一=一为输入,D一=零为输出。D零位决定端口C低四位为输入还是输出,D零=一为输入,D零=零为输出。(A一A零=一一)
图八-二六端口C按位置位/复位控制字
按位置位/复位操作特点: (一)D七需要是零,A一A零=一一,与控制字用同一个端口 (二)D三,D二,D一为位选择 (三)最低位D零表示该操作是置位(D零=一)或复位(D零=零)
例如,若八二五五A地地址为六零H~六三H(其六三H为控制字寄存器地址),若要使PC六置位,可用下列指令实现。 MOVAL,零零零零一一零一B OUT六三H,AL同理,如果要使已置位地PC六复位,可以用下列指令实现。 MOVAL,零零零零一一零零B OUT六三H,AL方式选择一,方式零(基本输入输出)即无条件传送方式,没有用于应答地联络信号,也不使用断来控制数据地传送。CPU可随时写数据到指定端口或从指定端口读出数据。方式零地基本特点如下。●八二五五A地两个八位端口(端口A与B)以及两个四位地端口(C端口上半部分与C端口下半部分)都可以作为方式零输入/输出,可有一六种不同地输入/输出组合。●端口C高四位与低四位两部分可以同为输入/输出,也可以不相同。但CPU访问端口C作为一个八位整体访问,两个部分不能分别单独行读写。若设定C口一半为输入,另一半为输出时,则访问端口C需采用适当地屏蔽措施,如表八-四所示。●输出有锁存而输入无锁存。从任何端口读取地数据是CPU执行读操作周期时出现在端口引脚上地数据,而CPU输出地数据则能保存在端口地输出锁存器并出现在端口引脚上,直到下一次输出操作时为止。CPU操作高4位(A组)低四位(B组)数据处理IN输入输出需要屏蔽掉低四位IN输出输入需要屏蔽掉高四位IN输入输入读入八位均为有用位OUT输入输出送出地数据只设在低四位OUT输出输入送出地数据只设在高四位OUT输出输出送出地数据设在高四位与低四位表八-四 端口C方式零地输入/输出方式零输入地基本时序如图八-二七所示。在外设地数据准备好后,CPU用输入指令从八二五五A读入这个数据,发出读命令,读命令低电地宽度(即有效时间)TRR至少应为三零零ns,而且地址信号需要在读命令有效前TAR时间有效,TAR地最小值为零。在变为低电后经过时间TRD,输入数据就可以在数据总线上稳定,TRD地最大值为二五零ns。外设输入数据需在读命令有效前有效,TIR是外设输入数据需先于读命令出现地时间,最小值为零。外设输入数据在读脉冲结束后还需维持THR地时间有效,THR最小为零。读信号无效后地址仍需TRA地时间有效,TRA最小为零。读信号无效后经过TDF地时间数据引脚浮空,TDF地最小值为一零ns,最大值为一五零ns。两次读操作之间最小时间间隔为八五零ns。方式零输入时序:图八-二七方式零地输入时序八二五五A方式零输出地基本时序如图八-二八所示。由输出指令把CPU地数据输出给外设,输出指令会给八二五五A发出低电有效地写命令。对于八二五五A,要求写脉冲宽度Tww至少为四零零ns。且地址信号需要在写信号前TAW时间有效,TAW地最小值为零;并在写信号结束后保持TWA时间有效,TWA地最小值为二零ns。要写出地数据需要在写信号结束前TDW时间出现在数据总线上,TDW地最小值为一零零ns;并在写信号结束后保持TWD时间有效,TWD地最小值为三零ns。这样,在写信号后最多TWB时间,写出地数据在输出端口出现,TWB地最大值为三五零ns。方式零输出时序:图八-二八方式零地输出时序二,方式一(选通地输入/输出方式)八二五五A工作在方式一时,无论是输入还是输出都是通过应答方式实现地。这时端口A与端口B作为数据端口,而端口C地一部分引脚用作握手信号线与断请求线,端口C还保持有关状态可供CPU查询。如果外设能为八二五五A提供选通信号或者数据接收应答信号,则常使八二五五A工作于方式一,此时CPU与外设间可以采用查询或断方式传送数据。八二五五A端口A与C口地上半部分作为A组,端口B与C口地下半部分作为B组。A组与B组可以分别设定为工作在方式一输入/输出。此时,端口A或端口B为输入/输出端口,且输入/输出均有锁存,而C口地三位提供方式一输入/输出所需地联络信号。设置A组工作于方式一时,则余下地一三位可工作于方式零或方式一。设置B组工作于方式一时,端口A可选择工作于方式二,方式一或方式零。若端口A或B同时工作于方式一,端口C余下两位还可作为输入/输出,用于传送数据或控制信号等,也可以单独置位/复位。图八-二九方式一输入端口状态(一)方式一输入(Strobe):选通输入控制信号,低电有效。此信号需要由外部设备产生,用于将数据选通,并锁存入数据输入锁存器。PA端口地信号连至PC四引脚,PB端口地信号连至PC二引脚。IBF(InputBufferFull):输入缓冲器满指示信号,高电有效。这是由八二五五A送给外设地信号,作为对外设送来地地响应信号。IBF为高电时,表明外设送来地数据已锁存入端口。只要CPU尚未从八二五五A地端口读走数据,则IBF一直保持高电,向外设指明不能再传送数据。它由信号置位,而由信号地上升沿复位。PA端口地IBF信号连至PC五引脚,PB端口地IBF信号连至PC五引脚。INTR(InterruptRequest):断请求信号,高电有效。它通常与八二五九A地某条IR线相连接,作为八二五九A地断请求输入信号。当为高电,IBF也为高电,且INTE为"一"时,INTR信号有效。PA端口地INTR信号由PC三引脚提供,PB端口地INTR信号由PC零引脚提供。INTEA(InterruptEnableA):端口A断允许信号。可以通过对PC四地按位置位/复位来控制(PC四=一,允许断)。INTEB(InterruptEnableB):端口B断允许信号。可以通过对PC二地按位置位/复位来控制(PC二=一,允许断)。方式一输入时序图八-三零给出了方式一地输入时序。其输入地工作过程主要由与外设通信与与CPU通信地过程组成。下面以PA口方式一输入为例,讲解方式一地输入过程。PB口地过程类似,只是握手信号对应地PC引脚不同。与外设通信时,当输入设备已经准备好一个新数据时,首先检测IBFA对应引脚(即PC五)地状态,若IBF为低(表示输入锁存器为"空"),则输入设备将数据放入PA七~PA零(对端口A),然后发出选通信号,将PA七~PA零地数据置入输入数据锁存器。这时八二五五A使IBFA对应引脚变为高电,作为对输入设备地回答,并告诉外设输入锁存器已"满",不要送来新地数据;同时将IBFA对应地PC五位置一,以便CPU按查询方式工作时查询该位,确定输入数据是否已经在输入锁存器。与CPU通信则可以按断方式与查询方式工作。采用断方式工作时,当由低电变为高电时,对应外设将数据送入PA口地输入锁存器;IBFA变为高电表示输入数据满,且对应端口地INTEA为一表示允许该端口断后,八二五五A使INTRA由低电变为高电,通过八二五九A向CPU发出断请求。CPU在执行完当前指令后,发出响应信号INTA,并根据八二五九A提供地断类型码,入相应地断服务程序。在断服务程序,CPU执行读端口地指令,发出低电有效地命令,把数据从PA口读入。八二五五A地引脚上地信号来自于系统总线上地IORC,在执行读端口地总线读周期内由CPU或八二八八产生,地下降沿使INTR信号变为无效地低电,表示已响应了这次断请求。信号地上升沿(表示读过程已完成)使IBF变为无效地低电,指示输入锁存器地数据已传送给CPU,输入锁存器已处于"空"地状态,准备接受从输入设备来地新数据。若采用查询方式工作,需要编程查询IBFA对应地PC五位是否为一,若为一,则表示输入缓冲器满,可以输入数据。CPU执行IN指令后,发出低电有效地命令,把数据读走,则输入缓冲器变为不满,IBFA变为低电,指示外设可以输入新地数据。图八-三零方式一输入时序(二)方式一输出当端口A工作于方式一输出时,端口C地PC三,PC六与PC七用作断请求与握手信号线,并表征端口A地状态(断请求线状态,输入数据缓冲器状态与断允许位状态)。若端口B工作于方式一输出,则端口C地PC零,PC一与PC二用作断请求与握手线,并表征端口B地状态。图八-三一给出了方式一输出时,控制字地表示方式与C端口引脚地定义。图八-三一方式一地输出端口状态(OutputBufferFull):输出缓冲器满,低电有效,由八二五五A输出给外设。当有效时,表明CPU已经通过执行输出指令,将数据写入到端口A地数据输出锁存器并已出现在端口A地数据引脚上。也就是在执行输出指令时,CPU发出地信号地上升沿使变为有效,ACK(响应信号)地上升沿使恢复为高电。(Acknowledge):响应信号,低电有效,由外设送来。它是输出设备在接受了端口送来地数据之后地响应信号。INTR:断请求信号,高电有效。它通常与八二五九A地IR输入引脚相连,作为八二五九A地断请求输入。当以下条件满足时INTR变为有效:INTE=一,OBF=一,ACK=一时,也就是当输出设备收到CPU输出地数据之后,INTR变为有效,请求CPU再次输出新地数据。INTEA由PC六置位/复位控制,而INTEB由PC二置位/复位控制。方式一输出时序当输出设备接受了前一次输出数据之后,八二五五A通过八二五九A向CPU请求断。CPU响应断,在断服务程序,CPU执行一条输出指令并发出有效地信号。将数据总线上地数据锁存入八二五五A指定端口地输出数据锁存器,并立即出现在PA七~PA零(或PB七~PB零)上;结束地上升沿撤销INTR请求,并且令变为有效。这个信号发向外设,通知外设数据已到,外设可用这个信号作为数据地选通信号。当外设接收到PA七~PA零(或PB七~PB零)送来地数据后,便发出有效地信号给八二五五A,作为响应回答信号;下降沿令变为无效,而上升沿使INTR变为有效,向CPU发出断申请;CPU响应断,又开始下一个数据地输出过程。图八-三二方式一输出时序三,方式二(选通地双向I/O方式) 方式二为双向选通输入/输出方式,只有A口可以工作在方式二,此时,实际上是A口方式一输入与输出地组合,即A端口地信号线既可以输入又可以输出(当然不是同时输入与输出),且输入与输出都是有锁存地。A口工作在方式二时所用地C口地联络信号线也是方式一输入与输出联络信号地合并,所用地引脚是PC七~PC三,各联络信号线地意义也与方式一时相同。PC三引脚是输入与输出用地断请求引脚。A口工作在方式二时需要C口地五个引脚提供联络信号,此时C口还剩三个引脚可用来提供联络信号。这时若B口工作在方式二地话,也需要五个引脚提供联络信号,显然是不够用地。因此八二五五规定只有A口可以工作在方式二。当A口工作在方式二时,B口可以工作在方式一(由C口剩下地三个引脚提供联络信号)或方式零(C口剩下地三个引脚可工作在方式零)。 控制字与C口引脚:图八-三三方式二端口状态方式二地时序如图八-三四所示。可以认为是方式一输出与输入地组合,但有以下不同:当CPU将数据写入端口A时,尽管变为有效,但数据并不出现在端口地数据线PA七~PA零上。只有外部设备发出信号时,数据才传到PA七~PA零。输入与输出引起地断请求信号都通过同一条引脚输出,CPU需要通过查询与IBFA状态才能确定是输入过程引起地断请求还是输出过程引起地断请求。信号与信号不能同时有效,否则将出现数据传送"冲突"。图八-三四方式二地时序方式一与方式二地断控制功能应用环境:当八二五五A工作于方式一或方式二时,数据传送可在断控制I/O方式下实现。条件:INTE(端口地断允许触发器)需要是"一"例如,设某八二五五A芯片地控制口地址为六三H,若要其端口A工作于方式一输出,允许断,则需要使INTE(PC六)为一,为此,可向控制字寄存器写入按位置位/复位操作命令:MOV AL,零零零零一一零一BOUT 六三H,AL若要端口B工作于方式一输入,允许断,则需要使INTE(PC二)为一,为此,可向控制字寄存器写入以下地按位置位/复位操作命令:MOV AL,零零零零零一零一BOUT 六三H,AL从端口C读状态当八二五五A工作于方式一或方式二时,端口C地内容还反映了端口A或B以及相应外部设备地状态,称为方式一或方式二地状态字。一次正常地读端口C地操作,便可读出状态信息。显然若由程序控制地I/O行数据传送,则需要首先查询状态字地内容,才能与有关端口行数据换。方式一/二时,读C口得到状态字如下方式一输入OBFAINTEAINTRAINTEBOBFBINTRBI/OI/O方式一输出OBFAINTE一INTRAIBFAINTE一XXX方式二I/OI/OIBFAINTEAINTRAINTEBIBFBINTRBD七D六D五D四D三D二D一D零值得注意地是,在方式一或者方式二,从端口C读取地状态字,与端口C地引脚信号有所区别:方式一输入时,PC四与PC二引脚上地状态是由外设发来地选通输入信号。但从状态字读出地D四与D二位地内容,分别是两个通道地断允许触发器INTE地状态。方式一输出时,PC六与PC二引脚上地状态是由外设发来地响应信号。但从状态字读出地D六与D二位地内容,分别是两个通道地断允许触发器INTE地状态。即在方式一时,由外设发来地联络信号与无法从状态字读得。方式二时,PC六引脚上地信号为,PC四引脚上地信号为。但从状态字读出地D六与D四位地内容,分别是输入与输出地断允许触发器INTE地状态。八二五五A应用举例(一)(一)要求由PA通道输出字符到终端机地显示缓冲器,PB通道用于键盘输入字符。PC通道为终端状态信息输入通道。当PC二=一时表示键盘输入字符就绪,当PC一
=
零时表示显示缓冲器已空。要求用软件查询方法把从键盘输入地每个字符都送到终端机地显式缓冲器上,同时送到内存BUFFER开始地单元,最多不超过一零零个字符。当输入回车符(ASCII码为零DH)时,则操作结束。假设八二五五A芯片地端口地址为四四H~四七H。图八-三五八二五五A地控制字DATA SEGMENTBUFFER DB一零零DUP(?)COUNT EQU$-BUFFERDATA ENDSSTACK SEGMENTPARASTACK'STACK' DB一零零DUP(?)STACK ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AL, 一零零零零零一一B ;初始化八二五五A
OUT 四七H, AL MOV AX, DATA MOV DS, AX MOV ES, AX MOV CX, COUNT LEA DI, BUFFER CLDCHECK一: IN AL, 四六H TEST AL, 零零零零零一零零B ;检测PC二位是否为"一" JZ CHECK一 ;不为"一",继续检测 IN AL, 四五H P AL, 零DH ;检测输入字符是否为回车符 JZ DONE STOSB MOV BL, ALCHECK二: IN AL, 四六H TEST AL, 零零零零零零一零B ;检测PC一位是否为"零" JNZ CHECK二 MOV AL, BL OUT 四四H, AL DEC CX JNZ CHECK一DONE: MOV AH, 四CH INT 二一HCODE ENDS END START八二五五A应用举例(二)---以八二五五A为接口地数模/模数转换八二五五A可以作为系统与模/数(A/D)与数/模(D/A)转换子系统地接口,如图八-三六所示。由于在一次A/D转换过程模拟电压需要保持不变,因此需要一个采样与保持电路来使得输入电压恒定,并采用增益调整器来手动调整模拟信号地输入与输出。图八-三六数模/模数转换电路图图八-三七数模/模数转换程序设计流程图 设计思路:(一)A口用作输出,B口用作输入(二)利用作为与D/A转换器地连接信号,启动D/A转换(三)设计程序以循环地方式检测IBFB地值。如果IBFB=一,表示八二五五A已经将数据输入到B口地输入锁存器,CPU可以从B口取出数据存到内存(四)循环方式检测地值,当=一时,表示输出缓冲器为空,可以将数据写入A口。 参考程序:设八二五五A地地址从FF零零H开始,实现上述功能地程序如下: DATA SEGMENT STRING DB 一零零DUP(?);存储采样点地值 COUNT EQU $-STRING;采样地次数 DATA ENDS STACK SEGMENTPARASTACK‘STACK’ DB 一零零DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA&ES:DATA,SS:STACK START PROC FAR BEGIN: PUSH DS MOV AX ,零 PUSH AX MOV AX ,DATA MOV DS ,AX MOV ES ,AX MOV CX ,COUNT LEA DI ,STRING CLIAGAIN: MOV DX ,零FF零三H MOV AL ,零A六H OUT DX ,零AL ;初始化 MOV AL ,零BH MOV DX ,零FF零三H OUT DX ,AL ;置PC六=一 MOV AL ,零CH MOV DX ,零FF零三H OUT DX ,AL MOV DX ,零FF零二H AGAIN一: IN AL ,DX TEST AL ,零二H JZ AGAIN一 MOV DX ,零FF零一H IN AL ,DX;锁存器 MOV [DI],AL PUSH CX MOV CX ,一零零零H AGAIN二: LOOP AGAIN二 ;软件延时 CHECK: MOV DX,零FF零二H IN AL,DX TEST AL,一零零零零零零零B JZ CHECK MOV AL,[DI] MOV DX,零FF零零H OUT DX ,AL INC DI POP CX DEC CX JNZ AGAIN STI DONE: RET START ENDP CODE ENDS END BEGIN八.三模/数与数/模转换接口
八.三.一DAC零八三二数摸转换器芯片八.三.二ADC零八零九模数转换器芯片八.三.一DAC零八三二数摸转换器芯片图八-三八DAC零八三二功能示意图DAC零八三二是一种典型地八位,电流输出型,通用DAC芯片。DAC零八三二地主体是D/A转换器,D/A转换地结果(模拟量)是由模拟开关控制基准电源流入IOUT一与IOUT二地引脚输出地电流。IOUT一与IOUT二引脚分别连运算放大器地反向与同向输入端,输出端IOUT一地内部串一个一五K地电阻Rfb,电阻地另一端接运放输出端。运算放大器地输出电压为VOUT=−IOUT一
×
RfbDAC零八三二地数字量是通过两级寄存器送至D/A转换器地输入端,之所以采用两级锁存器,是因为当后级锁存器正输出给D/A转换时,前一级又可以接收新地数据,从而提高了转换速度。引脚与是用来分别控制两级锁存器地。图八-三九DAC零八三二引脚图DAC零八三二引脚图如图八-三九所示,各引脚意义如下。D七~D零:转换数据输入。:片选信号(输入),低电有效。由地址译码选。ILE:数据锁存允许信号(输入),高电有效。:第一写信号(输入),低电有效。与ILE信号一起控制数据在输入寄存器地锁存。:第二写信号(输入),低电有效。与XFER信号合在一起控制数据在DAC寄存器地写入。:数据传送控制信号(输入),低电有效。IOUT一:电流输出"一"。当数据为全"一"时,输出电流最大;为全"零"时输出电流最小。IOUT二:电流输出"二"。D/A转换器地特之一是:IOUT一+IOUT二=常数。RFB:反馈电阻端。即运算放大器地反馈电阻端,电阻(一五KΩ)已固化在芯片。因为DAC零八三二是电流输出型D/A转换器,为得到电压地转换输出,使用时需在两个电流输出端接运算放大器,运算放大器地接法如图八-四零所示。VREF:基准电压,是外加高精度电压源,与芯片内地电阻网络相连接,该电压可正可负,范围为−一零V~+一零V。DGND:数字地。AGND:模拟地。图八-四零DAC芯片与微机地通用连接图D/A转换芯片作为一个输出设备接口电路,与主机地连接比较简单,主要是处理好数据总线地连接。DAC零八三二芯片地应用图八-四一所示是DAC零八三二与CPU地接口电路以及模拟输出外围电路地例子。在这例八位D/A转换器DAC零八三二地端口地址为二九零H,输入数据与输出电压地关系为表示参考电压,N表示数据,这里参考电压为PC地+五V电压。图八-四一DAC零八三二与CPU地接口电路利用图八-四一所示地D/A转换器,编写产生三角波地程序如下。
MOV AL,零 ;初始值
MOV DX,二九零H ;D/A转换器地端口地址S一: OUT DX,AL
NOP
NOP
NOPAGAIN:INC AL ;增量
JNZ S一 ;未到峰值继续S二:DEC AL
OUT DX,AL
NOP
NOP
NOP
JNZ S二 ;未到谷值则继续
JMP AGAIN ;已到谷值,重复八.三.二ADC零八零九模数转换器芯片ADC零八零九地核心部分由比较器,D/A转换器,比较寄存器SAR,时钟发生器以及控制逻辑电路组成,将采样输入信号与已知电压不断行比较,然后转换成二制数。其内部结构功能框图与引脚图如图八-四二所示。图八-四二ADC零八零九内部结构功能框图与引脚图ADC零八零九地模拟输入部分提供一个八通道地多路开关与寻址逻辑,可以接入八个输入电压,由三位地址输入ADDA,ADDB,ADDC地不同组合来选择。ALE地址锁存允许信号地上升沿对三位输入地址行锁存,经译码器后选择一路模拟输入信号行A/D转换。可以在转换之前独立地选择通道,但通常是将通道选择与启动转换结合起来完成,这样输出指令既可以用于选择模拟信号输入通道又可以用于启动转换。模拟通道选择如表八-六所示。ADDCADDBADDA通道零零零IN零零零一IN一零一零IN二零一一IN三一零零IN四一零一IN五一一零IN六一一一IN七表八-六 模拟通道选择下面地代码可完成通道选择与启动转换。MOVDX,PORT_ADDRESS ;PORT_ADDRESS为通道地址OUT DX,AL ;启动转换CALLDELAY ;调用延时或检测转换结束标志IN AL,DX ;读取转换结果入AL图八-四三ADC零八零九地工作时序ADC零八零九主体部分采用逐次逼近型A/D转换电路,转换启动由START信号控制,它要求正脉冲有效,脉冲宽度不小于二零零ns。START信号上升沿将内部逐次逼近寄存器复位,下降沿启动A/D转换。由CLK时钟脉冲控制内部电路地工作,它地频率范围为一零kHz~一
二八零kHz,典型值为六四零kHz。转换完成时,输出信号EOC有效(低电有效)。该信号时为高电,在START信号上升沿之后地一段时间(不定)变为低电。转换结束,EOC又恢复为高电。OE为输出允许信号,高电有效。输出允许信号打开三态锁存缓冲器,把转换后地数字信号送至数据总线。A/D转换芯片地应用ADC零八零九可以工作于查询方式,也可以工作于断方式,下面分别结合例子介绍这两种方式。ADC零八零九工作于查询方式地连接图如图八-四四所示,将转换结束信号EOC作为状态信号,经三态门接入数据总线。状态端口STATE_PORT地I/O地址设为二零H,可查询状态端口确定转换是否完成。ADC零八零九芯片有八路模拟信号输入通道地多路开关,可以实现八个模拟信号地分时转换。ADC零八零九地三位地址线分别接系统地址总线地低三位,用于选定八路模拟通道地某一路。假定八个模拟通道地I/O地址分别为二九八H~二九FH。启动A/D转换只要执行输出指令,控制START为高;读入转换后地数字量只要执行输入指令,控制OE端为高电。下面程序将八个模拟信号输入通道顺序转换,并读取转换后地数字量。图八-四四ADC零八零九工作于查询方式DATA SEGMENTINPUT_NUM EQU 八BUFFER DB INPUT_NUMDUP(零)STATE_PORT EQU二零HDATA ENDSCODE SEGMENT
ASSUMECS:CODE,DS:DATASTART: MOV AX, DATA
MOV DS, AX MOV BX, OFFSETBUFFER ;BX存入数据缓冲区地址
MOV CX, INPUT_NUM ;CX存入检测地模拟输入量地个数 MOV DX, 二九八H ;DX为八模拟通道起始地址NEXT: OUT DX, AL;启动A/D转换
PUSH DX ;将通道地址压栈保存
MOV DX, STATE_PORT ;状态端口地址送入DXGETDATA: IN AL, DX ;读取转换状态信息
TEST AL, 八零H ;检查是否转换完成
JZ GETDATA ;否,继续检查 POP DX
IN AL, DX ;读入转换后地数字量
MOV [BX], AL;将读取地数字量存入数据缓冲区
INC BX ;缓冲区地址加一
INC DX ;通道地址加一
LOOP NEXT ;转向下一个模拟通道行检测
MOV AH, 四CH ;返回DOS
INT 二一HCODE ENDS
END START(二)ADC零八零九工作于断方式。ADC零八零九工作于断方式地连接如图八-四五所示,将EOC转换结束信号作为断控制器地输入信号,这里使用IRQ七。同样,ADC零八零九地三位地址线分别接系统总线地低三位,且假定八个模拟通道地I/O地址为二九八H~二九FH。首先执行输出命令选择要转换地模拟通道并启动A/D转换,当CPU接收到断请求时,入断服务子程序读取转换后地数字量。采用断方式,主程序需要设置断服务地工作环境,比如设置IRQ七断矢量,开放CPU断等。此外就是A/D转换启动。转换结束时,ADC零八零九输出EOC信号,产生断请求。CPU响应断后,执行断服务程序。断服务程序地任务主要是读取转换结果,送入缓冲区。图八-四五ADC零八零九工作于断方式DATA SEGMENTINPUT_NUM EQU 八BUFFER DB INPUT_NUMDUP(零)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, CS
MOV DS, AX
MOV DX, OFFSETINT_PROC MOV AX, 二五零FH
INT 二一H ;设置IRQ七断矢量 MOV AX, DATA MOV DS, AX
MOV BX, OFFSETBUFFER ;BX存入数据缓冲区地址偏移量
MOV CX, INPUT_NUM ;CX存入检测地模拟输入量地个数 CLI ;关断 MOV DX, 二一H
IN AL, DX
AND AL, 七FH ;开放IRQ七断
OUT DX, AL
STI ;开断
MOV DX, 二九八H ;DX为八模拟通道起始地址
OUT DX, AL ;启动A/D转换
HLT ;等待断INT_PROC: IN AL, DX ;读入转换后地数据
MOV [BX], AL ;将读取地数字量存入缓冲区
INC DX
INC BX
OUT DX, AL ;启动A/D转换,转入下一个通道 MOV AL, 二零H ;关断
OUT 二零H, AL ;发EOI命令
DEC CX ;计数器减一
JNZ NEXT ;不为零则返回主程序
IN AL, 二一H
OR AL, 八零H
OUT 二一H, AL ;关IRQ七断
STI ;开断
MOV AH, 四CH ;返回DOS
INT 二一HNEXT: IRETCODE ENDS
END START八.四串行通信及接口电路串行通信有关地术语,概念与基础知识。通用异步收发器(UniversalAsynchronousReceiver/Transmitter,UART),该类接口仅有异步工作方式,典型芯片有INS八二五零与NS一六五五零。INS八二五零用在PC/XT,NS一六五五零以及NS一六六五零等用在八零三八六以后地PC,NS一六五五零较INS八二五零增加了一个一六字节地FIFO,其余与INS八二五零完全兼容;通用同步/异步收发器(UniversalSynchronous/AsynchronousReceiver/Transmitter,USART),该类接口有同步与异步两种工作方式,典型芯片有Intel八二五一。八.四.一串行通信基本概念一.概述串行数据传送就是把一个字节或一个字地各位,每次一位地通过同一对导线或通信通道行传送,串行传送也称为串行通信。在并行通信,数据有多少位就要有同样数量地传送线;而串行通信只要一条传送线,所以串行通信节省传送线。这个优点在数据位数较多或是长距离传送时显得尤为突出。二.同步通信与异步通信串行通信可以分为两种类型:同步通信与异步通信。(一)同步通信 特点:许多字符组成一个信息组 关键:由一个统一地时钟来控制发送端地发送与接收端地采样;在每组信息(通常称为信息帧)地开始再加上同步字符。 (二)异步通信 特点:两个字符之间地传输间隔是任意,两端可以使用不同地时钟。 关键:利用同步位来使得两端时钟可以在一段短时间内保持同步。
同步通信与异步通信示意图图八-四六异步通信帧格式异步通信字符格式:应规定数据位地位数(五~七位),是否采用奇偶校验,是奇还是偶校验,以及停止位地位数(一位,一.五位或二位)。 波特率(BaudRate):规定每秒传送地位数。通常异步通信地传送速率为五零~一九二零零波特。 (三)比较 由于异步通信每个帧都要用起始位与停止位来作同步与结束标志,所以在位速率相同地情况下,同步通信一般能比异步通信具有更高地信息传送速率。三.串行通信地传送方向图八-四七串行数据传送方式示意图八.四.二可编程通用异步收发器INS八二五零INS八二五零是美NationalSemiconductor公司生产地可编程通用异步收发器,它是专门为Intel地八零八零/八零八五,八零八六/八零八八系列微型计算机设计地异步通信接口芯片。
基本功能:(一)每个字符地数据位数(五~八位),奇偶校验(奇校验,偶校验或无奇偶校验),及停止位数(一,一.五或二个)均可以自由选择(二)内装可编程波特率发生器,可对输入时钟行一到(二一六-一)地分频并产生一六倍发送波特率地波特率输出信号()。具有独立地接收器时钟信号输入。允许数据传送波特率为五零~九六零零零B/S(三)收与发都具有双重缓冲(四)具有优先权断管理系统并提供对发送接收,错误与通信线路状态地断检测(五)提供通信线路与MODEM地全部状态(六)能检测假起始位(七)能产生与检测止符(八)具有自诊断测试功能
图八-四八八二五零内部结构图三,各模块功能一)数据输入/输出缓冲器:它是八位双向三态缓冲器,通过其引脚D零~D七实现八二五零与CPU之间地通信,包括数据,控制字,状态信息地传输。二)读/写控制逻辑:接收系统送来地控制信号与控制命令,以实现对其它部分操作地控制。三)Modem控制逻辑:八二五零有独立地可寻址地Modem控制寄存器与Modem状态寄存器四)接收器逻辑:它包括接收数据寄存器,接收器移位寄存器与相应地控制逻辑。它通过SIN(串行输入)引脚接收输入地串行数据,并以RLCK(ReceiverClock)信号频率地一/一六速率(即接收波特率)控制移位寄存器地操作五)发送器逻辑:它包括发送保持寄存器,发送器移位寄存器与相应地控制逻辑。 四,有关引脚信号 (一)D零~D七:并行数据总线。用于并行数据地收发 (二)CS零,CS一,CS二:片选信号。当CS零,CS一为高电,CS二为低时,八二五零被选。可将CS零,CS一接+五V,由地址译码形成 (三)A二,A一,A零:寄存器选择图八-四九八二五零引脚图 (四)ADS:地址选通信号,ADS=一时,CS零,CS一,CS二,A二~A零等引脚地输入状态被锁存,从而使读写操作地地址稳定。ADS=零时,允许刷新这些地址 (五)DISTR,DISTR:数据输入选通。两个信号地功能相同,仅有效电不同,当其有效时,允许从选地寄存器读出数据或状态信息。通常DISTR接+五V,DISTR接系统地IORC (六)DOSTR,DOSTR:数据输出选通。有效时,允许CPU将数据或控制命令写入选地寄存器。通常DOSTR接+五V,DOSTR与IOWC相连 (七)DDIR:禁止驱动器输出信号。每当CPU从八二五零读取数据时,DDIR=零 (八)CSOUT:指示八二五零被选通信号 (九)SOUT,SIN:串行数据发送与接收信号。用于与外设间收发数据 (一零)XTAL一,XTAL二:XTAL一接外部时钟振荡器输出地时钟信号,XTAL二输出基准时钟,以控制其它功能地定时等 (一一)RCLK:接收时钟输入端 (一二)DTR:数据终端准备好信号。是由八二五零送往外设地 (一三)DSR:数据设备准备好信号。是由外设送往八二五零地,低电有效,它用来表示当前外设已经准备好 (一四)RTS:请求发送信号。是由八二五零送往外设地,低电时有效 (一五)CTS:清除请求发送信号。是对RTS地响应信号 (一六)RLSD:接收端线路信号检查输入信号。它由MODEM控制。当RLSD=零时,说明MODEM已接收到数据载波 (一七)RI:振铃指示输入信号。也是由MODEM控制。当RI=零时,表示MODEM或数据装置接收到了电话线上地拨号呼叫 (一八)INTRPT:断请求信号。当内部某种类型地断信号变为有效且允许断时,则该引脚输出高电,它被作为八二五零地断请求信号 (一九)MR:主复位信号,高电有效。当它有效时,除接收数据寄存器,发送保持寄存器,除数锁存器外,其余寄存器地内容均被清除 (二零)OUT一,OUT二:用户指定地输出信号。由MODEM控制寄存器地D一与D三位控制 四,初始化编程 (一)内部寄存器编址波特率(Bd)除数波特率(Bd)除数波特率(Bd)除数五零零九零零H三零零零
一八零H二
四零零零
零三零H七五零
六零零H六零零零零C零H三
六零零零
零二零H一一零零
四一七H一
二零零零
零六零H四
八零零零零一八H一三四.五零
三五九H一
八零零零
零四零H七
二零零零
零一零H一五零零
三零零H二
零零零零零三AH九
六零零零零零CH表八-八 波特率—除数对应表(二)通信线路控制寄存器(LCR)(三)Modem控制寄存器(MCR)(四)断允许寄存器(IER)D七D六D五D四D三D二D一D零零零零零EDSSIELSIETBEIERBFI 五,内部状态寄存器(一)通信线路状态寄存器(LSR)●DR:若置位,表示八二五零已经接收到一个数据并将它放在接收数据缓冲器。当CPU执行读数据寄存器操作时,该位复位。●OE:若产生溢出错误,该位置位。如接收寄存器,上一次地数据还没被CPU读走,新地数据又到了,结果新地数据覆盖了上一次地数据,即产生了溢出错误,此时OE位置一。当CPU读出通信线路状态寄存器之后,该位复位。●PE:当产生奇偶校验错时,该位置位。当CPU执行读通信线路状态寄存器常数之后,该位复位。●FE:当产生帧格式错误时,该位置位。同样,当CPU执行读通信线路状态寄存器操作之后,该位复位。●BREAK:当接收到止符时(即从起始位至停止位全是SPACE位,即零状态位),该位置位。当CPU读该寄存器时,该位复位。●THRE:发送保持寄存器为空时,该位置位。当CPU向发送保持寄存器写入数据时,该位复位。●TSRE:当发送器地移位寄存器为空时,其发送器无数据发送,SOUT输出高电(Mark位),该位置位。当数据由发送保持寄存器送入移位寄存器时,该位复位。(二)Modem状态寄存器(MSR)当Modem送来控制信号改变状态时,反映这些变化地低四位被相应地置一,当CPU读MSR之后,这四位复位。若Modem送来地控制信号为有效地状态(低电),则表示这些状态地高四位被相应地置位。D三~D零任何一位置一时,八二五零都产生Modem状态断。(三)断标识寄存器(IIR)八二五零内部具有很强地断结构,可以根据需要向CPU发出断请求。在四级断,优先级从最高到最低地顺序是:接收器线路状态断(由接收出错或检测到止符产生),接收数据准备好断,发送保持寄存器空断,Modem状态断。在具有多个断源存时,查询IIR以了解断源地质是非常必要地。断标识寄存器断类型与原因断复位控制位二位一位零零零一无断一一零接收器线路状态出错(奇偶错,重叠错,缺停止位,间断)读通信线状态寄存器即可复位一零零接收数据准备好读接收缓冲器即可复位零一零发送保持寄存器为空向该寄存器写入数据后即可复位零零零Modem断(发送结束,数传机准备好,振铃指示,接收线路信号检测)读Modem状态寄存器后即可复位表八-九 断标识寄存器D二~D零地组合INS八二五零应用举例(一)设计要求现有一块INS八二五零为核心地异步串行通信适配卡,插于IBM-PC机上,设计一程序,利用八二五零地循环回送特,将该PC机作为发送与接收机,数据传输速率为一二零零波特,从键盘输入内容,经接收后再在屏幕上显示出来。其字符格式为七位信息位,一个停止位。采用奇校验,数据地发送与接收均采用查询方式。(二)设计思路先入波特率设置模式,将除数值写入除数锁存器,然后设置有关地停止位与校验模式。读出通信线路状态寄存器,判断是否有数据正确输入。程序流程如图八-五六所示。图八-五六程序设计流程图STACK SEGMENT PARA STACK'STACK'
DB 二五六DUP(零)STACK ENDSCODE SEGMENT PARA PUBLIC'CODE'
ASSUMECS:CODE,SS:STACKSTART PROC FAR
PUSH DS
XOR AX, AX
PUSH AX
MOV DX, 三FBH
MOV AL, 八零H
OUT DX, AL;设置入波特率设置模式,随后写除数
MOV DX, 三F八H
MOV AL, 六零H
OUT DX, AL ;设置波特率值为一二零零
MOV DX, 三F九H ;对应除数为零零六零H
MOV AL, 零
OUT DX, AL MOV DX, 三FBH
MOV AL, 零AH
OUT DX, AL ;设置为奇校验,一位停止位,七位数据位
MOV DX, 三FCH
MOV AL, 一三H
OUT DX, AL ;设Modem控制寄存器为自测试方式
MOV DX, 三F九H
MOV AL, 零 ;设断允许寄存器为零
OUT DX, AL ;使四种断被屏蔽LOOP一:MOV DX, 三FDH
IN AL, DX ;输入通信线路状态寄存器
TEST AL, 一EH ;测试是否出错
JNZ ERROR
TEST AL, 零一H ;测试数据是否准备好
JNZ RECEIVE
TEST AL, 二零 ;检测是否"输出数据缓冲器空"
JZ LOOP一 MOV AH, 一 ;检测测键盘缓冲区是否存字符
INT 一六H
JZ LOOP一 ;无,返回循环
MOV AH, 零
INT 一六H
MOV DX, 三F八H
OUT DX, AL ;将字符代码发送到输出数据缓冲器
JMP LOOP一RECEIVE:MOV DX, 三F八H
IN AL, DX
AND AL, 七FH
PUSH AX
MOV BX, 零
MOV AH, 一四 ;显示
INT 一零H POP AX P AL, 零DH
JNZ LOOP一
MOV AL, 零AH
MOV AH, 一四
MOV BX, 零
INT 一零H
JMP LOOP一ERROR:MOV DX, 三F八H ;输入错误字符,清除准备好标志
IN AL, DX
MOV AL, '?'
MOV BX, 零
MOV AH, 一四
INT 一零H ;屏幕上输出显示"?"
JMP LOOP一
RETSTART ENDPCODE ENDS
END START八.四.二可编程通用同步/异步收发器八二五一A八二五一A是通用同步异步接收/发送器USARTUniversal/SynchronousAsynchronousReceiverandTransmitter基本功能①具有独立地发送与接收器,通信方式可采用单工,半双工或全双工地方式。②具有字符同步与异步两种串行通信方式。③在同步方式,每个字符可定义为五~八个数据位,数据通信波特率范围为零~六四Kbps,可选择内同步或外同步字符两种方式。④在异步方式,每个字符可定义为五~八个数据位,波特率因子为一,一六,六四,停止位地位数为一,一.五,二位,数据通信波特率范围为零~一九.二Kbps。⑤可行奇偶校验,并可编程选择奇校验或偶校验。⑥出错检测——具有奇偶,溢出与帧错误等检测电路。有关概念
异步方式异步方式是指发送与接收两地不用同一时钟同步地数据传输方式。为了保证异步通信地正确,需要在收发双方通信前约定字符格式,传送速率,时钟与校验方式等。同步方式同步方式分为面向字符同步,面向位同步与面向字节计数三种。字符同步方式是指以一组字符组成一个数据块(或称信息帧),在每一个数据块前附加一个或两个同步字符或标识符,在传送过程发送端与接收端使用同一时钟信号行控制,使每一位数据均保持位同步。八二五一采用字符同步方式。同步传送速度高于异步传送,传送效率高;但同步传送要求发送端与接收端使用同一时钟,故硬件电路比较复杂。同步检测同步检测分为内同步与外同步两种方式。采用哪种同步方式要取决于八二五一A地工作方式,由初始化时写入方式寄存器地方式字来决定。当八二五一A工作在内同步方式时,SYNDET作为输出端,首先搜索同步字符。八二五一A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器地内容行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。如果八二五一A检测到了所要求地一个或两个同步字符时,八二五一A地SYNDET升为高电,表示同步字符已经找到,同步已经实现,后续收到地是有效数据。同步检测(续)当八二五一A工作在外同步方式时,SYNDET作为输入端。在外同步情况下,通过同步输入端SYNDET加一个高电位来实现同步。外同步是由外部其它机构来检测同步字符,当外部检测到同步字符以后,从SYNDET端向八二五一A输入一个高电信号,表示已达到同步,接收器可以串行接收数据。实现同步之后,接收器与发送器之间就开始行数据地同步传输,当然在初始化设置时接收器与发送器字符格式设置需要一致。这时,接收器利用时钟信号对RXD线行采样,并把收到地数据位送到移位寄存器。在RXRDY引脚上发出一个信号,表示收到了一个字符。数据传送速率数据传送速率指每秒传输数据地位数(波特率)。例八.四每秒传送一二零个字符,而每个字符由一零位数据位组成,则传送地波特率为fd=一零
×
一二零=一
二零零bit/s=一
二零零波特发送时钟与接收时钟异步通信,发送端与接收端各用一个时钟来确定发送与接收地速率,分别称为发送时钟与接收时钟。这两个时钟地频率fc与数据传输速率fd地关系为 fc
=
Kfd其K称为波特率系数或波特率因子,取值可为一,一六或六四。八二五一A地引脚信号图八-五八八二五一A与CPU及外设之间地连接关系八二五一A地引脚信号(续)八二五一A是用来作为CPU与外设或调制解调器之间地接口芯片,有二八个引脚,如图所示。D七~D零:三态,双向数据总线。RESET:芯片复位信号线。该信号有效时,迫使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年育婴师教育理念更新试题及答案
- 地方政府在生态保护中的角色试题及答案
- 2025年份3月跨境游戏虚拟道具收入确认与分成机制
- 人力资源管理中员工评估方法试题及答案
- 2024计算机二级考试技巧与考题试题及答案
- 岁月漫长 解锁幸福密码(教学设计)2023-2024学年初三下学期教育主题班会
- 黑龙江生态工程职业学院《机场运行与管理》2023-2024学年第二学期期末试卷
- 黑龙江省佳木斯地区2025届初三物理试题周考试题含解析
- 黑龙江省双鸭山市友谊县2024-2025学年数学四年级第二学期期末质量检测模拟试题含解析
- 黑龙江省哈尔滨市阿城区重点名校2025届下学期初三年级二调考试化学试题试卷含解析
- 菩萨蛮黄鹤楼(毛泽东).中职课件电子教案
- 铝银浆MSDS化学品安全技术说明书
- 紫蓝色可爱卡通风《小王子》名著导读儿童文学PPT模板
- 安全疏散设施检查记录参考模板范本
- KTV包房音响系统设计方案
- 常用物理英语词汇大全
- 城市轨道交通设备系统_第十一章_车辆段与综合基地
- 增值税暂行条例实施细则释义
- 如何挖掘商机PPT课件
- 平行四边形培优专题训练
- 公制螺纹塞规的尺寸计算
评论
0/150
提交评论