微机原理与接口技术课件第九章课件_第1页
微机原理与接口技术课件第九章课件_第2页
微机原理与接口技术课件第九章课件_第3页
微机原理与接口技术课件第九章课件_第4页
微机原理与接口技术课件第九章课件_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

第九章可编程并行接口芯片8255A及其应用,并行接口的特点是在多根数据线上,以数据字节(或字)为单位与外部设备或被控对象传送信息,本章主要介绍可编程并行接口芯片8255A编程命令和工作方式,并针对键盘接口和打印机接口给出了其具体应用。,并行接口概述,计算机与外设交换信息的过程中: 并行通信:多位数据通过多条数据线同时传送。 串行通信:多位数据通过同一条数据线按位传送。 并行通信就是把一个字符的各数位用几条线同时进行传输。与串行通信(一位一位传输)相比,在相同传输率下,并行通信的信息实际传输速度快、信息率高。但并行通信比串行通信所用电缆多,随着距离的增加,电缆的开销会成为突出的问题。所以,并行通信总是用在数据传输率要求较高,而传输距离较短的场合。,实现并行通信的接口就是并行接口。一个并行接口可以设计为只用来作为输出接口,也可以只用来作为输入接口,此外,还可以把它设计成既作为输入又作为输出的接口。 并行接口是在多根数据线上,以字节/字为单位与I/O设备交换数据。 在计算机内部数据是并行传送的。因此,并行接口电路相对简单,串行接口电路由于要进行串并行转换相对复杂。 并行接口电路芯片常用的有两类: 普通的8位锁存器及缓冲器 可编程设置工作方式的并行接口,并行接口连接外设的示意图,第二节 简单并行接口电路,(一)输入接口(数据部分),如果送给外设的数据都是静态数据,接口可以简化为锁 存器。,外 部 数 据 引 脚,锁存控制,D,C,Q,D,C,Q,D,C,Q,锁存器,(三)实例,开关状态输入接口电路 74LS244是双4位的三态缓冲器,由G1和G2各控制4位的选通。 注意:电阻用来限制输入电流。,发光二极管输出接口电路 74LS373是8位的三态锁存器,由LE控制锁存,OE控制选通。 注意:电阻用来限制输入电流。,9-1 可编程并行通讯接口芯片8255A,8255A 是INTEL系列的并行接口芯片,由于它是一种可编程的外部接口部件,通常作为微机系统总线与外部设备的接口控制部件,可通过软件来设置芯片的工作方式,用8255A连接外部设备时,通常不需要附加外部电路,给使用带来很大的方便。 IBM PC就是采用8255A与键盘、扬声器等其他外设进行接口。 40PIN、DIP封装,芯片体积大,设计简单的系统通常不用。 在目前的主板中,功能已经集成在芯片组中,但使用和编程与8255A完全一致。,8255A内部结构,8255A内部组成(1):,数据端口A,B,C 8255有3个8位的I/O端口,设计人员可以用软件使它们分别作为输入端口或输出端口。 端口A:对应了1个8位的数据输入锁存器和1个8位的数据输出锁存/缓冲器。所以口A作为输入或输出时,数据均受到锁存。 端口B:对应了一个8位的数据输入缓冲器和1个8位的数据输出锁存器/缓冲器。所以口B作为输入端口时,不会对数据进行锁存,而作为输出端口时,数据会受到锁存。 端口C:与口B基本一致,对应了一个8位数据输入缓冲器和1个8位的数据输出锁存/缓冲器。所以口C作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存。 在使用中,端口A和B通常作为独立的输入端口或输出端口,端口C则配合端口A和B的工作。具体讲,就是口C通过控制命令被分成2个4位端口,每个4位端口包含1个4位的输入缓冲器和1个4位的输出缓冲器,他们分别用来为端口A和B输出控制信号和输入状态信号。,8255A内部组成(2):,A组控制和B组控制 这两组控制电路一方面接收芯片内部总线上的控制字,一方面接收来自读/写控制逻辑电路的读/写命令,由此决定两组端口的工作方式和读写操作。 A组控制电路控制端口A和口C的高4位(PC7PC4)的工作方式和读/写操作。 B组控制电路控制端口B和口C的低4位(PC3PC0)的工作方式和读/写操作。,8255A内部组成(3):,读/写控制逻辑电路 读/写控制逻辑电路负责管理8255的数据传输过程。它接收CS及来自系统地址总线A1,A0(8086系统中为A2,A1)和控制总线的输入信号RESET,WR,RD,将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发送给这两个部件,以完成对数据、状态信息和控制信息的传输。 数据总线缓冲器 8255的数据总线缓冲器是双向三态的8位数据缓冲器,通过它直接与系统的数据总线相连。输入数据、输出数据、CPU发给8255的控制字都是通过这个缓冲器传送的。,说明:,(1) A1A0 端口 口线 00 端口A PA7PA0 01 端口B PB7PB0 10 端口C PC7PC0 11 对控制端口写控制字 (2) 端口C又可以分成“上C口”和“下C口”2个部分,用作A口和B口的控制信号线,所以把A口+上C口称为A组,B口+下C口称为B组。 (3) PA口:输入有锁存器,输出有锁存器和缓冲器, PB和PC口:输入有缓冲器,输出有锁存器和缓冲器。,(2) 与CPU相连的引脚 D7D0:双向数据线,与系统数据总线相连。CPU通过它向8255A发送命令、数据;8255A向CPU回送状态、数据。 CS:片选信号,低电平有效。由系统地址总线经地址译码器产生,是8255A芯片被选中的信号。只有信号有效,CPU才能对8255A进行读写。当为高电平时,切断CPU与芯片的联系。 RD:读信号,低电平有效。与系统读控制线相连,当有效时,CPU可以从8255A中读取输入数据。 WR :写信号,低电平有效。与系统写控制线相连,当有效时,CPU可以向8255A写入控制字或数据,完成输出指令的功能。 A1、A0:端口选择信号。与系统地址总线低位相连,用来对8255A内部三个数据端口及一个控制端口寄存器进行寻址。 RESET:复位信号,高电平有效。与系统复位信号线,或自行设置的复位信号线相连。复位造成的结果是把所有内部寄存器清“0”,且三个数据端口被自动设置为输入端口。,(1) 与外设一边相连的引脚 PA7PA0:端口A数据线。 PB7PB0:端口B数据线。 PC7PC0:端口C数据线。,二. 8255A引脚说明,(3) 电源和地线:Vcc和GND。,8255A的控制信号和传输动作的对应关系,三. 8255A控制字,8255A可通过指令在控制端口中设置控制字来决定它的工作。其控制字可分为两类: 芯片各端口的方式选择控制字 它可使8255A的3个数据端口工作在不同的工作方式。 方式选择控制字总是将3个数据端口分为两组来决定工作方式,即端口A和端口C的高4位为1组,端口B和端口C的低4位为1组。 端口C按位置1/置0控制字 它可使端口C中的任何一位进行置位或复位。 这两类控制字通过最高位即D7位为0或1来区别。方式选择控制字的最高位为1,而端口C置1/置0的控制字最高位为0。,1. 方式选择控制字:,对A1A0=11的端口写入D7=1的数据,2. 端口C置1/置0控制字:,对A1A0=11的端口写入D7=0的数据表示对口C进行位操作。(注意:对A1A0=10的端口操作表示对C口进行字节操作。),3. 编程举例:,设 A、B、C数据口地址分别位60H、 61H、62H、控制口端口地址 63H A口方式0,输出、B口方式0,输入,C口高4位输出,C口低4位输入 MOV AL,10000011B OUT 63H,AL,PC7置1,PC3置0,MOV DX,63H MOV AL,0000,1111B;PC7置1 OUT DX,AL MOV AL,0000,0110B;PC3置0 OUT DX,AL,四. 8255A工作方式,1. 工作方式0:基本的输入/输出方式。 A口、B口、上C口、下C口都可以独立设置作为输入或输出使用。 适合用于无条件或查询式传送。 2. 工作方式1:应答式输入输出方式。 A口、B口可以分别作为数据口工作在方式1。 需要使用C口中特定的引脚作为选通和应答使用。 C口中其余的引脚仍可工作在方式0,定义为输入或输出使用。 适合用于中断式传送和程序查询方式I/O传送。,图例1,外设响应信号 表示外设已经接收到数据,输出缓冲器满信号 表示CPU已经输出了数据,中断请求信号 请求CPU再次输出数据,说明: 当CPU向端口A输出数据以后,在WR的上升沿使OBFA变为低电平。 当外设接收到数据以后,发出一个负脉冲ACKA送给8255A,使OBFA变为高电平。 ACKA和OBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,以便使CPU再次输出数据。WR的下降沿使INTRA恢复低电平。 可以通过对PC6的置位和复位来设置INTEA。,图例2,数据选通信号 表示外设已经准备好数据,输入缓冲器满信号 表示A口已经接收数据,中断请求信号 请求CPU接收数据,说明: 当外设数据准备好以后,发出一个负脉冲选通信号STB ,使A口打开锁存器接收数据。 A口接收到数据以后,发出IBFA,由RD信号的上升沿使IBFA恢复低电平。 STB和IBFA都变为高电平以后,如果INTEA允许,则8255A发出中断请求信号,以便使CPU接收数据。RD信号的下降沿使INTRA恢复低电平。 可以通过对PC4的置位和复位来设置INTEA。,图例3 图例4 可通过对PC2置位或复位来设置INTEB。,B口、方式1、输出,3. 工作方式2:双向应答式输入输出方式。 A口可以作为数据口工作在方式2。相当于是A口工作在方式1的输入和输出的叠加。,用PC6设置INTE1, 用PC4设置INTE2。,输入和输出中断通过 或门输出INTR信号。,4. C口状态字,8255A工作在方式0时,C口各位作输入输出用。当工作在方式1和方式2时,C口产生与外设的联络信号。此时。读入C口各位的内容可检查或测试外设的状态。C口的状态字如下:,(1)方式1,(2)方式2,应用举例,例1:在一系统中,要求8255工作在方式0,A口为输入,B口、C口为输出。(8255的端口地址为60H63H) Mov al, 90h Out 63h, al ;送控制字到控制字寄存器。 Call delay1 In al, 60h ; 从A口输入数据 Call delay2 mov al, data1 Out 61h, al ; 从B口输出数据 Call delay3 mov al, data2 Out 62h, al ; 从C口输出数据,0,例2:假定在一个系统中,要求8255工作在方式1,端口A为输出,端口B为输入,PC4PC5 为输入,禁止端口B中断。,Mov al, 0afh ;控制字 Mov dx, xxxxxx11b ; 控制寄存器地址 Out dx, al ; 送入控制字寄存器 Mov al, 0dh ; A口的INTE(PC6)置1 Out dx, al ; 送入控制字寄存器 Mov al, 04h ; B口的INTE(PC2)置0 Out dx, al ; 送入控制字寄存器,例3:假定在一个系统中,端口A工作在方式2,端口B工作在方式0且为输入,端口C的三位PC0PC2 位输入。,Mov al, 11xxx011b ;控制字 Mov dx, xxxxxx11b ; 控制寄存器地址 Out dx, al ; 送入控制字寄存器,9-2 8255A的应用举例,8255A作为开关K0K3及七段LED显示器接口。要求开关设置的二进制信息,由PC0PC3输入,经程序转换为对应的七段LED显示器的字形代码后,由PA口输出显示。,各端口地址为:E8HEEH,8255A各端口地址确定:,8255A方式选择控制字:,81H,实现操作的具体程序如下:,MOV DX, 0E8H ;指向端口A OUT DX, AL ;输出字形码显示 HLT,MOV DX,0EEH ;设置8255A工作方式 MOV AL,81H OUT DX,AL,MOV DX,0ECH ;指向端口C,读开关状态 IN AL,DX AND AL,0FH,LEA BX,TABLE ;显示代码表首地址送BX XLAT ;查表,取出相应的字形码送AL,LED显示器的结构,LED显示器的外形,LED显示器的工作原理,软件译码法,方案1 共阳极LED显示器与同相驱动器接口,+5V,D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a,0(C0H) 1 1 0 0 0 0 0 0,9(90H) 1 0 0 1 0 0 0 0,1(F9H) 1 1 1 1 1 0 0 1,2(A4H) 1 0 1 0 0 1 0 0,3(B0H) 1 0 1 1 0 0 0 0,4(99H) 1 0 0 1 1 0 0 1,5(92H) 1 0 0 1 0 0 1 0,6(82H) 1 0 0 0 0 0 1 0,7(F8H) 1 1 1 1 1 0 0 0,8(80H) 1 0 0 0 0 0 0 0,方案2 共阳极LED显示器与反相驱动器接口,D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a,0(3FH) 0 0 1 1 1 1 1 1,9(6FH) 0 1 1 0 1 1 1 1,1(05H) 0 0 0 0 0 1 1 0,2(5BH) 0 1 0 1 1 0 1 1,3(4FH) 0 1 0 0 1 1 1 1,4(66H) 0 1 1 0 0 1 1 0,5(6DH) 0 1 1 0 1 1 0 1,6(7DH) 0 1 1 1 1 1 0 1,7(07H) 0 0 0 0 0 1 1 1,8(7FH) 0 1 1 1 1 1 1 1,七段LED显示器接口电路,利用专用接口芯片7447驱动LED显示器,7447为BCD七段译码器 与单个LED的连接,R=(51.5 0.2)V/ 20mA=168 取R=150 ,静态显示器的设计,器件多,输出后不管,显示控制程序,LEA SI,BUFF MOV CX,07H MOV DL,01H,MOV AL,SI,OUT POTB,AL MOV AL,DL OUT POTA,AL,INC SI ROL DL,LEA SI,BUFF MOV CL,40H MOV BX,LED-ADD,DISI:MOV AL,SI XLAT,MOV DX, POTB OUT DX,AL MOV AL,CL MOV DX, POTA OUT DX,AL,INC SI SHR CL,JNZ DISI,并行打印机接口电路,打印机接口信号,打印机接口信号,主程序完成中断的准备工作和设置8255A的工作方式控制字等,中断服务程序完成字符的输出。,PUSH DS LEA DX,ROUT MOV AX,SEG ROUT MOV DS,AX MOV AL,0AH MOV AH,25H INT 21H POP DS ; 设置中断向量 MOV AL,0A0H ;方式字 OUT 0FFH,AL MOV AL,0DH ;PC6置1 OUT 0FFH,AL;中断允许 MOV AL,20H ;输出空格字符 OUT 0FCH,AL MOV BX,FLAG STI,ROUT: PUSH AX MOV AL,BX ;取字符 OUT 0FCH,AL ;输出 INC BX POP AX IRET,键盘接口,键盘是微型计算机系统中最常用的一种输入设备。键盘有两种类型:编码键盘和非编码键盘。,编码键盘能自动提供对应于被按键的编码,如ASCII码,并能同时产生一个脉冲通知CPU。编码键盘还具有处理抖动和多键串键的保护电路。这种键盘的优点是使用方便,但需要较多的硬件,价格昂贵。,非编码键盘有一组开关组成,提供行和列的键盘矩阵,其工作过程:按键的识别;按键代码的产生;防止串键和消除抖动等均由程序来实现。故这种键盘的优点是所需要的硬件较少,价格便宜,宜用微机化仪表的面板的键盘。,工作原理,键盘扫描过程:,(1)检测键盘上所有的键是否都松开,反复检测直至全松开。,(2)检测键盘上是否有键按下,反复检测直至有键按下。,(3)若有键按下,则消除键抖动后(硬件消抖动电路,软件延时消抖动下),再确认该键是否按下。,(4)对按下的键进行编码,即将该键所在的行号和列号转换成16进制代码。,(6)根据代码转相应功能子程序。,注:若在按键时,多个键盘同时按下,可取最后松开的按键作为本次按下的键。,(5)检测该键是否松开,反复检测直至松开。,初始化: PORT-A EQU 0FF9H ;8255A口地址 PORT-B EQU 0FFBH ;8255B口地址 PORT-CTL EQU 0FFFH ;8255控制口地址 TABLE DB 77H, 7BH, 7DH,7EH DB 0B7H, 0BBH, 0BDH,0BEH DB 0D7H, 0DBH, 0DDH,0DEH DB 0E7H, 0EBH, 0EDH,0EEH,8255初始化:方式0,A口输出,B口、C口输入 MOV DX, PORT-CTL ;DX指向控制口 MOV AL, 10001011B ;控制字 OUT DX, AL ;写入控制字,MOV DX, PORT-A ;DX指向A口 MOV AL, 00H OUT DX, AL,WO: MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入B口 AND AL,0FH CMP AL,0FH ;各键均未按下 JNE WO ;否,继续等,WR: IN AL, DX ;输入B口 AND AL,0FH CMP AL,0FH ;是否有键按下 JE WR ;否,等待,MOV CX, 16EAH DELAY: LOOP DELAY,IN AL, DX ;输入B口 AND AL,0FH CMP AL,0FH ;是否有键按下 JE WR ;否,等待,MOV AL,0FEH ;置行扫描初值 MOV CL,AL ;暂存于CL N-R: MOV DX,PORT-A OUT DX, AL ;输出行扫描值 MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入B口 AND AL, 0FH CMP AL, 0FH ;有键按下 JNE ENCODE ;是,转编码 ROL CL, 1 ;否,修改扫描初值 MOV AL, CL JMP N-R ;扫描下一行,ENCODE: MOV BX,000FH ;置键代码初值 IN AL,DX ;读入行列号 NEXT-T: CMP AL, TABLEBX ;与表中行列号相等吗 JE DONE ;相等转DONE DEC BX ;不相等,修改位置 JNS NEXT-T ;未查完,继续 MOV AH, 01 ;查完,未查到,置出错标志 JMP EXIT ;退出 DONE: MOV AL, BL ;键代码送AL MOV AH, 00 ; 键有效标志00AL EXIT: RET,CPU向端口A送全“0”到行线,再从B口读入列状态。若读入的状态为全“1”,表示无键按下。,CPU向端口A的PA0送“0” ,其余行线送“1”,再从B口读入列状态。若读入的状态为全“1”,表示第0行无键按下;否则闭合键在第0行上。,在第0行无键按下的情况下,依此对行1,行2,行7进行上述操作,找出按键所在的行和列的编号。,初始化: PORT-A EQU 0FFF8H ;8255A口地址 PORT-B EQU 0FFFAH ;8255B口地址 PORT-CTL EQU 0FFFEH ;8255控制口地址,8255初始化:方式0,A口输出,B口、C口输入 MOV DX, PORT-CTL ;DX指向控制口 MOV AL, 10000011B ;控制字 OUT DX, AL ;写入控制字,WAITK:MOV DX, PORT-A ;DX指向A口 MOV AL, 00H OUT DX, AL MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入B口 CMP AL, 0FFH ;各键均未按下 JZ WAITK ;无键按下继续等,MOV CX, 16EAH DELAY: LOOP DELAY ;延时20ms,MOV BL,0 ;送键号初值 MOV BH,11111110B ;置初始扫描模式 MOV CX,8,FNDROW: MOV AL,BH MOV DX,PORT-A OUT DX, AL ;输出行扫描值 MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入列码 COM AL, 0FFH ; JNE FNDCOL ;有键按下查列号 ROL BH, 01 ;否,修改扫描初值 ADD BL, 8 ;指向下一行键号初值 LOOP FNDROW ;扫描下一行 JMP DONE ;8行扫描完,无键按下 FNDCOL: ROR AL,1 ;查哪一列有键按下 JNC RIGHT ;查到按下键的列号 INC BL JMP FNDCOL RIGHT: : ;按下键的编号在BL中,8255A在PC机中的应用,PC/XT机中有一片8255A,用作键盘输入和系统设置开关输入的并行接口,同时提供扬声器发声和其他控制信号。 端口地址是60H63H。正常工作时A、B、C三个口都是方式0,其中A口、C口输入,B口输出。工作方式控制字是: 99H。,在PC机中,主板上产生接口电路芯片片选信号的电路: 由于A4、A3、A2既没有作为片选地址线,也没有作为片内地址线使用,所以是不完全译码。端口地址会有重叠。 例如:70H73H、64H67H等都同于60H63H。,74LS138,G1,G2A,G2B,Y0,Y1,Y2,Y3,8237.CS (00H1FH),8259A.CS (20H3FH),8253.CS (40H5FH),8255A.CS (60H7FH),AEN,A9,A8,A7,A6,A5,IBM PC/XT中 8255A5 的使用分析,在 IBM PC/XT中,8255A-5工作在无应答联络信号的基本输入输出方式(方式0)下. 1. 在加电后系统自测试时,CPU通过PA口输出部件检测标志,如果检测到关 键性故障停机时,测量PA口的输出电平,可以确定发生故障的部件。 PA口输出的部件检测标志主要有以下几种: PA1 PA2 PA0 0 0 1 BIOS累加和错 0 1 0 82535 错 0 1 1 8237A5错 1 0 0 前16KROM错 1 0 1 8259错 1 1 0 CRT适配器错,8255在 正常工作时的功能,2. 系统配置开关,3. 喇叭接口, 由系统并行接口芯片8255的PB口的最低两位: PB0(TIM2GATESPK) PB1(SPKRDATA) 控制喇叭发声。, 定时计数器8253工作在方式3下,预置初值为 533H(1331D), 输出频率为:1.1931816 MHZ / 1331 = 896 HZ,方式3,1.1931816 MHZ,0,1331,896 HZ,用程序控制发声 系统中,喇叭只产生 896HZ 的音调。如果想改变这个音调,使喇叭产生任意 频率的音调,该怎么做? 控制发声频率 改变计数初值 计数初值 = 1.1931816 MHZ / 给定频率 = 1234dcH / 给定频率 控制声音长短 延时 用BIOS功能调用 INT 1AH;(由于8253计数器0 55ms申请一次中断,所以此方法实现不了任意时间的延时)。 改变 8253 计数器0 的计数初值,使其可以以任意时间申请中断;太复杂)。 延时子程序 ; 综上所述,我们得到了使喇叭发声的频率和时间,因此,就可以控制喇叭发声了。,下面我们看一个喇叭发声过程子程序。 声音频率在 di 寄存器中;发声时间在bx中(几个10ms)。,Sound proc far push ax push dx push di push bx push cx mov al, 0b6h ; 8253控制字:通道2,方式3, out 43h, al ;对计数器两次写操作,二进制计数 mov dx, 12h mov ax, 34dch div di out 42h, al mov al, ah out 42h, al ;计数初值送入计数器2 in al, 61h mov ah, al ;保存原值 or al, 3 out 61h, al ;将8255PB口最低两位置1,Delay: mov cx, 2801 DL10ms: loop DL10ms dec bx jnz delay mov al, ah out 61h, al ;恢复原值 pop cx pop bx pop di pop dx pop ax ret Sound ends,(2) 用喇叭凑乐。,1小节2拍,800ms,发声频率 sog_f dw 330, 330, 330, 392, 330, 330, 294, 262, 220, 262, 294, 330, 0 发声时间 sog_t dw 20, 20, 20, 20, 40, 20, 20, 20, 20, 20, 20, 80, 0,(C) 130.8 146.8 164.8 174.6 190.0 220.0 246.9 261.7 293.7 329.6 349.2 392.0 440.0 493.9 (C) 523.3,138.6 (C#, Db) 155.6 (D #, Eb) 185.0 (F #, Gb) 207.7 (G #, Ab) 233.1 (A #, Bb) 277.2 (C #, Db) 311.1 (D #, Eb) 370.0 (F #, Gb) 415.3 (G #, Ab) 466.2 (A #, Bb),(中音),Stack segment db 100 dup(?) Stack ends Data segment Sog_f dw 330, 330, 330, 392, 330, 330, 294, 262, 220, 262, 294, 330, 0 Sog_t dw 20, 20, 20, 20, 40, 20, 20, 20, 20, 20, 20, 80, 0 Data ends Code segment assume cs:code, ds: data, ss: stack Sign proc far push ds xor ax, ax push ax mov ax, data mov ds, ax lea si, sog_f lea bp, ds:sog_t ;设置数据 call play ;调用演奏子程序 ret Sign endp,Play proc push bx push di push si push bp Freq: mov di, si ;送频率信号 cmp di, 0 je end_play mov bx, ds:bp ;送发声时间 call sound ;调用发声子程序 add si, 2 add bp, 2 jmp freq End_play: pop bp pop si pop di pop bx ret Play ensp code ends end sign,4. 键盘接口,(1) 键盘工作原理,键盘是由一组排列成矩阵方式的按键开关组成。通常分成全编码键盘和非编码键盘两类。 全编码键盘 对每一个按键,通过全编码电路产生唯一对应的编码信息(如ASC码)。 优点:响应速度快; 缺点:硬件结构复杂,且复杂性随着键数的增加而增加。 非编码键盘 不直接提供按键的编码信息,而是利用简单的硬件和一套专用的键盘程序 来识别按下键的位置(即提供位置码,或叫扫描码)。(以上由键盘电路实现)。 然后由处理机将位置码通过查表程序转换成相应的编码信息(如ASC 码)。(以上由键盘接口电路及BIOS键盘处理程序实现)。 优点:可通过软件编码重新定义键盘的某些键。 缺点:速度不如全编码键盘。,IBM PC/XT 采用非编码键盘。,非编码键盘 对非编码键盘, 我们怎样确定按下键的位置呢? 可采用行扫描法;行列扫描法;行反转法; IBM PC/XT 采用行列扫描法。,方法: 先在列线上加步进的 “1” 信号,依次检查哪一列上有键按动。 (向列扫描线加 “1” 信号,若 行接收线由按动的键时,能从交点上获得“1”信号,否则为“0”。 然后再在航线上加步进的“1”信号, 根据两者检查的结果确定被按键的位置。,IBM PC/XT键盘位置及对应的扫描码。,键位置,接通扫描码,断开扫描码,键名称,(2) PC 键盘电路,键盘 接口电路,键盘内,串-并转换,8255,工作过程: 8048 送出计数信号CNT1CNT64到键盘扫描电路,通过行译码器给168的 开关矩阵的行列线加步进信号,扫描键盘。 (8048单片机:组成 8位CPU、RAM、ROM、定时/计数器等; 功能 键盘扫描确定键盘位置;生成扫描码等。,(3) 8255 直接用于键盘接口,4 * 4 =16 矩阵键盘,开始扫描: (1) PA0 PA3 , 送出0, 读PC3 PC0; (2) 假定 0 键按下,读进值:1110 ,列值; (3)改变A, C口工作方式,A 输入,C输出 (4)将列值重新输出, 从A口读入 (5)读入行值:PA3-PA0 , 1110 (6) 合并列值和行值,得到键码:1110 + 1110 = 11101110 EEH, 即为0键键码。,行反转法识别闭合键时,要将行线接一个并行口,先让它工作在输出方式下,将列线也接一个并行口,先让它工作在输入模式方式下。程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线的值。如果此时有某一键被按下,则必定会使某一列线值为0。然后,程序再对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式,并且将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必为0。这样,当一个键被按下时,必定可以读取一对唯一的行值和列值。,请自己阅读课本程序,第五节 打印机并行接口,打印机并行接口标准 打印机并行接口通常采用Centronics并行接口标准,共有36个引脚信号。其说明见表1。 在系统连接时,打印机一端是36芯D型插座,主机一端是25芯D型插座。主机与打印电缆之间的连线见表2。,表1 Centronics并行打印接口标准,表1 Centronics并行打印接口标准(续1),表1 Centronics并行打印接口标准(续2),表2 主机与打印机接口信号连线表,表2 主机与打印机接口信号连线表(续),打印机适配器端口直接编程 查询方式 中断方式 BIOS功能调用 在BIOS系统中提供了打印机管理程序,用户可使用INT 17H功能调用,完成字符打印。 DOS功能调用 用户可调用INT 21H的5号子功能,完成字符打印功能。,打印机接口编程实例,查询方式 例1:8255A作为连接打印机的接口,工作在方式0,输出。 工作过程:需要打印时,查询打印机是否忙?不忙时通过8255A发送一个字符给打印机。为使打印机接收数据,要生成一个选通脉冲(初始值是1,置0,再置1 )。,8088,8255A,打印机,D7D0,PA,PC6,PC2,STB,BUSY,查询式打印机接口示意图,例题1 题解:,A口:方式0、输出数据 下C口:方式0、PC2输入状态信号 上C口:方式0、PC6输出选通信号,方式控制字为: 10000001B。,为增强驱动能力, 可加门电路驱动,设端口地址是:0D0H0D3H,要打印的字符放在BL中。 程序如下: Setup: MOV AL,81H ;设置工作方式 OUT 0D3H,AL MOV AL,0DH ; PC6置1,0DH=0000,1101 OUT 0D3H,AL Ready: IN AL,0D2H ;读PC口 TEST AL,04H ; 打印机忙否(PC2 =BUSY=?) JNZ Ready ;PC2=1,打印机忙,等待 MOV AL,BL ;打印的字符送AL中 OUT 0D0H,AL ; BL中的字符送PA口 MOV AL,0CH ;置PC6为0 OUT 0D3H,AL ; 置PC6=0,即=0;00001100=0CH INC AL ;置PC6为1 OUT 0D3H,AL ;置PC6=1,即=1,00001101=0DH ,中断方式 例2:使用8255A的工作方式1,设计中断方式的打印机接口。 工作过程:在主程序中设置中断向量,开放中断(IF标志、8259A的IMR、8255A的INTE)。在中断服务程序中,发送打印字符、选通脉冲。,8088,8255A,打印机,D7D0,PA,PC2,PC6,STB,ACK,中断式打印机接口示意图,例题2 题解:,A口:方式1、输出数据 PC6输入外设响应信号 下C口:方式0、PC2输出选通信号,PC3,IR2,INTR,INTA,8259A,方式控制字为: 10100000B。,设端口地址是:0D0H0D3H,用DI指示字符在缓冲区的位置。 程序如下: 1、中断服务程序:(假设开始位置是2000H:1000H) PRNDRV: MOV AL, DI ;打印的字符送AL中 OUT 0D0H,AL INC DI MOV AL,4 ;置PC2为0 OUT 0D3H,AL MOV AL,5 ;置PC2为1 OUT 0D3H,AL MOV AL,20H ;向8259A发EOI命令 OUT 20H,AL IRET ;该程序做了简化处理。,2、主程序 INIT8259A:MOV AL,13H ;初始化8259A OUT 20H,AL MOV AL, 8 OUT 21H,AL MOV AL,9 OUT 21H,AL INIT8255A:MOV AL,0A0H ;设置8255A工作方式 OUT 0D3H,AL MOV AL,5 ;置PC2为1 OUT 0D3H,AL,INSTDRV:MOV AX,0 ;安装中断向量 MOV DS,AX ;IR2的中断类型是0AH MOV Word Ptr 0AH*4 ,1000H MOV Word Ptr 0AH*4+2 ,2000H SETUPIF:MOV AL,0DH ;设置8255A的INTEA OUT 0D3H,AL IN AL,21H ;设置8259A的IMR,允许IR2 AND AL,0FBH OUT 21H,AL STI ;开中断,3、打印驱动程序 假设字符缓冲区从3000H:0000H处开始存放, 在3000H:1000H处存放一个字,表示打印字符数。 PRINT: MOV AX,3000H MOV DS,AX MOV DI,0000H INT 0AH ;第一次中断,可以软件触发 LOOP1: CMP DI,1000H JB LOOP1 MOV AL,0CH ;关闭INTEA OUT 0D3H,AL 说明:打印结束也可以在中断服务程序中进行判断。,例3 已知外设为一个纸带输入机(光电输入机),使用8255为纸带输入机和PC/XT机设计一个接口电路,采用中断方式输入,画出硬件逻辑图并设计相应程序。设8255口地址为280H283H,选A组方式1输入组态。 纸带输入机控制分析: STOP/GO:光电机启/停控制。 STB:由中导孔产生的选通信号。 ACK:响应信号。 当STOP/GO低电平且ACK低电平时启动光电机走一排孔,输入一个字节。,参考程序: ZDIN SEGMENT ASSUME CS:ZDIN, DS:ZDIN ASSUME ES:ZDIN, SS:ZDIN ORG 100H START PROC CLI MOV DX, OFFSET PPI_INT MOV AL, OAH MOV AH, 25H INT 21H IN AL, 21H AND AL, 0FBH OUT 21H, AL STI,MOV DX, 283H MOV AL, 0B3H OUT DX, AL MOV AX, OFFSET DATA_BUF MOV BUF_POINT, AX MOV AL, 0FH OUT DX, AL MOV AL, 9H OUT DX, AL MOV DX, OFFSET S3 INT 27H INT 20H DATA_BUF DB 512 DUP (0) BUF_POINT DW ? START ENDP,PPI_INT PROC STI PUSH AX PUSH BX PU

温馨提示

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

评论

0/150

提交评论