




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章常用接口芯片
1【任务驱动】
理解并掌握并行和串行通信的概念。
掌握并行接口8255A的主要功能、工作方式和初始化编程方法。
掌握定时/计数器8253的主要功能、工作方式和初始化编程方法。
理解D/A及A/D转换器接口方法。
理解8251初始化编程方法。
【重点难点】
可编程并行接口8255A的结构、工作方式的设定及应用。
可编程定时/计数器8253的结构、工作方式的设定及应用。
可编程串行通信接口8251的结构、工作方式的设定及应用。
D/A及A/D转换器接口的结构、工作方式的设定及应用。
28.1可编程并行接口芯片8255A8.2可编程串行接口芯片8251A8.3可编程定时/计数器8253A8.4D/A与A/D转换器
38.1可编程并行接口芯片8255A
8.1.1并行通信的概念
并行通信就是把一个字符的各位用几条线同时进行传输。即将组成数据的各位同时进行传送,每次传送8位、16位或32位数据。例如,同时输入或输出01101010数据信息,至少需要8条电缆线,如图8.1所示。图8.1并行传送示意图4
并行通信的主要特点是信息传输速度快、信息率高,这种特点是多用通信电缆换取的,随着通信距离的增加,电缆的开销就会成为突出问题,所以并行通信总是用于数据传输率要求较高、而传输距离较短的场合。
目前,对于并行通信还没标准化。数据的宽度可以是1~64位或者更宽,但通常使用8位宽度,一次传输一个字符。对于并行传输的方式也没有严格的定义,如果CPU用一个时序信号来管理接口和设备的动作,那么这种并行传输应看成是同步传输;如果CPU和接口及设备之间使用应答信号进行传输,那么这种并行传输应看成是异步传输。
5
实现并行通信的接口就是并行接口。并行接口为外部设备提供了能使信息并行传送的输入输出端口,广泛应用于微机内部各部件之间以及主机与外部设备之间的信息交换。并行接口的“并行”含意不是指接口与系统总线一侧的并行数据而言(因为这是固定的),而是指接口与I/O设备或控制对象一侧的并行数据线。
实现并行通信的接口就是并行接口。并行接口为外部设备提供了能使信息并行传送的输入输出端口,广泛应用于微机内部各部件之间以及主机与外部设备之间的信息交换。并行接口的“并行”含意不是指接口与系统总线一侧的并行数据而言(因为这是固定的),而是指接口与I/O设备或控制对象一侧的并行数据线。
6
8.1.28255外部引脚及内部结构
8255A是为Intel公司的微处理器配套的通用可编程并行接口芯片,其基本功能如下:
(1)8255A接口芯片有3个8位并行输入/输出端口,可利用编程方法设置3个端口是作为输入端口还是作为输出端口;
(2)8255A能适应CPU与I/O接口之间的多种数据传送方式的要求。如无条件传送,查询方式传送,中断方式传送。与此相应,8255A设置了方式0、方式1以及方式2三种工作方式。
(3)8255A的C口比较特殊,除作数据口外,在工作方式1和2下,它的部分信号线还被分配作专用的联络应答信号,配合A口和B口的工作。
78255A的内部结构和引脚图分别如图8.2所示。图8.28255A的内部结构和芯片引脚信号8由图可见,8255A包括四个部分:数据总线缓冲器、读写控制逻辑、A组控制器和B组控制器、端口A、B、C。
1.并行输入/输出端口A、B、C
8255A芯片具有24个可编程输入输出引脚,分成3个8位端口。这三个端口可与外部设备相连接,可用来与外设进行数据信息、控制信息和状态信息的交换。
其中:端口A包含一个8位数据输出锁存/缓冲寄存器和一个8位数据输入锁存器;端口B包含一个8位数据输入/输出、锁存/缓冲寄存器和一个8位数据输入缓冲寄存器;端口C包含一个输出锁存/缓冲寄存器和一个输入缓冲寄存器。必要时端口C可分成两个4位端口,分别与端口A与端口B配合工作。通常将端口A和端口B定义为输入/输出的数据端口,而端口C可作为状态或控制信息的传送端口,配合端口A和端口B工作
PA7~PA0:A端口数据信号引脚;
PB7~PB0:B端口数据信号引脚;
PC7~PC0:C端口数据信号引脚。
92.A组和B组控制部件
端口A与端口C的高4位(PC7~PC4)构成A组,由A组控制部件实现控制功能,端口B与端口C的低4位(PC3~PC0)构成B组,由B组控制部件实现控制功能。它们各有一个控制单元,可接收来自读/写控制部件的命令和CPU通过数据总线(D7~D0)送来的控制字,并根据它们来定义各个端口的操作方式。
3.数据总线缓冲器
这是一个三态双向8位数据缓冲器,它是8255A与8086CPU之间的数据接口,它与CPU系统数据总线相连,是8255A与CPU之间传输数据的必经之路。CPU输入输出的数据,CPU输出的控制字以及外设的状态信息都是通过这个缓冲器进行传送。
D7~D0:8255A的8位数据线,和CPU系统数据总线相连。
104.读/写控制部件
读/写控制部件接收来自CPU地址总线的信号和控制信号,并发出命令到两个控制组(A组和B组),把CPU发出的控制命令字或输出的数据通过数据总线缓冲器送到相应的端口,或者把外设的状态或输入的数据从相应的端口通过数据总线缓冲器送到CPU。
可接收的控制信号如下:
(1):片选信号。由CPU输入,有效,表示该8255A被选中。
(2),:读、写控制信号。由CPU输入,有效,表示CPU读8255A,应由8255A向CPU传送数据或状态信息。有效,表示CPU写8255A,应由CPU将控制字或数据写入8255A。
(3)RESET:复位信号。RESET有效时,清除8255A中所有控制字寄存器内容,并将各端口置成输入方式。
(4)A1、A0:端口选择信号。
当A1A0=00,选择端口A;
当A1A0=01,选择端口B;
当A1A0=10,选择端口C;
当A1A0=11,选择控制字寄存器。
由端口地址A1A0和相应控制信号组合起来可定义各端口的操作方式如表8.1所示。
11
8255A接口芯片的地址译码电路设计需考虑的问题是:对于8086系统,由于采用16位数据总线,CPU在进行数据传送时,总是将低8位数据送往偶地址端口,而将高8位数据送往奇地址端口;反过来,从偶地址端口取得数据总是通过低8位数据线传送到CPU,从奇地址端口取得数据总是通过高8位数据线传送到CPU。
8255A接口芯片是8位并行接口芯片,一般8255A的D7~D0数据线接到系统总线的低8位,这就要求8255A端口地址的设置为偶地址,才能接收到CPU对8255A的访问信号。又由于8255A芯片的端口有A口、B口、C口和控制口,端口地址数需要4个,且要满足8255A的A1、A0分别为00、01、10、11的要求。因此,对于8086系统,将8255A的A1引脚和地址总线的A2线相连,A0引脚和地址总线的A1线相连,将地址线的A0设置为0,这既保证了CPU能发出4个连续偶地址,又保证了8255A四个端口地址的要求。
12
假设地址值分别为04A0H,04A2H,04A4H,04A6H,对8255A寻址电路的设计如图8.3所示。
对于8088系统,其数据总线只有8位,8255A的D7~D0数据线可直接连到系统总线的8位数据线上,因此地址线中将8255A的A1引脚和地址总线的A1线相连,A0引脚和地址总线的A0线相连即可,这样8.88CPU能发出4个连续地址,如04A0H~04A3H。
13图8.38255A寻址电路设计14
8.1.38255A的控制字和工作方式
1.8255A的控制字
8255A是可编程接口芯片。可编程就是用指令的方法先对芯片进行初始化,决定芯片的端口是处于输入数据状态还是处于输出数据状态,以及每个端口的工作方式。工作方式和工作状态的建立是通过向8255A的控制口写入相应的控制字完成的。
8255A的控制字包括工作方式控制字和C口的按位置位/复位操作控制字。用户通过设置控制字来定义3个端口的工作方式,它们共用同一个端口地址。
15(1)工作方式控制字:
格式如图8.4所示。工作方式控制字用来设定A口、B口和C口的数据传送方向和工作方式。工作方式分别是方式0、方式1和方式2。A口可工作在三种方式中的任何一种方式下,B口只能工作在前两种工作方式下,C口只能工作在方式0下。
通过定义工作方式控制字可将3个端口定义为各种不同方式的组合。
图8.48255A工作方式控制字格式16(2)置位/复位控制字:
只对端口C有效。端口C的任一位,可用这个控制字来置位或复位,置位是使该位为1,复位是使该位为0,而其他位不变,使用格式如图8.5所示。使用8255A芯片前,必须先对其进行初始化。初始化的程序很简单,只要CPU执行一条输出指令,把控制字写入控制寄存器就可以了。
图8.58255A置位/复位控制字格式17[例8.1]按下述要求对8255A进行初始化。
要求A口设定为输出数据,工作方式为方式0;B口设定为输入数据,工作方式为方式1;C口设定为高四位输入,低四位输出。(假设地址为04A0H~04A6H)
初始化指令如下:
MOVDX,04A6H;控制口地址送DX
MOVAL,8EH;写工作方式控制字
OUTDX,AL;控制字送到控制口
182.8255A的工作方式
8255A各端口共有3种基本工作方式:
方式0——基本输入/输出方式;
方式1——选通输入/输出方式;
方式2——双向传送方式。
端口A可处于3种工作方式(方式0,方式1或方式2),端口B只可处于两种方式(方式0或方式1),端口C常常被分成高4位和低4位两部分,可分别用来传送数据或控制信息。
19(1)工作方式0:
这是8255A中各端口的基本输入/输出方式。它只完成简单的并行输入/输出操作,CPU可从指定端口输入信息,也可向指定端口输出信息。如果3个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合,如表8.2所示。
方式0中,端口C被分成两个4位端口,它们可被定义为输入或输出端口,CPU与3个端口之间交换数据可直接由CPU执行IN和OUT指令来完成。传送数据的方法一般采用无条件传送方式或查询传送方式。
表8.2方式0的工作状态组合:20
21[例8.2]假定8255A的端口A、B都工作在方式0下,端口A作为输入口,采集一组开关的状态,端口B作为输出口,把开关的状态通过指示灯显示。电路连接如图8.6所示。
(假设地址为04A0H~04A6H)
图8.622MOVDX,04A6H;控制口地址送DX
MOVAL,90H;写工作方式控制字
OUTDX,AL
MOVDX,04A0H;A端口地址送DX
INAL,DX;采集开关值
MOVDX,04A2H;B端口地址送DX
OUTDX,AL;输出开关值
当采用查询方式传送数据时,利用端口C的高4位和低4位能分别作为输入或输出的特点,配合端口A和端口B进行输入数据和输出数据的操作,即A口和B口传送数据。
23(2)工作方式1:
被称作选通输入/输出方式,在这种工作方式下,数据输入/输出操作要在选通信号控制下完成,端口A和端口B为数据传输口,可通过工作方式控制字设定为数据输入或数据输出,端口C某些位作为控制位,配合A口和B口进行数据的输入和输出。方式1通常用于查询方式或中断方式传送数据。图8.7工作方式1输入控制字格式24C口某些位作为控制位时,根据输入和输出工作状态不同,
各位所代表的意义不同,现分为输入和输出两种情况进行介绍。
采用工作方式1进行输入操作时,需要使用的控制信号如下:
——选通信号。由外设输入,低电平有效。
IBF——输入缓冲存储器满信号。向外设输出,高电平有效。
INTR——中断请求信号,高电平有效。
INTE——中断允许信号25
显然,8255A中的端口A和端口B均可工作于方式1输入模式,其工作方式控制字格式如图8.7所示,端口状态如图8.8所示。
从图8.8可看出,当端口A和端口B同时被定义为工作方式1完成输入操作时,端口C的PC5~PC0被用作控制信号,只有PC7和PC6位可完成数据输入或输出操作,因此可构成两种组合状态:它们是端口A,B输入,PC7,PC6同时输入和端口A,B输入,PC7,PC6同时输出。
(a)端口A方式1输入
(b)端口B方式1输入图8.8方式1输入端口状态26
采用工作方式1也可完成输出操作,这时需要使用的控制信号如下:
——输出缓冲存储器满信号。向外设输出,低电平有效。
——外设应答信号。由外设输入,低电平有效。
INTR——中断请求信号。高电平有效。
INTE——中断允许信号。27图8.9方式1输出控制字格式
(a)端口A方式1输出(b)端口B方式1输出图8.10方式1输出端口状态28如果将8255A中的端口A和端口B均定义为工作方式1输出模式,那么工作方式控制字的具体格式如图8.9所示,经这样定义的端口状态如图8.10所示。
从图8.10中可看出,当端口A和端口B同时被定义为工作方式1完成输出操作时,端口C的PC6,7和PC3~PC0被用作控制信号,只有PC4,5两位可完成数据输入或输出操作。因此可构成两种组合状态:①端口A,B输出,PC4,5同时输入;②端口A,B输出,PC4,5同时输出。
【思考】采用工作方式1时,还允许将端口A和端口B分别定义为输入和输出端口,如将端口A定义为方式1输入端口,而将端口B定义为方式1输出端口等等。具体情况,请自行分析。
29
(3)工作方式2
被称作带选通的双向传送方式。8255A中只允许端口A处于工作方式2,可用来连接双向I/O设备或用于在两台处理机之间实现双向并行通信等。其有关的控制信号由端口C提供,并可向CPU发出中断请求信号。
图8.11端口A工作在方式2的端口状态
30端口A工作于方式2的端口状态如图8.11所示。由图可看出,端口A工作于方式2所需要的5个控制信号分别由端口C的PC7~PC3来提供。如果端口B工作于方式0,那么PC2~PC0可用作数据输入/输出;如果端口B工作于方式1,那么PC2~PC0用来作端口B的控制信号(图8.10中未示出)。
端口A工作于方式2所需控制信号如下:
①——输出缓冲器满信号。向外设输出,低电平有效。
②——应答信号。由外设输入,低电平有效。
③——数据选通信号。由外设输入,低电平有效。
④IBFA——输入缓冲器满信号。向外设输出,高电平有效。
⑤INTRA——中断请求信号,高电平有效。
⑥INTE1——中断允许信号。
⑦INTE2——中断允许信号。
31
8255A中端口A工作方式2时,允许端口B工作于方式0或方式1,完成输入/输出功能。4种组合状态及其工作方式控制字格式如表8.3。
328.1.48255A的应用实例
1.8255A与打印机接口
(1)用方式0与打印机接口
目前打印机一般采用并行接口Centronics标准,其主要信号与传送时序如图8.12。打印机接收主机传送数据的过程是这样的:当主机准备好输出打印的一个数据时,通过8255A把数据送给打印机接口的数据引脚DATA0~DATA7,同时送出一个数据选通信号给打印机。打印机收到该信号后,把数据锁存到内部缓冲区,同时在BUSY信号线上发出忙信号。待打印机处理好输入数据时,打印机撤消忙信号,同时向主机送出一个响应信号。主机根据BUSY信号或信号决定是否输出下一个数据。33
本例中,CPU与8255A采用查询方式输出数据。端口A设置为方式0,输出打印数据,端口C的PC7产生负脉冲选通信号,PC2连接打印机的BUSY信号查询其状态,PC0连接打印机的信号。
假设8255A的A、B、C口的I/O地址为FFF8H、FFFAH和FFFCH,控制端口地址为FFFEH。
初始化程序段如下:
MOVDX,0FFFEH
MOVAL,81H;A口方式0输出,C口上半部输出,下半部输入
OUTDX,AL;输出工作方式字
MOVAL,0FH;C口的置位/复位控制字,使PC7=1,即置=1
OUTDX,AL;输出打印数据子程序,打印数据在AH中
PUSHAX
PUSHDX
34PM:MOVDX,0FFFCH
INAL,DX;查询PC2
ANDAL,04H;BUSY=0?
JNZPM;忙,则等待,D2=1表示忙
MOVDX,0FFF8H;不忙,则输出数据
MOVAL,AH
OUTDX,AL
MOVDX,0FFFEH
MOVAL,0EH;使PC7=0,即置=0
OUTDX,AL
NOP;适当延时,产生一定宽度的低电平
NOP
MOVAL,0FH;使PC7=1,置=1
OUTDX,AL
POPDX
POPAX
RET
35(2)用方式1与打印机接口
8255A的端口A工作于选通输出方式,PC7作为输出信号,PC6作为A输入信号,而PC3作为INTRA输出信号;另外,可用程序控制INTEA(PC6),决定是否采用中断方式。打印机接口的时序与8255A的选通输出方式的时序类似,但略有差别,用单稳电路74LS123即可满足双方的时序要求,见图8.13。
假设8255A的A、B、C口的I/O地址为FFF8H、FFFAH和FFFCH。控制端口的地址为FFFEH。以下为采用选通方式输出缓冲区BUF中的打印字符的子程序,输出的字节数为M。
PRINTPROC
PUSHAX;保护寄存器
PUSHBX
PUSHCX
PUSHDX
MOVDX,0FFFEH;设定A口为选通输出方式
MOVAL,0A0H
OUTDX,AL
MOVAL,0CH;使INTEA(PC6)为0,禁止中断
OUTDX,AL
MOVCX,M;打印字节数送CX
MOVBX,OFFSETBUF;取缓冲区首址送BX
36PRINT1:MOVAL,[BX];取一个数据
MOVDX,0FFF8H
OUTDX,AL;从A口输出
MOVDX,0FFFCH
PRINT2:INAL,DX;读C口
TESTAL,80H;检测A(PC7)为1否?
JZPRINT2;为0,则继续检测
INCBX;为1,说明数据已输出
LOOPPRINT1;准备取下一个数据输出
POPDX;打印结束,恢复寄存器
POPCX
POPBX
POPAX
RET;返回
PRINTENDP
本例与上例的主要区别是:在上例中,由软件对PC7复位和置位来产生打印机的选通信号,而本例中,8255A工作在选通方式,当执行输出指令时,自动由硬件从PC7()输出负脉冲选通信号。当打印机变为有效时,自动将PC7置为高电平。
372.8255A与键盘接口
键盘是微机系统中最常用的外部设备,数据、内存地址、命令及指令地址等都可以通过键盘输入到系统中。
图8.14键盘的结构
38(1)键盘的工作原理
最简单的键盘如图11.14(a)所示,其中每个键对应I/O端口的一位。没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位接地而成为低电平,而其它位仍为高电平。这样,CPU只要检测到某一位为0,便可判别出对应键已按下。
但是,用图8.14(a)的结构设计键盘有一个很大的缺点。这就是当键盘上的键较多时,引线太多,占用的I/O端口也太多。所以,这种简单结构只用在只有几个键的小键盘中。
通常使用的键盘是矩阵结构的。对于8×8=64个键的键盘,采用矩阵方式只要用16条引线和2个8位端口便完成键盘的连接。以3×3=9个键为例,如图8.14(b),这个矩阵分为3行3列,如果键5按下,则第1行和第2列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第2列线也输出低电平。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。
39(2)键的识别
为了识别键盘上的闭合键,通常可以采用两种方式:行扫描法和行反转法。
①行扫描法
图8.15是一个8行8列组成的键盘。行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。如果有某列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。此后,再将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。
实际应用中,一般先快速检查键盘中是否有键按下,然后再确定按键的具体位置。为此,先使所有行线为低,然后检查列线。这时如果列线有一位为0,则说明必有键被按下,采用扫描法可进一步确定按键的具体位置。
40图8.15键盘接口电路
41图8.15中将行线与8255A端口B相连,端口B设置为输出。CPU使端口B的某一位为0,便相当于将该行线接低电平;某位为1,则该行线接高电平。为了检查列线的电平,将列线与端口A相连,端口A设置为输入。CPU只要读取端口A的数据,就可以判别是否有键被按下及是第几列的键被按下。
从上面的原理可知,键盘扫描程序的第一步应该判断是否有键被按下。为此,使输出端口各位全为0,即相当于将所有行线接低电平。然后,从输入端口读取数据,如果读得的数据不是FFH,则说明必有列线处于低电平,从而可断定必有键被按下。此时,为了消除键的抖动,调用延迟程序。如果读得的数据是FFH,则程序在循环中等待。这段程序如下:
KEY1:MOVAL,00H
MOVDX,ROWPORT;ROWPORT为行线端口地址
OUTDX,AL;使所有行线为低
MOVDX,COLPORT;COLPORT为列线端口地址
INAL,DX;读取列值
CMPAL,0FFH;判定是否有列线为低电平
JZKEY1;没有,无闭合键,则循环等待
CALLDELAY;有,则延迟20ms清除抖动
42
键盘扫描程序的第二步是判断哪一个键被按下了。开始时,将计数值设置为行数,然后设置扫描初值。扫描初值11111110使第0行为低电平,其它行为高。输出扫描初值后,马上读取列线的值,看是否有列线处于低电平。若无,则将扫描初值循环左移一位,变为11111101,同时,计数值减1,如此下去,直到计数值为0。
如果在此过程中,查到有列线为低,则组合此时的行值和列值,进行下一步查找键值代码的工作,程序段如下:
MOVAH,0FEH;扫描初值送AH
MOVCX,8;行数送CX
KEY2:MOVAL,AH
MOVDX,ROWPORT
OUTDX,AL;输出行值(扫描值)
MOVDX,COLPORT
INAL,DX;读进列值
CMPAL,0FFH;判断有无接地线
JNZKEY3;有,则转下一步处理
ROLAH,1;无,则修改扫描值,准备下一行扫描
LOOPKEY2;计数一次,未扫完8行,则继续循环
JMPKEY1;所有行都没有键按下,则返回继续检测
KEY3:…;此时,AL=列值,AH=行值,进行后续处理
43②行反转法
行反转法也是识别键盘的常用方法。它的原理是:将行线接一个数据端口,先让它工作在输出方式;将列线也接到一个数据端口,先让它工作在输入方式。程序使CPU通过输出端口往各行线上送低电平,然后读入列线值。如果此时有某键被按下,则必定会使某列线值为0。接着,程序再对两个端口进行方式设置,使接行线的端口改为输入方式,接列线的端口改为输出方式。并且,将刚才读得的列值从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行值和列值。因此,要实现上述行反转法,行、列线所接的数据端口应能够改变输入、输出方式,而8255A的3个端口正好具有这个功能。
为了查找键代码,键盘程序设计时,可将各个键对应的行、列值放在一个表中,程序通过查表来确定哪一个键被按下,进而在另一个表中找到这个键的代码。如果遇到多个键同时闭合的情况,则输入的行值或者列值中一定有一个以上的0,而由程序预选建立的键值表中不会有此值,因而可以判为重键而重新查找。所以,用这种方法可以方便地解决重键问题。
44KEY1:…;设置行线接输出端口ROWPORT,列线接输入端口COLPORT,并判断是否有键按下
KEY2:MOVAL,00H
MOVDX,ROWPORT
OUTDX,AL;行线全为低
MOVDX,COLPORT
INAL,DX;读取列值
CMPAL,0FFH
JZKEY2;无闭合键,循环等待
PUSHAX;有闭合键,保存列值
PUSHAX
…;设置行线接输入端口ROWPORT,列线接输出端COLPORT
MOVDX,COLPORT
POPAX
OUTDX,AL;输出列值
MOVDX,ROWPORT
INAL,DX;读取行值
POPBX;结合行列值,此时
MOVAH,BL;AL=行值,AH=列值
45;查找键代码
MOVSI,OFFSETTABLE;TABLE为键值表
MOVDI,OFFSETCHAR;CHAR为键对应的代码
MOVCX,64;键的个数
KEY3:CMPAX,[SI];与键值比较
JZKEY4;相同,说明查到
INCSI;不相同,继续比较
INCSI
INCDI
LOOPKEY3
JMPKEY1;全部比较完,仍无相同,说明是重键
KEY4:MOVAL,[DI];获取键代码送AL
…;判断按键是否释放,没有则等待
CALLDELAY;按键释放,延时消除抖动
…;后续处理
TABLEDW0FEFEH;键0的行列值(键值)
DW0FDFEH;键1的行列值
DW0FBFEH;键2的行列值
…;全部键的行列值
CHARDB…;键0的代码
DB…;键1的代码
…;全部键的代码
468.2可编程串行接口芯片8251A
8.2.1串行通信概述
如前所述,在计算机系统中,有两种数据传送方式:串行传送和并行传送。
并行数据传送的特点是8位、16位,甚至32位数据同时从一个设备传送到另一个设备。串行数据传送的特点是在传输过程中,数据一位一位地沿着一条传输线从一个设备传到另一个设备。以传送8位数据01101010为例,并行传送与串行传送的过程如图8.16所示。
图8.16并行与串行传送数据的示意图47从并行与串行的数据传送示意图可以看出,并行数据传送所需传输线的条数与位数有关,位数越多所需传输线越多;而串行数据传送只需一根线即可。
对于计算机系统内部或近距离的设备之间数据传送,可采用并行数据传送,并行通信数据线的传送速度快,工作效率高。对于远距离的设备之间的数据传送,经常采用串行数据传送。目前远距离通信利用电话线,比装并行电缆和放大器更经济、方便。
481.数据传送过程
微型计算机系统向外传送数据或者接收外面传送来的数据是以并行方式传送的,这是计算机内部数据所固有的特征。若要在计算机和外部设备之间进行串行通信,就需要一种接口电路,它具有把CPU传送来的并行数据转换为串行数据发送出去的功能,还具有把接收到外部设备传送来的串行数据转换成并行数据传送给CPU的功能。这种接口电路称为串行接口电路。
电路的工作过程是:接收数据时,移位寄存器接收输入线串行接口传送来的每一位,并把串行数据转换成并行数据存入接收数据寄存器,供CPU读取;发送数据时,CPU把数据传送给发送缓冲器,再通过移位寄存器在发送时钟的触发下一位一位地进行移位,把数据发送到输出线上。串并行互相转换如图8.17所示。49A 图8.18串行通信的3种连接方式
B 发送器 接收器
数据线
(a)单工方式
A A B B 发送器 发送器
发送器 发送器
接收器
接收器 接收器 接收器 (b)半双工方式
(c)全双工方式
数据线
数据线
数据线
502.串行通信的连接方式
串行通信时,数据是在两个站点A与B之间传送,具有单工(Simplex)、半双工(Half-Duplex)和全双工(Full-Duplex)3种连接方式,如图8.18所示。
(1)单工方式
这种方式中,数据只允许朝一个方向传输,如图8.18(a)所示,A站只能发送,B站只能接收。
(2)半双工方式
半双工方式中,数据可以在两个方向上传送,但通信双方不能同时收发数据,如图8.18(b)所示,A、B两个站点均具有接收或发送数据的器件,但两站点之间只有一条通信线路,故在任一时刻仍只能进行单向传送,双方可以通过切换开关来改变传送方向。
(3)全双工方式
全双工方式下,通信双方均可以在同一时刻发送和接收数据。如图8.18(c)所示,A、B两站点分别具备有一套完全独立的接收器和发送器,且两站点之间有两条信道,可以实现全双工传输。
513.同步与异步通信方式
为了保证数据通信的顺利进行,通信的双方必须共同遵守基本的通信规程,即通信协议。这里的所谓同步与异步通信方式,实际上是两类不同的通信协议中的一部分。
(1)异步通信(ASYNC)方式
异步通信(ASYNC——Asynchronousdatacommunication)方式中规定的字符格式如图8.19所示。异步通信方式的特点是,通信时以收发一个字符为独立的通信单位,两个传送的相邻字符之间的时间间隔可以是任意的,但通信空闲时,必须用“1”来填充(即不停地传输逻辑1。每个字符由4个部分组成:
①起始位:一位,逻辑0,表示字符的开始;
②数据位:可以是5~8位逻辑0/逻辑1,与双方约定的编码形式有关,如:ASCII码(7位),扩展的BCD码(8位)等,起始位之后紧跟着的是数据的最低位D0。
③奇/偶校验位:一位逻辑0/逻辑1,双方可以约定采用奇校验、偶校验或无校验位。
52第n+1个字符
第n个字符
空闲位
7位数据位
空闲位
0 111 1 0 D0D1D2D3
D4
D5
D6
图8.19异步通信字符格式
④停止位:1位或1.5位或2位逻辑1,表示字符的结束,停止位的宽度,也是由双方预先约定。
异步传送过程中的起始位和停止位起着重要的作用。起始位标志着每一个字符的开始,停止位标志着每一个字符的结束。由于串行通信采用起始位为同步信号,接受端总是在接收到每个字符的头部即起始位处进行一次重新定位,保证每次采样对应一个数位。所以异步传送的发送器和接收器不必用同一个时钟,而是各有自己的局部时钟,只要是同一标称频率,略有偏差不会导致数据传送错误。
53(2)同步通信(SYNC)方式
在异步通信中,每个字符都要用起始位和停止位来使通信双方同步,这些附加的额外信息,使得异步通信的传输效率不高。在需传输大量数据的场合,为提高传输效率和速度,常去掉这些附加位,即采用同步通信SYNC(SynchronousdataCommunication),如图8.20所示。
同步通信的特点是,收、发双方以一个或两个预先约定的同步字符作为数据块传送的开始,数据块由几十到几千,甚至更多字节组成。对每个字符的检错一般可用奇校验,数据块的末尾用CRC(循环冗余码)对整个数据块进行校验。为了防止因收、发双方的时钟频率的偏差的积累效应而产生错位,从而导致通信出错,同步通信要求接收和发送的时钟完全同步,不能有误差。实际应用中,同步传送常在收、发双方间使用同一时钟,故硬件电路比较复杂。
54同步字符 数据块
CRC1
CRC2同步字符2
数据块
CRC1 CRC2
同步字符1
a.单同步格式
b.双同步格式 图8.20同步通信格式
554.波特率与收/发时钟
(1)波特率
计算机串行通信中常用波特率(Baudrate)来表示数据传输率,波特率的单位是bit/s,即每秒所传送的二进制位数。常用的标准值有110,300,600,1200,2400,4800,9600,19200波特等。
也可用位时间(Td)来表示传输率,它是波特率的倒数,表示每传送一位二进制位所需要的时间。例如某异步通信中每秒传送960个字符,而每个字符由10位(1个起始位、7个数据位、1个奇校验位、1个停止位)组成,则传送的波特率为:fd=10×960bit/s=9600bit/s
传送一位的时间Td=1/9600=0.104ms
56(2)接收/发送时钟
异步通信中,大多数串行端口发送和接收的波特率均可分别设置,由发送器和接收器各用一个时钟来确定,分别称为发送时钟和接收时钟。为了有利于收发双方同步,以及提高抗干扰的能力,这两个时钟频率fc一般不等于波特率fd,两者之间的关系为:
fc=kfd。
其中,k称为波特率系数,其取值可为1、16、32或64。
5.信号的调制与解调
计算机的通信是一种二进制数字信号的传输,它要求传送线的频带很宽,而在进行远程数字通信时,往往是利用现有的模拟通信线路(如:电话线),其主要用途是传送音频信号,频带窄,一般为300~3400Hz。因此,若直接利用模拟信道作数字信号传输,则信号必然会发生畸变而导致出错。解决的办法是利用调制解调器,即MODEM(Modulator-Demodulator)。如图8.21所示,在发送方,用调制器把数字信号转换为模拟信号;经过模拟信道的传输到达接收方后,用解调器将模拟信号转换成数字信号再进入对方的计算机。
57
图8.21中的MODEM是由调制器和解调器合在一起形成的一个装置,以用作双向通信。MODEM的类型一般可分为幅移键控(ASK)、频移键控(FSK)和相移键控(PSK)等。当通信波特率小于300bit/s时,常采用FSK调制方式,其基本原理是将数字信号“1”和“0”分别调制成不同频率的音频信号,例如将“1”转换成2400Hz的音频信号,而将“0”转换成1200HZ的音频信号。当到达接收方后,由解调器通过鉴频电路,将2400HZ和1200HZ的音频信号再还原为数字信号“1”和“0”。
图8.21信号的调制与解调示意图
58可编程串行接口芯片有多种型号,常用的有Intel公司生产的8251A,Motorola公司生产的6850、6952、8654,ZILOG公司生产的SIO及TNS公司生产的8250等。这些芯片结构和工作原理大同小异,不必一一介绍。下面以Intel公司生产的8251A为例介绍可编程串行通信接口的基本工作原理、编程结构、编程方法及应用实例
8.2.28251A的内部结构和工作过程
8251A是一个通用串行输入/输出接口芯片,可用来将CPU传送给外设的信息以串行方式向外发送,或将外设输入给CPU的信息以串行方式接收并转换成并行数据传送给CPU。
8251A的内部结构及引脚如图8.22所示。
59
图8.228251A内部结构及引脚图601.发送器和接收器
发送器和接收器是与外设交换信息的通道。下面对发送器和接收器的工作过程分别进行论述。
发送器包含发送缓冲器、发送移位寄存器、发送控制器三部分。工作过程:
(1)接收到来自CPU的数据存入发送缓冲器。
(2)发送缓冲器存有待发送的数据后,使引脚TXRDY变为低电平,表示发送缓冲器满。
(3)当调制解调器做好接收数据的准备后,向8251A输入一个低电平信号,使引脚有效。
(4)在编写初始化命令时,使操作命令控制字的TXEN位为高,让发送器处于允许发送的状态下。
(5)满足以上(2)、(3)、(4)条件时,若采用同步方式,发送器将根据程序的设定自动送一个(单同步)或两个(双同步)同步字符,然后由移位寄存器从数据输出线TXD串行输出数据块;若采用异步方式,由发送控制器在其首尾加上起始位及停止位,然后从起始位开始,经移位寄存器从数据输出线TXD串行输出。
61(6)待数据发送完毕,使TXEMPTY有效。
(7)CPU可向8251A发送缓冲器写入下一个数据。
与发送器有关引脚信号如下:
TXD:数据发送端,输出串行数据送往外部设备。TXRDY:发送器准备好信号。
TXEMPTY:发送移位寄存器空闲信号。(注意与TXRDY的区别)
:发送时钟信号,外部输入。对于同步方式,TXC的时钟频率应等于发送数据的波特率。对于异步方式,由软件定义的发送时钟可是发送波特率的1倍(×1)、16倍(×16)或64倍(×64)。
62
接收器包括接收缓冲器、接收移位寄存器及接收控制器三部分。工作过程:
(1)当控制命令字的“允许接收”位RXE和“准备好接收数据”位有效时,接收控制器开始监视RXD线。
(2)外设数据从RXD端逐位进入接收移位寄存器中,接收中对同步和异步两种方式采用不同的处理过程。
异步方式时,当发现RXD线上的电平由高电平变为低电平时,认为是起始位到来,然后接收器开始接收一帧信息。接收到的信息经过删除起始位和停止位,把已转换成的并行数据置入接收数据缓冲器。
同步方式时,每出现一个数据位移位寄存器就把它移一位,把移位寄存器数据与程序设定的存于同步字符寄存器中的同步字符相比较,若不相等重复上述过程,直到与同步字符相等后,则使SYNDET=1,表示已达到同步。这时在接收时钟RXC的同步下,开始接收数据。RXD线上的数据送入移位寄存器,按规定的位数将它组装成并行数据,再把它送至接收数据缓冲器中。
(3)当接收数据缓冲器接收到由外设传送来的数据后,发出“接收准备就绪”RXRDY信号,通知CPU取走数据。
63与接收器有关的引脚信号如下:
RXD:数据接收端,接收由外设输入的串行数据。
RXRDY:接收器准备好信号。RXRDY=1表示接收缓冲器已装有输入的数据,通知CPU取走数据。若用查询方式,可从状态寄存器D1位检测这个信号。若用中断方式,可用该信号作为中断申请信号,通知CPU输入数据。RXRDY=0表示输入缓冲器空。
SYNDET/BRKDET:双功能检测信号,高电平有效。
对于同步方式,SYNDET是同步检测信号,对于异步方式,BRKDET为间断检出信号,用来表示RXD端处于工作状态还是接收到断缺字符。
RXC:接收时钟信号,输入。在同步方式时,RXC等于波特率;在异步方式时,可是波特率的1倍、16倍或64倍。
642.数据总线缓冲器
数据总线缓冲器是与CPU交换数据信息的通道。把8251A的8根数据线D7~D0和CPU系统数据总线相连,其功能有:
(1)接收来自CPU的数据及控制字,传送数据给数据输出缓冲器,传送控制字也给数据输出缓冲器。对于控制字缓冲器不保存,接收到后马上发出相应控制,对于数据保存在输出缓冲器。当=0、TXEN=1条件满足时,才传送数据到发送移位寄存器。
(2)从数据输入缓冲器内取数据传送给CPU。
(3)从状态寄存器中读取状态字,确定8251A处于何种工作状态。
653.读/写控制电路
读/写控制电路是用来接收CPU送来的一系列控制信号。各信号的作用及动作过程是:
RESET:芯片的复位信号。
:片选信号,低电平有效。
C/D:控制/数据信号。根据C/D信号是1还是0,鉴别当前数据总线上信息流是控制字还是与外设交换的数据。对于8位的8088CPU系统,C/D端可直接连接到地址总线的A0端。对于16位的8086CPU系统,低8位数据总线上的数据访问偶地址端口或存储单元,高8位数据总线上的数据访问奇地址端口或存储单元。当8位的8251A的数据线连接到CPU低8位数据总线上,C/D端连接到地址总线的A1端,A0端不连接到8251A接口芯片上,保证8086CPU发给8251A的地址数为连续的俩个偶地址,使CPU与8251A交换的数据信息是在低8位数据总线上。对于8251A接收到的两个连续的偶地址,必定一个使C/D=0,一个使C/D=1。
66、、
:读、写控制信号。在执行IN指令时,线有效,启动输入缓冲寄存器,数据总线上数据流方向由8251A流向CPU。
在执行OUT指令时,线有效,启动输出缓冲寄存器,数据流方向由CPU流向8251A。
上述信号配合起来可以决定8251A的操作,如表8.4所示。
C/C/操作信息流向0001读数据CPU←8251A0010写数据8251A→CPU0101读状态字CPU←8251A0110写控制字8251A→CPU1×××未选中数据总线浮空674.调制解调器控制
在远距离通信时,8251A提供了与调制解调器联络的信号;在近距离串行通信时,8251A提供了与外设联络的应答信号。
与调制解调控制电路有关的信号作用及控制方法如下:
:数据终端准备好信号,输出,低电平有效。此信号有效时,表示接收方准备好接收数据,通知发送方。
:数据装置准备好信号,输入,低电平有效。它是对DTR的回答信号,表示发送方准备好发送。
:发送方请求发送信号,输出,低电平有效。
:清除发送信号,输入,低电平有效。它是对RTS的回答信号,表示接收方作好接收数据的准备。
发送方与接收方是相对数据将要传送方向而决定的。当DTR与DSR为一对握手信号时,8251A为接收方,外设为发送方;当RTS和CTS为一对握手信号时,8251A为发送方,外设为接受方,如图8.23所示。
68698.2.38251A控制字及初始化方法
8251A芯片在工作前要先对其初始化,以确定其工作方式。工作中CPU要向8251A发出一些命令,确定其动作过程,并要求了解其工作状态,以保证在数据传送中协调CPU与外设的数据传送过程。这样就需要有三种控制字,分别为工作方式控制字、操作命令控制字和状态控制字。
701.工作方式控制字
此控制字决定8251A是工作在异步方式还是同步方式。异步方式时,关于传送的数据位的位数、停止位的位数、传送速率等的约定;同步方式时,是双同步还是单同步等约定,都是通过执行输出指令由CPU向8251A写入一个工作方式控制字来完成的。
工作方式控制字各位的定义如图8.24所示。
B2、B1二位有两个作用,一个作用是确定通信方式是同步方式还是异步方式;另一个作用是确定异步通信方式的数据传送速率。例如×64表示时钟频率是发送或接收波特率的64倍,其他类推。
71图8.248251A工作方式控制字722.操作命令控制字
要使8251A处于发送数据或接收数据状态,通知外设准备接收数据或是发送数据,是通过CPU执行输出指令,发出相应的控制字来实现的。
操作命令控制字各位的定义如图8.25所示。
图8.258251A操作命令控制字733.状态控制字
CPU通过输入指令读取状态控制字,了解8251A传送数据时所处的状态,作出是否发出命令,是否继续下一个数据传送的决定。状态字存放在状态寄存器中,CPU只能读状态寄存器,而不能对它写入内容,状态控制字各位所代表的意义如图8.26所示。
图8.268251A状态控制字74在传送数据前要对8251A进行初始化,才能确定发送方与接收方的通信格式,以及通信的时序,从而保证准确无误地传送数据。由于三个控制字没有特征位,且工作方式控制字和操作命令控制字放入同一个端口,因而要求按一定顺序写入控制字,不能颠倒。正确顺序如图8.27所示。需要指出,工作方式控制字必须跟在复位命令之后。复位命令可用硬件的方法从RESET引脚输入一复位信号,也可通过软件方法发送复位命令,这样8251A才可重新设置工作方式控制字,改变工作方式完成其他传送任务。
75图8.278251A初始化流程76[例8.3]编写一段通过8251A采用查询式接收数据的程序。将8251A定义为异步传送方式,波特率系数为64,采用偶校验,1位停止位,7位数据位。
设8251A数据口地址为04A0H,控制口地址为04A2H。初始化程序为:
MOVDX,04A2H
MOV AL,7BH;写工作方式控制字
OUT DX,AL
MOV AL,14H;写操作命令控制字
OUT DX,AL
WAIT∶IN AL,DX;读入状态控制字
AND AL,02H
JZ WAIT;检查RXRDY是否为1
MOV DX,04A0H
IN AL,DX;输入数据
77[例8.4]编写使8251A发送数据的程序。将8251A定为异步传送方式,波特率系数为64,采用偶校验,1位停止位,7位数据位。8251A与外设有握手信号,采用查询方式发送数据。
设8251A数据口地址为04A0H,控制口地址为04A2H。初始化程序如下:
MOVDX,04A2H
MOV AL,7BH;写工作方式控制字
OUT DX,AL
MOV AL,31H;写操作命令控制字
OUT DX,AL
WAIT∶IN AL,DX
AND AL,01H;检查TXRDY是否为1
JZ WAIT
MOV DX,04A0H
MOV AL,36H;输出的数据送AL
OUT DX,AL
78
[例8.5]编写接收数据的初始化程序。要求8251A采用同步传送方式、2个同步字符、内同步、偶校验、7位数据位和同步字符为16H。
设8251A数据口地址为04A0H,控制口地址为04A2H。初始化程序如下:
MOVDX,04A2H;控制口地址送DX
MOV AL,38H;写工作方式控制字
MOV DX,AL
MOV AL,16H;同步字符送AL
OUT DX,AL
OUT DX,AL;输入两个同步字符
MOV AL,96H;写操作命令控制字
OUT DX,AL
798.2.48251A应用实例
1.8251A作为接口芯片输出数据送给一个串入——并出寄存器74LS164,控制8个发光二极管,要求发光二极管从左到右轮流显示,并不断循环。(该题可用于模拟串口输出实验。)
图8.2874LS164芯片引脚图80(1)74LS164芯片引脚及工作过程
CR:输出控制端。CR=0,输出Q7~Q0全为低电平;CR=1,输出Q7~Q0工作。
DSA、DSB:输入控制和数据输入端。当DSA、DSB中一个为低电平时禁止另一个输入;当DSA、DSB中一个为高电平时允许另一个输入,在CP上升沿动作。
(2)硬件电路设计
硬件电路设计如图8.29所示。
RTS信号为启动外部设备的选通信号。
图8.29硬件电路设计81(3)程序设计
因为外部接口芯片74LS164与8251A的通信是直接的,它不是可编程接口芯片,不能判断起始位、终止位、装配数据位,74LS164把从8251ATXD发来的数据都认为是真正的数据。所以为实现该实验,从8251A发出数据定为一位起始位,一位终止位,无奇偶校验,6位数据位。第一个灯对应起始位,永远不亮,第8个灯对应停止位,永远亮,只有中间6个灯显示的才为真正数据。
程序如下:
ORG8000H
CODESEGMENT
ASSUMECS∶CODE
START∶MOV DX,04A2H;8251A控制口地址送DX
MOV AL,01000101B;设置8251A工作方式控制字,即异步、1位停止位,倍频系数为×1、6位数据
OUT DX,AL
MOV AH,06H;设置计数器初值
82AA1∶ MOV AL,40H;点亮指示灯
MOV BL,AL
AA∶ MOV AL,31H;操作命令控制字送AL
OUT DX,AL
WAIT∶ IN AL,DX;检测8251A工作状态
AND AL,05H;检查TXRDY是否为1、TXEMPTY是否为1
JZ WAIT
MOV DX,04A0H;8251A数据口地址送DX
MOV AL,BL
OUT DX,AL;输出数据
MOV DX,04A2H;8251A控制口地址送DX
MOV AL,31H;启动RTS线
OUT DX,AL
CALL DELAY;调延时子程序
ROR BL,1;循环点亮指示灯
DEC AH
JN ZAA
JMP AA1
CODEENDS
END START
83
2.用两片8251A接口芯片实现两个8086CPU之间的串行通信如图8.30所示。
图8.30两个8086CPU之间的串行通信84
8251A接口芯片的译码电路的设计也需考虑8位的接口芯片与16位的CPU之间进行数据交换,必须遵循低8位数据线上的数据对应于偶地址、高8位数据线上的数据对应于奇地址的原则,这已在8255A接口芯片译码电路的设计中作了详细说明。对于8251A,CPU是对其状态寄存器还是数据寄存器的访问,是传送命令字、控制字还是数据,可通过线为1还是为0加以区别。一般地,将地址线A1接到8251A的端,使8251A占用低2位地址线。因此,实例电路中假定8251A数据口的地址为04A0H,控制口地址为04A2H。假定1#8251A地址为04A0H,04A2H;2#8251地址为04A4H,04A6H。1#CPU发送100个数据给2#CPU,通信协议是采用异步传送方式,8位数据无校验,2位停止位,波特率因子为64。
在实际使用中,当未对8251A设置模式时,如果要对8251A进行复位,一般采用先送3个00H,再送40H的方法,这是8251A的编程约定。
85程序如下:
;1#CPU发送程序
DATASETMENT
FADBXX,XX,…;将要传送的数据
DATAENDS
STACKSEGMENTPARASTACK′STACK′
BUFFDB50DUP(?)
STACKENDS
CODESEGMENT
ASSUMECS∶CODE,DS∶DATA,SS∶STACK
START∶MOVAX,DATA;取数据段寄存器地址
MOVDS,AX
MOVAX,STACK;取堆栈段寄存器地址
MOVSS,AX
MOVDX,04A2H;8251A控制口地址送DX
MOVBL,03H;复位8251A,先输入3个0
AA1∶MOVAL,00H
OUTDX,AL
NOP
86DECBL
JNZAA1
MOVAL,40H;发复位命令
OUTDX,AL
MOVAL,0CFH;设置工作方式控制字
OUTDX,AL
MOVAL,31H;设置操作命令控制字
OUTDX,AL
LEASI,FA;取数据区偏移地址
MOVCX,0064H;设置传送100个数据的计数器
MOVDX,04A2H;设置8251A控制口地址
WAIT1∶INAL,DX;读取状态字
ANDAL,05H;检测TXEMPTY和TXRDY位
JZWAIT1;发送器空,等待
MOVDX,04A0H;设置8251A数据口地址
MOVAL,[SI];取数据
OUTDX,AL;将数据传送给另一台计算机
INCSI;修改数据区地址指针
DECCX
JNZWAIT1
AA2∶JMPAA2
CODEENDS
ENDSTART
87;2#CPU接收程序
DATASEGMENT
SHOUDB64DUP(?)
DATAENDS
STACKSEGMENTPARASTACK′STACK′
BUFFDB50DUP(?)
STACKENDS
CODESEGMENT
ASSUMECS∶CODE,DS∶DATA,SS∶STACK
START∶MOVAX,DATA;取数据段寄存器地址
MOVDS,AX
MOVAX,STACK;取堆栈段寄存器地址
MOVSS,AX
MOVDX,04A6H;设置8251A控制口地址
MOVBL,03H
AA3∶MOVAL,00H;复位8251A,先输入三个0
OUTDX,AL
NOP
88DECBL
JNZAA3
MOVAL,40H;发复位命令
OUTDX,AL
MOVAL,0CFH;设置工作方式控制字
OUTDX,AL
MOVAL,16H;设置操作命令控制字
OUTDX,AL
LEADI,SHOU;接收数据缓冲区首址
MOVCX,0064H;设置传送100个数据的计数器
MOVDX,04A6;设置8251A控制口地址
WAIT2∶INAL,DX;监测8251A工作状态
MOVBL,AL
ANDAL,02H;检测RXRDY是否为1
JZWAIT2
MOVAL,BL
ANDAL,38H
JNZERR;转出错处理程序
MOVDX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑施工竣工总结报告及自评模板
- 软件测试保密协议签订指导
- 数据分析报告基础模板框架
- 八年级上册英语重点知识点归纳
- 秋日校园漫步的感想抒情作文9篇范文
- 2017年秋季六年级数学综合测试卷
- 用户数据安全技术措施承诺书7篇
- 工业生产安全风险评估规范
- 生产现场管理安全规范模板
- 诚信竞争行为要求保证承诺书4篇范文
- 会计法考试试题及答案2025年
- 五粮液企业文化知识竞赛题及答案
- 羽毛球起源教学课件
- 2025年地方AMC行业研究报告及未来行业发展趋势预测
- 2025年零碳园区发展白皮书-荣续ESG智库
- 《模拟电子技术》课件第4章场效应管及其基本放大电路
- 边境守护者边境管控信息化平台建设方案分析
- 设备编号管理标准与实施细则
- 变电站安全准入培训内容课件
- 2025年中医馆转让协议书
- 学堂在线 走进心理学 章节测试答案
评论
0/150
提交评论