并行通信接口与 8255A简介

上传人:岁月****20 文档编号:68319885 上传时间:2022-04-02 格式:DOCX 页数:19 大小:488.52KB
返回 下载 相关 举报
并行通信接口与 8255A简介_第1页
第1页 / 共19页
并行通信接口与 8255A简介_第2页
第2页 / 共19页
并行通信接口与 8255A简介_第3页
第3页 / 共19页
点击查看更多>>
资源描述
第九章并行通信接口与8255A【回顾】微机系统结构及控制信号的名称和作用。【本讲重点】I/O接口概述,CPU与I/O接口,I/O接口与系统的连接。8255A芯片的使用9.1 CPU与外设之间的数据传输一.CPU与I/O接口接口电路按功能可分为两类: 使微处理器正常工作所需要的辅助电路:时钟信号或中断请求等; 输入/输出接口电路:CPU与外部设备信息的传送(接收、发送)。最常用的外部设备:如键盘、显示装置、打印机、磁盘机等都是通过输入/输出接口和总线相连的,完成检测和控制的仪表装置也属于外部设备之列,也是通过接口电路和主机相连。1 .为什么要用接口电路:需要分析一下外部设备的输入/输出操作和存储器读/写操作的不同之处:存储器都是用来保存信息的,功能单一,传送方式单一(一次必定是传送1个字节或者1个字),品种很有限(只有只读类型和可读/可写类型),存取速度基本上和CPU的工作速度匹配.。外部设备的功能多种多样的(输入设备,输出设备,输入设备/输出设备),信息多样(数字式的,模拟式的),信息传输的方式(并行的,串行的),外设的工作速度通常比CPU的速度低得多,而且各种外设的工作速度互不相同,这也要求通过接口电路对输入/输出过程起一个缓冲和联络的作用。注:接口电路完成相应的信号转换、速度匹配、数据缓冲等功能2 .接口的功能(8种):寻址能力:对送来的片选信号进行识别。输入/输出功能:根据读/写信号决定当前进行的是输入操作还是输出操作。数据转换功能:并行数据向串行数据的转换或串行数据向并行数据的转换。联络功能:就绪信号,忙信号等。中断管理:发出中斯请求信号、接收中断响应信号、发送中断类型码的功能。并具有优先级管理功能。复位:接收复位信号,从而使接口本身以及所连的外设进行重新启动。可编程:用软件来决定其工作方式,用软件来设置有关的控制信号。错误检测:一类是传输错误。另一类是覆盖错误注:一些接口还可根据具体情况设置其它的检测信息I/O接口与系统的连接1.CPU与I/O设备之间的信号(三类)(1)数据信息包括三种形式:数字量、模拟量、开关量(2)状态信息是外设通过接口往CPU传送的如:“准备好(READY)信号、“忙(BUSY)信号(3)控制信息是CPU通过接口传送给外设的如:外设的启动信号、停止信号就是常见的控制信息3 .接口部件的I/O端口:数据端口、控制端口、状态端口CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。用于对来自CPU和内存的数据或者送往CPU和内存的数据起缓冲作用的,这些端口叫数据端口。用来存放外部设备或者接口部件本身的状态,称为状态端口。用来存放CPU发出的命令,以便控制接口和设备的动作,这类端口叫控制端口。如下图入输设 外输或出备注:输入还是输出,所用到的地址总是对端口而言的,不是对接口部件而言的。为了节省地址空间,将数据输入端口和数据输出端口对应同一个端口地址。同样,状态端口和控制端口也常用同一个端口地址。CPU对外设的输入/输出操作就归结为对接口芯片各端口的读/写操作。4 .接口与系统的连接.接口电路位于CPU与外设之间,从结构上看,可以把一个接口分为两个部分,用来和I/O设备相连;用来和系统总线相连,这部分接口电路结构类似,连在同一总线上下图是一个典型的I/O接口和外部电路的连接图:地 址 总 燃数据,状态DMA控制器数据总线控制总线联络信号:读/写信号,以便决定数据传输方向。地址译码器,片选信号:地址译码器除了接收地址信号外,还用来区分I/0地址空间和内存地址空间的信号(M/iO)用于译码过程。注:一个接口通常有若干个寄存器可读/写,一般用1-2位低位地址结合读/写信号来实现对接口内部寄存器的寻址。5 .输入输出的寻址方式CPU对外设的寻址方式通常有两种:(1)存储器对应输入输出方式每一个外设端口占有存储器的一个地址。优点:CPU对外设的操作可使用全部的存储器操作指令,寻址方式多,使用方便灵活,且可寻址的外设数量多。缺点:由于外设占用了存储单元的地址,使内存的容量减小,同时,程序的可读性下降。(2)端口寻址的输入输出方式CPU有专门的输入输出指令(IN,OUT),通过这些指令中的地址来区分不同的外设。优点:容易掌握,编出的程序可读性好。缺点:可寻址的范围较小,还必须有相应的控制线(M/IO)来区分是寻址内存还是外9.2可编程并行接口芯片8255A一.并行通信与接口并行通信就是把一个字符的各位同时用几根线进行传输。传输速度快,信息率高。电缆要多,随着传输距离的增加,电缆的开销会成为突出的问题,所以,并行通信用在传输速率要求较高,而传输距离较短的场合。Intel8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。8255A的编程结构8255A由以下几部分组成:见图9-1CPU接口内部逻辑外部接口控制A犯 端口 AIJOFA? * PfijjDE数据 产人总线 缓冲 里日位内部数据总线A蛆 端口 C 上半部B蛆 端口 (; 下半部UOPC PCiIaPCa PCo而取AA1理SETcs控制控制=蹲4UOPBt P&逻辑图9-18255A的编程结构1 .三个数据端口A,B,C这三个端口均可看作是I/O口,但它们的结构和功能也稍有不同。A口:是一个独立的8位I/O口,它的内部有对数据输入/输出的锁存功能。B口:也是一个独立的8位I/O口,仅对输出数据的锁存功能。C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。也是仅对输出数据进行锁存2 .A组和B组的控制电路这是两组根据CPU命令才S制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。A组控制电路用来控制A口及C口的高4位;B组控制电路用来控制B口及C口的低4位。3 .数据总线缓冲器8位的双向的三态缓冲器。作为8255A与系统总线连接的界面,输入/输出的数据,CPU的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。4 .读/写控制逻辑读/写控制逻辑电路负责管理8255A的数据传输过程。它接收片选信号CS及系统读信号RD、写信号WR、复位信号RESET,还有来自系统地址总线的口地址选择信号A0和Ai。三.8255A的引脚功能8255A的引脚信号可以分为两组:一组是面向CPU的信号,一组是面向外设的信号。1 .面向CPU的引脚信号及功能D0-D7:8位,双向,三态数据线,用来与系统数据总线相连;RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;CS:片选,输入,用来决定芯片是否被选中;RD:读信号,输入,控制8255A将数据或状态信息送给CPU;WR:写信号,输入,控制CPU将数据或控制信息送到8255A;Ai,Ao:内部口地址的选择,输入。这两个引脚上的信号组合决定对8255A内部的哪一个口或寄存器进行操作。8255A内部共有4个端口:A口,B口,C口和控制口,两个引脚的信号组合选中端口见下表。CS,RD,WR,Ai,A。这几个信号的组合决定了8255A的所有具体操作,表7-18255A的操作功能表CSRDWRAiA0操作数据传送方式00100读A口A口数据一数据总线00101读B口B口数据一数据总7线00110读C口C口数据一数据总:线01000写A口数据总线数据一A口01001写B口数据总线数据一B口01010写C口数据总线数据一C口01011写空带I口数据总线数据一控制口2 .面向外设的引脚信号及功能?PAoPA7:A组数据信号,用来连接外设;?PBoPB7:B组数据信号,用来连接外设;?PCoPC7:C组数据信号,用来连接外设或者作为控制信号四.8255A的工作方式8255A有三种工作方式,用户可以通过编程来设置。方式0简单输入/输出一一查询方式;A,B,C三个端口均可方式1选通输入/输出一一中断方式;A,B,两个端口均可。方式2双向输入/输出一一中断方式。只有A端口才有。方式1FBl PBftPCj- PC(j PC7-PC4PA7-物地址总线控制总线数据总线PBxPB(控制或控制或PAlF&I/O1/0B1久4nonPB(工/口|1PA7-*PAfl控制工作方式的选择可通过向控制端口写入控制字来实现。在不同的工作方式下,8255A三个输入/输出端口的排列示意图如上图所示1 .方式0方式0是一种简单的输入/输出方式,没有规定固定白应答联络信号,可用A,B,C三个口的任一位充当查询信号,其余I/O口仍可作为独立的端口和外设相连。方式0的应用场合有两种:一种是同步传送;一种是查询传送。2 .方式1方式1是一种选通I/O方式,A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出。而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。(1)方式1的输入组态和应答信号的功能图9-2给出了8255A的A口和B口方式1的输入组态。方式1端口 B)STBb 叫-INTRe图9-2方式1输入组态C口的PC3-PC5用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC6PC7则可作为方式0使用。STB:选通输入。用来将外设输入的数据打入8255A的输入缓冲器。IBF:输入缓冲器满。作为STB的回答信号,。INTR:中断请求信号。INTR置位的条件是STB为高且旧F为高且INTE为高。INTE:中断允许。对A口来讲,是由PC4置位来实现,对B口来讲,则是由PCo置位来实现。事先将其置位。A口B口STBPC4PC2IBF:PC5INTR:PC3INTE:PC4 置 1(2)方式1的输出组态和应答信号功能PC1PC0PC2 置 1方式1输出端口氐方式I输出端口B图9-3方式1的输出组态C口的PC3、PC6、PC7用作A口的应答联络线,PC0-PC2则作用B口的应答联络线,余下的PC4PC5则可作为方式0使用。应答联络线的功能如下:Obf:输出缓冲器满。当CPU已将要输出的数据送入8255A时有效,用来通知外设可以从8255A取数。ACK:响应信号。作为对OBF的响应信号,表示外设已将数据从8255A的输出缓冲器中取走。INTR:中断请求信号。INTR置位的条件是ACK为高且OBF为高且INTE为高。INTE:中断允许。对A口来讲,由PC6的置位来实现,对B口仍是由PC2的置位来实现。A口B口OBF:PC6PC2ACK:PC7PC1INTR:PC3PC0INTE:PC6置1PC2置13 .方式2方式2为双向选通I/O方式,只有A口才有此方式。这时,C口有5根线用作A口的应答联络信号,其余3M线可用作方式0,也可用作B口方式1的应答联络线。方式2:就是方式1的输入与输出方式的组合,各应答信号的功能也相同。而C口余下的PC0PC2正好可以充当B口方式1的应答线,若B口不用或工作于方式0,则这三条线也可工作于方式0方式2的组态STB:PC4IBF:PC5OBF:PC6ACK:PC7INTR:PC3_ QBFaACKkSTBaIBFa4 I/O(2)方式2的应用场合又可以作为方式2是一种双向工作方式,如果一个并行外部设备既可以作为输入设备,输出设备,并且输入输出动作不会同时进行。(3)方式2和其它方式的组合 方式2和方式0输入的组合:控制字:11XXX01T 方式2和方式0输出的组合:控制字:11XXX00T 方式2和方式1输入的组合:控制字:11XXX11X 方式2和方式1输出的组合:控制字:11XXX10X其中X表示与其取值无关,而T表示视情况可取1或0。五.8255A的编程及应用1.8255A的编程对8255A的编程涉及到两个内容:写控制字设置工作方式等信息,使C口的指定位置位/复位的功能注:均写入控制端口(1)控制字格式控制字要写入8255A的控制口,写入控制字之后,8255A才能按指定的工作方式工作8255A的控制字格式与各位的功能如图9-4所示。O输出1 输入O输出1 输入 O 方式O1 方式1O输出1 输入O输出1 输入1 X 方式2O 1 方式1 o O 方式O 1控制字标志A 口方式、I/OCHC 口局 B 口低4位方式、I/O4位图9-4 8255A 的控制字格式【例U某系统要求使用8255A的A 口方式0输入,B 口方式0输出,C 口高4位方式0DD6DD4D3DDiDo输出,C口低4位方式0输入。则控制字为:10010001B即91H初始化程序为:MOVAL,91HOUTCTRL_PORT,AL(2)C口的置位/复位功能只有C口才有,它是通过向控制口写入按指定位置位/复位的控制字来实现的。C口的这个功能可用于设置方式1的中断允许,可以设置外设的启/停等。按位置位/复位的控制字6D6D5D4D3D1DoO 控制字标志000-PC0001-PC110置复110-PC6位位111-PC7图9-58255A的复位/置位控制字格式格式如图9-5所示。【例2】A口方式2,要求发两个中断允许,即PC4和PC6均需置位。B口方式1要求使PC2置位来开放中断。初始化程序可补充完整如下。MOV AL , 0C4HOUT CTRL_PORT, ALMOV AL, 09HOUT CTRL_PORT, ALMOV AL , ODHOUT CTRL_PORT, ALMOV AL , 05HOUT CTRL_PORT, AL;设置工作方式;PC4置位,A 口输入允许中断;PC6置位,A 口输出允许中断;PC2置位; B 口输出允许中断2.接口应用率洌【例3】利用8255A的A口方式0与微型打印机相连,将内存缓冲区BUFF中的字符打印输出。试完成相应的软硬件设计。(CPU为8088)首先我们分析一下打印机的工作。微型打印机和主机之间的接口采用并行接口。图9-6打印机数据传输时序它的工作流程:主机将要打印的数据送上数据线,然后发选通信号。打印机将数据读入,同时使BUSY线为高,通知主机停止送数。这时,打印机内部对读入的数据进行处理。处理完以后使ACK有效,同时使BUSY失效,通知主机可以发下一个数据。硬件连线如下图:表7-2Centronics标准引脚信号引脚名称方向功能1STROBE入数据选通,有效时接收数据2-9DATA1-DATA8入数据线10ACKNLG出响应信号,有效时准备接收数据11BUSY出忙信号,有效时不能接收数据12PE出纸用完13SLCT出选择联机,指出打印机不能工作14AUTOLF入自动换行31INIT入打印机复位32ERROR出出错36SLCTIN入有效时打印机不能工作说明:由PCo充当打印机的选通信号,通过对PCo的置位/复位来产生选通。同时,由PC7来接收打印机发出的“BUSY”信号作为能否输出的查询。8255A的控制字为:10001000即88HA口方式0,输出;C口高位方式0输入,低位方式0输出PC0置位:00000001即01HPC。复位:00000000即00H8255A的4个口地址分别为:00H,01H,02H,03H。编制程序如下:DADASEGMENTBUFFDBThisisaprintprogram!,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETBUFFMOVAL,88H;8255A初始化,A口方式0,输出OUT03H,AL;C口高位方式0输入,低位方式0输出MOVAL,01H;OUT03H,AL;使PC0置位,即使选通无效WAIT : IN AL , 02H TEST AL, 80H JNZ WAIT MOV AL, SI CMP AL , $ JZ DONE OUT 00H, AL MOV AL, 00H OUT 03H, AL MOV AL, 01H OUT 03H, AL INC SI JMP WAIT;检测PC7是否为1即是否忙;为忙则等待;是否结束符;是则输出回车;不是结束符,则从A 口输出;产生选通信号;修改指针,指向下一个字符DONE : MOV AL , 0DH OUT 00H, AL MOV AL, 00H OUT 03H, AL MOV AL, 01H OUT 03H, ALWAIT1 : IN AL, 02H TEST AL, 80H JNZ WAIT 1 MOV AL, 0AH OUT 00H, AL MOV AL, 00H OUT 03H, AL;输出回车符;产生选通;检测PC7是否为1即是否忙;为忙则等待;输出换行符MOVAL,01HOUT03H,AL;产生选通MOVAH,4CHINT21HCODEENDSENDSTART【例4】将上例中8255A的工作方式改为方式1,采用中断方式将BUFF开始的缓冲区中的100个字符从打印机输出。(假设打印机接口仍采用Centronics标准)。分析:仍用PC0作为打印机的选通,打印机的ack作为8255A的A口,ack8255A的中断请求信号(PC3)接至系统中断控制器8259A的IR3,其它硬件连线同上例,如图7-15所示3259A图9-6中断方式硬件连线8255A的控制字为:1010XXX0PC0置位:00000001即01HPC0复位:00000000即00HPC6置位:00001101即0DH,允许8255A的A口输出中断由硬件连线可以分析出,8255A的4个口地址分别为:00H,01H,02H,03H。假设8259A初始化时送ICW2为08H,则8255AA口的中断类型码是0BH,此中断类型码对应的中断向量应放到中断向量表从2CH开始的4个单元中。主程序:MAIN :MOVAL,0A0HOUT03H,AL;设置8255A的控制字MOVAL,01H;使选通无效OUT03H,ALXORAX,AXMOVDS,AXMOVAX,OFFSETROUTINTRMOVWORDPTR002CH,AX;送中断向量;使8255A A 口输出允许中断;设置地址指针;设置计数器初值;输出一个字符MOVAX,SEGROUTINTRMOVWORDPTR002EH,AXMOVAL,0DHOUT03H,ALMOVDI,OFFSETBUFFMOVCX,99MOVAL,DIOUT00H,ALINC DI MOV AL, 00H OUT 03H, ALINC AL OUT 03H, AL STINEXT: HLT LOOP NEXT HLT中断服务子程序如下:;产生选通;撤消选通;开中断;等待中断;修改计数器的值,指向下一个要输出的字符ROUTINTR:MOVAL,DIOUT00H,ALMOVAL,00HOUT03H,ALINCALMOV03H,ALINCDIIRET:从A 口输出一个字符:产生选通;撤消选通:修改地址指针:中断返回【思考】是否可以采用A口的OBF作为打印机的选通信号?如可以的话,软件该如何修改?是否可用打印机的BUSY作为8255的A口ACK?【习题与思考】1.试分析8255A方式0、方式1和方式2的主要区别,并分别说明它们适合于什么应用场合。2 .当8255A的A口工作在方式2时,其端口B适合于什么样的功能?写出此时各种不同组合情况的控制字。3 .若8255A的端口A定义为方式0,输入;端口B定义为方式1,输出;端口C的上半部定义为方式0,输出。试编写初始化程序。(口地址为80H83H)4 .假设一片8255A的使用情况如下:A口为方式0输入,B口为方式0输出。此时连接的CPU为8086,地址线的Ai、A2分别接至8255A的A。、Ai,而芯片的CS来自A3A4A5A6A7=00101,试完成8255A的端口地址和初始化程序。9.3微机与键盘的接口、矩阵式键盘的结构在微型机系统中,键盘是一种最常用的外设,它由多个开关组合而成。可以用来制造键盘的按键开关有好多种,最常用的有机械式、薄膜式、电容式和霍尔效应式等4种。机械式开关较便宜,但压键时会产生触点抖动,即在触点可靠地接通前会通断多次,而且长期使用后可靠性会降低。薄膜式开关可做成很薄的密封单元,不易受外界潮气或环境污染,常用于微波炉、医疗仪器或电子秤等设备的按键。电容式开关没有抖动问题,但需要特制电路来测电容的变化。霍尔效应按键是另一种无机械触点的开关,具有很好的密封性,平均寿命高达1亿次甚至更高,但开关机制复杂,价格很贵。计算机上用的键盘一般都用机械式开关。对于大多数的键盘,按键被排成行和列的矩阵。下面以机械式开关构成的16个键的键盘为例,来讨论键盘接口的工作原理,这种原理对采用其它类型的开关的键盘也是适用的。设16个键分别为16进制数字09和AF,键盘排列、连线及接口电路如下图所示。16个键排成4行必列的矩阵,接到微型机的一对端口上。端口由8255A构成,其中端口A作输出,端口B作输入。矩阵的4条行线接到输出端口A的PA3PA0,用程序能改变这4条行线上的电平。4条列线连到输人端口B的PB3PB0,4条行线还同时接到输人端口B的PB7PB4上。这样,用输入指令读取B口状态时,可同时读取键盘的行列信号。在无键压下时,由于接到+5V上的上拉电阻的作用,列线被置成高电平。压下某一键后,该键所在的行线和列线接通。这时,如果向被压下键所在的行线上输出一个低电平信号,则对应的列线也呈现低电平。当从B口读取列线信号时,便能检测到该列线上的低电平。读取B口的状态时,还能读到行线上的低电平信号。这样,根据读入的行和列状态中低电平的位置,便能确定哪个键被压下了。、键盘与微机的接口及处理方式1. 行扫描方式识别键盘上哪个键被压下的过程称为键盘扫描,上述键盘的扫描包含以下几步:(1) 检测是否所有键都松开了,若没有则反复检测。(2) 当所有键都松开了,再检测是否有键压下,若无键压下则反复检测。(3) 若有键压下,要消除键抖动,确认有键压下。(4) 对压下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被压下了。如出现多键重接的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。(5) 该键释放后,再回到(2)。检测矩阵中是否有键压下的一种简单方法是,自输出口A向所有行线输出0电平,再通过B口的低4位读取列值,若其中有0值,便是有键压下了。在开始一次扫描时,先应确认上一次压下的键是否已松开。即先向所有行线输出低电平,再读人各列线值,只有当所有的行线和列线均为高电平,表示以前压下的键部已释放了,才开始检测是否有键压下。当检测到有键压下后,必须消除键抖动(Debance)。消除键抖动的常用方法是在检测到有键压下后,延长一定时间(通常为20ms),再检查该键是否仍被压着。若是,才认定该键确实被接下了,而不是干扰。确认有键压下后,再确定被压下键所在的行列号。为获取行列信息,先从A口输出一个低电平到一行线上,再从B口读人各列的值,若没有一列为低电平,说明压下的键不在此行。于是,再向下一行输出一个低电平,再检测各列线上是否有低电平。依次对每一行重复这个过程,直至查到某一列线上出现低电平为止。被置成低电平的行和读到低电平的列,便是被压下键所在的行列值。已知被压下的键所在的行号(03)和列号门3)后,就能得到该键的扫描码。例如,对于数字0,它位于3行、3列,压下0”键时,从B口可读得D7位和D3位为0,其余位为1,所以数字0的编码为01110111B,即77H;对于数字6,处于2行1歹1,压下6键时,D6位和Di位0以其余位为1,所以数字6的编码为10111101B=BDH。类似地,其余各键的编码也可一求得。将这些编码值列成表,放在数据段中,用查表程序来查对,便能确定压下的是什么键。2. 程序实现下面是键盘检测、去抖动、键值编码和确定键名的汇编语言程序。程序运行后,若返回值AH=0,表示已读到有效的键值,并在AL中存有0F键的16进制代码;若AH=l,则表示出错。PORT-AEQU0FF9H;8255A口地址PORT-BEQU0FFBH;8255B口地址PORT-CTLEQU0FFFH;8255控制口地址;数据段,键盘扫描码表DATASEGMENT;01234567TABLEDB77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH;89ABCDEFDB0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHDATAENDS;堆栈段STACKSEGMENTSTACKDW50DUP(0)TOP_STACILABELWORDSTACKENDS;代码段CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,STACKMOVSS,AXLEASP,TOP_STACKMOVAX,DATAMOVDS,AX;初始化8255A,方式0,A口作输出,B口和C口为输人MOVDX,PORTCTL;指向控制口MOVAL,10001011B;控制字OUTDX,AL;写人控制字0MOVDX,PORT-A;A口MOVAL,00HOUTDX,AL;向A口各位输出0;读列,查看是否所有键均松开MOVDX,PORT-BWAIT_OPENINAL,DX;键盘状态读人B口ANDAL,0FH;只查低4位(列值)CMPAL,0FH;是否都为1(各键均松开)?JNEWAIT_OPEN;否,继续查;各键均已松开,再查列是否有0,即是否有键压下WAIT_PRES:INAL,DX;读B口ANDAL,0FH;只查彳氐4位CMPAL,0FH;是否有键压下JEWAIT_PRES;无,等待;有键压下,延时20ms,消抖动MOVCX,16EAHDELAY:LOOPDELAY;延时20ms;再查列,看键是否仍被压着INAL,DXANDAL,0FHCMPAL,0FHJEWAIT_PRES;已松开,转出等待压键;键仍被压着,确定哪一个键被压下MOVAL,0FEH;先使风一0MOVCL,AL;CL=11111110BNEXT_ROW:MOVDX,PORT-A;A口OUTDX,AL;向一行输出低电平MOVDX,PORT-B;B口INAL,DX;读人B口状态ANDAL,0FH;只截取列值CMPAL,0FH;是否均为何JNEENCODE;否,表示有键压下,转去编码ROLCL,01;均为1,使下行输出0MOVAL,CLJMPNEXT_ROW;查看下行;已找到有一列为低电平,对压键的行列值编码ENCODE:MOVBX,000FH;建立地址指针,先指向F键对应的地址INAL,DX;从B口读人行列号NEXT.TRY:CMPAL,TABL可B川;读人的行列值与表中查得的相等吗?JEDONE;相等,转出DECBX;不等,指向下一个(键值较小者)地址JNSNEXT_TRY;若地址尚末减为负值,继续查MOVAH,01;若减为负值,置出错码01AH中JMPEXIT;退出DONE:MOVAL,BL;BL中存有键的16进制代码MOVAH,00;AH=0,读到有效键值EXIT:HLTCODEENDSEND9.4显示器与键盘的接口一、 LED显示器的结构二、 LED显示器与微机的接口及处理方式1接口电路2多位动态显示(实验)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!