1、第第8章章 并行接口并行接口8255及应用及应用第一节第一节 可编程并行接口可编程并行接口82558255并行接口概念并行接口概念 并行通信就是把一个字符的各数位用几条线并行通信就是把一个字符的各数位用几条线同时进行传输同时进行传输,并行通信的信息传输速度快并行通信的信息传输速度快,信息信息率高。用于数据传输要求较高,距离较短的场合率高。用于数据传输要求较高,距离较短的场合 并行通信没有对同步和异步传输的严格定义。并行通信没有对同步和异步传输的严格定义。如果如果CPU用一个时序信号来管理接口和设备的动用一个时序信号来管理接口和设备的动作,这样的并行传输称为作,这样的并行传输称为同步传输同步传输
2、;如果;如果CPU和和接口设备之间只用应答信号联系,这样的传输称接口设备之间只用应答信号联系,这样的传输称为为异步传输异步传输。1.8255的内部结构的内部结构8255是是Intel系列的并行接口芯片,它是可编程的,可以用系列的并行接口芯片,它是可编程的,可以用来设置其工作方式,不需要再附加外部电路。来设置其工作方式,不需要再附加外部电路。数数据据总总线线缓缓冲冲器器读读/写写控控制制逻逻辑辑A组组控控制制A组组端端口口A(8)A组组端端口口C上上半半部部(4)B组组端端口口C下下半半部部(4)B组组端端口口B(8)B组组控控制制RDWRA0A1RESETCSI/O PA7PA0I/O PC7
3、PC4I/O PC3PC0I/O PB7PB0DB8位位内内部部数数据据总总线线数数据据总总线线缓缓冲冲器器读读/写写控控制制逻逻辑辑A组组控控制制A组组端端口口A(8)A组组端端口口C上上半半部部(4)B组组端端口口C下下半半部部(4)B组组端端口口B(8)B组组控控制制RDWRA0A1RESETCSI/O PA7PA0I/O PC7PC4I/O PC3PC0I/O PB7PB0DB8位位内内部部数数据据总总线线1.数据端口数据端口 A,B,C:3个个8bit数据端口,有各自的特点数据端口,有各自的特点1)端口端口A2)1个个8bit的数据的数据输入锁存输入锁存,一个一个8bit的数据的数据
4、输出锁存输出锁存;2)端口端口B3)1个个8bit的数据的数据输入缓冲输入缓冲,一个一个8bit的数据的数据输出锁存输出锁存;3)端口端口C1个个8bit的数据的数据输入缓冲输入缓冲,一个,一个8bit的数据的数据输出锁存输出锁存;端口端口C常常被常常被分成分成2个个4位端口位端口,分别作为端口,分别作为端口A和端口和端口B的输入输出的输入输出控制线和状态信号线控制线和状态信号线,与端口,与端口A、端口端口B配配合使用。合使用。2.A组控制和组控制和B组控制组控制接受接受CPU对控制端口的命令对控制端口的命令(控制字控制字),可以独立地设置,可以独立地设置8255中中3个端口的工作方式个端口的
5、工作方式3.数据总线缓冲器数据总线缓冲器双向三态双向三态8bit数据缓冲器,与数据缓冲器,与CPU的数据总线相连,同的数据总线相连,同时与时与8255的内部数据总线相连,接受从的内部数据总线相连,接受从CPU发出的控制发出的控制字字,输入输出数据输入输出数据,同时也向同时也向CPU传输传输8255的状态字的状态字4.读写控制逻辑电路读写控制逻辑电路接受接受CPU发送的读写信号,其中发送的读写信号,其中A0,A1寻址寻址8255内部寄内部寄存器,共有存器,共有3个数据端口,个数据端口,1个控制端口。个控制端口。1PA32PA2PA13PA0440393837PA4PA5PA6PA756GND7A
6、1836353433RESETD0D19A010PC7PC611PC51232313029D2D3D4D513PC414PC0PC115PC21628272625D6D7VCCPB717PC318PB0PB119PB22024232221PB6PB5PB4PB3WRRDCSA组组B组组2.8255的引脚信号的引脚信号8255ARDWRA0A1CSRESETD0D7I/O PA7PA0I/O PB7PB0I/O PC3PC0I/O PC7PC4CPU DBCPU CBCPU AB外外设设PA7PA0,PB7PB0,PC7PC0与外设相连的独立地址的与外设相连的独立地址的并行扩展口。并行扩展口。D
7、7D0:与与CPU的数据总的数据总线相连,传输线相连,传输8255的命令的命令字或字或I/O数据。数据。RESET:高有效高有效,8255内部寄内部寄存器清零存器清零,3个端口均为输入。个端口均为输入。8255ARDWRA0A1CSRESETD0D7I/O PA7PA0I/O PB7PB0I/O PC3PC0I/O PC7PC4CPU DBCPU CBCPU AB外外设设CS:片选信号片选信号,为低,为低8255开始工作开始工作RD:为:为低低,读有效读有效,CPU可以从可以从3个端口读入数据。个端口读入数据。WR:为:为低低,写有效写有效,CPU可以向可以向3个端口输出数据,个端口输出数据,
8、同时利用写信号可以向同时利用写信号可以向8255的控制口写控制命的控制口写控制命令,设置令,设置8255的工作方式。的工作方式。3.8255的控制字的控制字控制字分两类,一类是控制并行口的工作方式的命控制字分两类,一类是控制并行口的工作方式的命令,一类是专门对令,一类是专门对C口各位的设置。这两类控制字占用一口各位的设置。这两类控制字占用一个地址,用命令的最高位个地址,用命令的最高位D7位进行区分位进行区分,所以控制字的最所以控制字的最高位高位D7称为控制字标志位称为控制字标志位。为为1为方式选择字为方式选择字,为为0为端口为端口C设置字。设置字。D7D6D5D4D3D2D1D0格式格式字字A
9、组工作组工作方式方式A口口I/OC口高半字口高半字节节I/OB组工作组工作方式方式B口口I/OC口低半字口低半字节节I/O100 方式方式001 方式方式110 方式方式21输入输入0输出输出1 输入输入0 输出输出0 方式方式01 方式方式11 输入输入0 输出输出1 输入输入0 输出输出 A 方式选择控制字方式选择控制字8255ARDWRA0A1CSRESETD0D7I/O PA7PA0I/O PB7PB0I/O PC3PC0I/O PC7PC4CPU DBCPU CBCPU AB外外设设A1,A0:8255内部寄存器地址寻址信号,内部寄存器地址寻址信号,8255内部有内部有4个个端口端口
10、,A,B,C与控制口。与控制口。A1 A0 端口端口00A口口01B口口10C口口11控制口控制口说明:说明:1)A口有口有3种工作方式种工作方式方式方式0:基本:基本I/O方式;方式;方式方式1:单向选通:单向选通I/O方式,输入或输出只能选一种;方式,输入或输出只能选一种;方式方式2:双向选通:双向选通I/O方式,一次设置后通道既可以做输入方式,一次设置后通道既可以做输入又可以做输出。又可以做输出。2)端口端口B有两种工作方式有两种工作方式 即方式即方式0与方式与方式13)A口和口和B口工作在方式口工作在方式0时,时,C口也可同时工作在方式口也可同时工作在方式0,且且C口高半字节和低半字节
11、可以分别独立工作。口高半字节和低半字节可以分别独立工作。4)A口工作在方式口工作在方式1时,时,C口的部分位成为口的部分位成为A口的信号联络口的信号联络线,但线,但B口仍可以独立工作。不要求口仍可以独立工作。不要求A,B同为输入或输同为输入或输出。出。B口工作于方式口工作于方式1也是一样。也是一样。5)A口工作于方式口工作于方式2,C口的大部分位线用于口的大部分位线用于A口的信号联口的信号联络线,络线,B口仍可以独立工作于方式口仍可以独立工作于方式0或方式或方式1。D7D6D5D4D3D2D1D0格式格式字字A组工作组工作方式方式A口口I/OC口高半字口高半字节节I/OB组工作方组工作方式式B
12、口口I/OC口低半字口低半字节节I/O100 方式方式001 方式方式110 方式方式21输入输入0输出输出1 输入输入0 输出输出0 方式方式01 方式方式11 输入输入0 输出输出1 输入输入0 输出输出一系统采用一系统采用8255作作I/O接口,其控制口的地址为接口,其控制口的地址为8BH,将将端口端口A设置为方式设置为方式0输入,端口输入,端口B B设置为方式设置为方式1 1输出,则输出,则A口口的地址为的地址为_,B口地址为口地址为_,控制字为,控制字为_。8BH 1000 1011 1000 1000 88H 1000 1001 89H88H89HD7D6D5D4D3D2D1D01
13、001010094HJ1:A口,方式口,方式0,输出,输出 B口,方式口,方式0,输入,输入 C口高,输出;口高,输出;C 口低,输入口低,输入 J2:A口,方式口,方式0,输入,输入 B口,方式口,方式1,输出,输出 C口高,输出口高,输出 J1,J2地址地址A7A6A5A4A3A2A1A0J1J210010088H8EH10000080H86H00D7D6D5D4D3D2D1D0格式格式字字A组工作组工作方式方式A口口I/OC口高半字口高半字节节I/OB组工作方组工作方式式B口口I/OC口低半字口低半字节节I/O100 方式方式001 方式方式110 方式方式21输入输入0输出输出1 输入
14、输入0 输出输出0 方式方式01 方式方式11 输入输入0 输出输出1 输入输入0 输出输出J1:A口,方式口,方式0,输出,输出;B口,方式口,方式0,输入,输入;C口高,输出口高,输出;C 口低,输入口低,输入 地址地址:88H-8EH控制字:控制字:D7D6D5D4D3D2D1D01000001183HD7D6D5D4D3D2D1D0格式格式字字A组工作组工作方式方式A口口I/OC口高半字口高半字节节I/OB组工作方组工作方式式B口口I/OC口低半字口低半字节节I/O100 方式方式001 方式方式110 方式方式21输入输入0输出输出1 输入输入0 输出输出0 方式方式01 方式方式1
15、1 输入输入0 输出输出1 输入输入0 输出输出J2:A口口,方式方式0,输入输入;B口口,方式方式1,输出输出;C口高口高,输出输出 地址:地址:80H-86H控制字:控制字:D7D6D5D4D3D2D1D0100101094HJ1:A口,方式口,方式0,输出,输出 B口,方式口,方式0,输入,输入 C口高,输出口高,输出 C 口低,输入口低,输入地址:地址:88H-8EH,控制字:控制字:83H J2:A口,方式口,方式0,输入,输入 B口,方式口,方式1,输出,输出 C口高,输出口高,输出 地址:地址:80H-86H,控制字:控制字:94HMOV AL,83HOUT 8EH,AL ;J1
16、控制口控制口MOV AL,94HOUT 86H,AL ;J2控制口控制口 B 端口端口C口各位设置字口各位设置字D7D6D5D4D3D2D1D0格式字格式字位选择位选择数值数值0000 PC0001 PC1010 PC2011 PC3100 PC4101 PC5110 PC6111 PC71/0例:例:07H 00000111,即将即将 PC3置置1。说明:说明:1)端口端口C置置0/置置1控制字尽管是对端口控制字尽管是对端口C进行操作,但此控进行操作,但此控制字必须写入控制口,而不是写入端口制字必须写入控制口,而不是写入端口C。2)一个控制字只能对一位进行操作一个控制字只能对一位进行操作。J
17、1:A口,方式口,方式0,输出,输出 B口,方式口,方式0,输入,输入 C口高口高,输出输出,C 口低口低,输入输入 地址地址:88H-8EH,控制字控制字:83H C口口PC7置置1,PC3置置0。MOV AL,0FH ;00001111OUT 8EH,AL MOV AL,06H ;00000110OUT 8EH,AL 第二节第二节 82558255的工作方式的工作方式一、方式一、方式0 基本输入输出方式基本输入输出方式实际上是实际上是4个端口,个端口,A、B、C高、高、C低,可以独立地任意低,可以独立地任意组合,一共可有组合,一共可有16种种组合方式。组合方式。输入时序输入时序RDI/O口
18、口 输输入入数数据据数数据据有有效效地地址址有有效效CSA1A0数数据据有有效效D7D0CPU数数据据总总线线CPURDI/O口口 输输入入数数据据数数据据有有效效地地址址有有效效CSA1A0数数据据有有效效D7D0CPU数数据据总总线线CPU1)CPU在发出读信号在发出读信号前,先发出地址信号,前,先发出地址信号,使使8255的片选及各寄的片选及各寄存器有效。存器有效。2)在在CPU发出读信号之前,外设已将欲输入的数据送入发出读信号之前,外设已将欲输入的数据送入8255的数据总线缓冲器。的数据总线缓冲器。3)8255数据总线缓冲器中的数据必须保持到读信号消失数据总线缓冲器中的数据必须保持到读
19、信号消失后才结束。后才结束。4)读脉冲宽度至少大于读脉冲宽度至少大于300ns。5)在整个输入数据期间,地址信号保持有效在整个输入数据期间,地址信号保持有效。输出时序输出时序1)地址信号必须先有效;地址信号必须先有效;2)写脉冲大于写脉冲大于400ns;3)数据在写信号结束前有效,且能在写信号结束后保持数据在写信号结束前有效,且能在写信号结束后保持一段时间;一段时间;4)在写信号结束后,不超过在写信号结束后,不超过350ns,数据出现在数据出现在8255的输的输出锁存器中。出锁存器中。在方式在方式0中,可利用中,可利用C口的各位信号线做应答信号,配合口的各位信号线做应答信号,配合A,B口的输入
20、输出操作。口的输入输出操作。译译码码A1A0CS+5VPA7PA0PB7PB0A1A2DBCBAB图中图中,8255地址为地址为02A0H02A6H根据开关情况来控制根据开关情况来控制LED。(开关闭合灯亮开关闭合灯亮),写出控制程序。写出控制程序。分析:分析:A口输入,方式口输入,方式0;B口输出,方式口输出,方式0控制字:控制字:1 00 1 0 0 90HMOV DX,2A6HMOV AL,90H OUT DX,AL MOV DX,2A0HIN AL,DXMOV DX,2A2H OUT DX,AL 打印机工作顺序打印机工作顺序(过程过程)1)数据与数据与STB信号一起送入打印机,信号一起
21、送入打印机,STB相当于启动信相当于启动信号,启动打印机接受数据;号,启动打印机接受数据;2)打印机处理数据,这时打印机处理数据,这时BUSY为高,表示为高,表示“忙忙”;3)处理完数据,处理完数据,BUSY为为0,且,且ACK为低,应答主机。为低,应答主机。打打印印机机DBSTBBUSY8255PA7PA0PC7PC2CPUCPU经经8255与打印机连接,与打印机连接,8255地址:地址:80H83H,打印打印从从BUF缓冲区开始的缓冲区开始的100个字符个字符。分析:分析:8255A口方式口方式0输出,输出,C口高半位输出,口高半位输出,C口低半位口低半位输入,控制字:输入,控制字:1 0
22、0 0 0 181H步骤:步骤:1)查看查看PC2;2)发送发送PA;3)发送发送PC7。8255地址地址80H83H,控制字控制字81H打打印印机机DBSTBBUSY8255PA7PA0PC7PC2CPUMOV AL,81H OUT 83H,ALMOV AL,0FHOUT 83H,ALLEA SI,BUFMOV CX,100;设置设置PC7为为1,不启动打印机,不启动打印机L:IN AL,82H AND AL,04H JNZ L MOV AL,SI OUT 80H,ALMOV AL,0EHOUT 83H,ALCALL delayMOV AL,0FHOUT 83H,ALINC SIDEC CX
23、JNZ LHLT;读读C口口;判断判断PC2;发送字符发送字符;PC7置置0;PC7置置1;下一个字符下一个字符;忙忙,等待等待二、方式二、方式1 选通输入输出方式选通输入输出方式(应答方式应答方式)1.特点特点1)A口或口或B口工作在方式口工作在方式1时,时,C口各位做联络应答信号线,口各位做联络应答信号线,其其各位的含义是固定的各位的含义是固定的,不可用软件改变;,不可用软件改变;2)各位联络信号都有固定的时序各位联络信号都有固定的时序(自动进行自动进行)3)在输入输出操作中,产生固定格式的状态字,这些状在输入输出操作中,产生固定格式的状态字,这些状态信息可供态信息可供CPU查询或向查询或
24、向CPU申请中断。申请中断。CPU从端口从端口C中中读取状态字。读取状态字。4)方式方式1为单向传送,初始化后只能向一个方向上传送,为单向传送,初始化后只能向一个方向上传送,若要反方向传送必须再次初始化若要反方向传送必须再次初始化。2.方式方式1下下输入操作输入操作的联络信号线定义及时序的联络信号线定义及时序指定了指定了C口的口的3根线作为根线作为A口的联络线。口的联络线。ASTB:外设送入的外设送入的选通信号选通信号,与外设数据一起送入,相,与外设数据一起送入,相当于当于8255的的启动信号启动信号。IBFA:Input Buffer Full,输入输入缓冲器满,高有效,缓冲器满,高有效,由
25、由8255发发往外设往外设,表示,表示8255收到数据,收到数据,但未被但未被CPU取走,取走,通知外设不通知外设不可再送数据;可再送数据;当其为当其为低时,表示低时,表示CPU已取已取走数据,允许外设送新的数据。走数据,允许外设送新的数据。&INTRA:8255向向CPU申请中断,高有效,请求申请中断,高有效,请求CPU中断。中断。INTR为高有为高有3个条件个条件:1)STB为高为高,即数据已打入,即数据已打入8255;2)IBF为高为高,即,即8255已收到数据;已收到数据;3)INTE(中断请求允许中断请求允许)为高为高,即,即8255允许以中断方式应答。允许以中断方式应答。INTRA
26、为高,通知为高,通知CPU可以取可以取8255口中的数。口中的数。&INTEA:Interrupt Enable,中断允许信号,设置中断允许信号,设置中断允许或屏蔽中断的信号。中断允许或屏蔽中断的信号。INTE没有外部引出没有外部引出端端,由软件对,由软件对C口某位进行置口某位进行置0或置或置1的操作实现。的操作实现。对对A口,中断允许端是口,中断允许端是PC4,对对B口,是口,是PC2。置置1允许中断,置允许中断,置0屏蔽中断。屏蔽中断。&端口端口B在在方式方式1输入输入下各个联络线的定义与端口下各个联络线的定义与端口A完完全一样,只是占用全一样,只是占用C口的联络线与端口口的联络线与端口A
27、不同。其不同。其中,其中断屏蔽允许位是中,其中断屏蔽允许位是PC2。&PC02属于属于B口联络线,口联络线,PC35属于属于A口联络线,口联络线,PC6,PC7没有被重新定义,没有被重新定义,仍可作为基本仍可作为基本I/O口使用口使用,属于,属于C口的高半部分,在控制字口的高半部分,在控制字中定义其输入输出特性。中定义其输入输出特性。&工作时序工作时序1)数据与数据与STB由外设进入由外设进入8255,STB为低,通知为低,通知8255接受数据。接受数据。2)8255收到收到STB信号,将信号,将IBF置为置为1,通知外设禁止再,通知外设禁止再送入数据,同时接受数据。送入数据,同时接受数据。3
28、)STB信号是由外设发出,一般有效信号是由外设发出,一般有效300ns。4)具备具备3个条件:个条件:STB为高,为高,IBF为高,为高,INTE为高,为高,8255向向CPU发中断申请信号,通知发中断申请信号,通知CPU取走数据。取走数据。5)CPU接到中断申请后,响应中断,向接到中断申请后,响应中断,向8255相应端口发相应端口发读信号,读信号,6)读信号的下降沿复位中断申请,读信号的下降沿复位中断申请,7)上升沿复上升沿复位位8255向外设发的禁止输入信号,外设得以向向外设发的禁止输入信号,外设得以向8255发送下发送下一数据。一数据。(4)RD外设外设8255CPU(1)STB(2)I
29、BF(3)INTR3.方式方式1下下输出操作输出操作的联络信号线定义及时序的联络信号线定义及时序指定了端口指定了端口C的的3根线做其联络信号线。根线做其联络信号线。AOBF:Output Buffer Full,输出缓冲器满,输出缓冲器满,8255接到接到CPU送来的数据后,将数据连带这个信号一起送送来的数据后,将数据连带这个信号一起送往外设,往外设,这个信号相当于启动信号,通知外设开这个信号相当于启动信号,通知外设开始接收数据始接收数据。AACK:外设应答信号,外设送入外设应答信号,外设送入8255,低有效。有效,低有效。有效时表示外设已接到数据,这个信号可以将时表示外设已接到数据,这个信号
30、可以将OBF变变高,表示高,表示CPU可以进行下一次传输。可以进行下一次传输。INTR:中断请求信号,由中断请求信号,由8255发发往往CPU,高有效,为高的条件是:高有效,为高的条件是:WR、OBF、ACK和和INTE均为高均为高电平,分别表示为:电平,分别表示为:WR为高:为高:CPU已写完已写完一个数据;一个数据;OBF为高:为高:输出缓冲器已空;输出缓冲器已空;ACK为高:为高:外设应答信号结束。表明外设收到数据;外设应答信号结束。表明外设收到数据;INTE为高:为高:8255允许中断。允许中断。INTEA:Interrupt Enable,中断允许信号,设置中断允许信号,设置中断允许
31、或屏蔽中断的信号。中断允许或屏蔽中断的信号。INTE没有外部引出没有外部引出端端,由软件对,由软件对C口某位进行置口某位进行置0或置或置1的操作实现。的操作实现。对对A口,中断允许端是口,中断允许端是PC6,对对B口,是口,是PC2。置置1允许中断,置允许中断,置0屏蔽中断。屏蔽中断。端口端口B在在方式方式1输出输出下各个联络线的定义与端口下各个联络线的定义与端口A完完全一样,只是占用全一样,只是占用C口的联络线与端口口的联络线与端口A不同。其不同。其中,其中断屏蔽允许位是中,其中断屏蔽允许位是PC2。其占用的联络线与其占用的联络线与输入时一样,但联络线的定义不同。输入时一样,但联络线的定义不
32、同。PC02属于属于B口联络线,口联络线,PC3,PC6,PC7属于属于A口联络线,口联络线,PC4,PC5没有被重新定义,没有被重新定义,仍可仍可作为基本作为基本I/O口使用口使用,属于,属于C口的高半部分,口的高半部分,在控制字中定义其输入输出特性。在控制字中定义其输入输出特性。输出时序:输出时序:1)CPU在在INTR为高的情况为高的情况下下WR信号有效,通过信号有效,通过DB向向8255写入数据;写入数据;2)WR信号的上升沿使信号的上升沿使INTR为低,禁止为低,禁止CPU继续继续向向8255发送数据;发送数据;3)WR信号的上升沿使信号的上升沿使OBF信号有效,通知外设取走信号有效
33、,通知外设取走8255端口的数据;端口的数据;同时,同时,CPU输入的数据也出现在输入的数据也出现在8255相应的相应的端口上端口上;4)外设取走数据,向外设取走数据,向8255发送应答信号,发送应答信号,5)其下降沿复其下降沿复位位OBF,6)其上升沿复位其上升沿复位INTR,使中断申请信号有效,使中断申请信号有效,8255得以继续向得以继续向CPU申请中断,输出下一个数据。申请中断,输出下一个数据。外设外设8255CPU(1)WR(2)OBF(3)ACK(4)INTRD7D6D5D4D3D2D1D0A组组B组组输入:输入:D7D6D5D4D3I/O I/OIBFAINTEAINTRA输出:
34、输出:D7D6D5D4D3OBFAINTEAI/O I/O INTRAD2D1D0INTEBIBFBINTRBD2D1D0INTEBOBFBINTRB状态字中状态字中CPU可以查询的状态可以查询的状态输入是输入是IBF和和INTR,输出输出是是OBF和和INTR,但一般但一般INTR更可靠。如果中断允许更可靠。如果中断允许INTE为为0(禁止中断禁止中断),则,则INTR无效。无效。但如果但如果CPU禁止禁止8255中断,一般在硬件上不接中断,一般在硬件上不接INTR管脚,管脚,而而INTE依然置依然置1,供,供CPU查询查询INTR。4.方式方式1的状态字的状态字在方式在方式1下下8255有
35、固定的状态字,反应了有固定的状态字,反应了当前当前8255正在工作的各种状态,正在工作的各种状态,即其内部各即其内部各寄存器的状态寄存器的状态,供,供CPU查询,查询,CPU通过读写通过读写8255的端口的端口C可以获取状态字。可以获取状态字。状态字是状态字是8255在输入输出过程中由内部自在输入输出过程中由内部自动产生的,动产生的,由由C口读取,与端口口读取,与端口C在芯片外部在芯片外部的引脚无关的引脚无关。8255工作在方式工作在方式1控制微型打印机应用实例控制微型打印机应用实例打打印印机机DBSTBBUSYACK分析:分析:PA端口与打印机的数据线相连;端口与打印机的数据线相连;OBF(
36、PC7)与打印机的与打印机的STB相连,启动打印机;相连,启动打印机;ACK(PC6)与打印机的与打印机的ACK相连,打印机取走数据;相连,打印机取走数据;ACK信号通知信号通知8255数据已被取走,该信号自动使数据已被取走,该信号自动使OBF为高,但由于打印机速度很慢,因此在打印时,会为高,但由于打印机速度很慢,因此在打印时,会发出发出BUSY信号,此时,需查询信号,此时,需查询BUSY为低才可以完成一为低才可以完成一次数据传输。次数据传输。所以用所以用PC4接接BUSY,设置为输入。设置为输入。打打印印机机DBSTBBUSY8255PA7PA0PC7PC4CPUACKPC68255地址:地
37、址:200H206H控制字:控制字:1010 1 A8HLEA SI,BUFMOV CX,100MOV DX,206HMOV AL,0A8HOUT DX,ALL1:MOV AL,SI MOV DX,200H OUT DX,AL MOV DX,204HL2:IN AL,DX AND AL,80H JZ L2 L3:IN AL,DX AND AL,10H JNZ L3 INC SI DEC CX JNZ L1 HLT;写控制字写控制字;A口输出数据口输出数据;读状态字读状态字;查看查看OBF是否为高是否为高;读读C口口;查看查看PC4打打印印机机DBSTBBUSY8255PA7PA0PC7PC4C
38、PUACKPC6利用中断申请利用中断申请INTR查询查询地址:地址:80H83H,控制字控制字A8H允许中断,设置允许中断,设置PC6为为1控制字:控制字:0110 1 0DHLEA SI,BUFMOV CX,100MOV AL,0A8HOUT 83H,ALMOV AL,0DHOUT 83H,ALL1:MOV AL,SI OUT 80H,ALL2:IN AL,82H AND AL,08H JZ L2 L3:IN AL,82 AND AL,10H JNZ L3 INC SI DEC CX JNZ L1 HLT;A口输出数据口输出数据;读状态字读状态字;查看查看INTR是否为高是否为高;读读C口口
39、;查看查看PC4三、方式三、方式2 双向应答式输入输出方式双向应答式输入输出方式该方式只能用于端口该方式只能用于端口A,指定指定A口既作入口既作入口又作输出口,可采用中断或查询方式与口又作输出口,可采用中断或查询方式与CPU交换数据,交换数据,C口用口用5个高位数位为个高位数位为A口提口提供应答信号。这时,供应答信号。这时,端口端口B仍可以方式仍可以方式0或方或方式式1工作。工作。输出输出输入输入方式方式2的信号联络线实际上是方式的信号联络线实际上是方式1输入输出的组合。输入输出的组合。PA70PC6AACKPC7AOBFPC4ASTBPC5IBFAINTE1INTE2PC3INTRARDWR
40、方方式式2(端端口口A)同样,方式同样,方式2的时序实际上也是方式的时序实际上也是方式1的输入与输出的时序的输入与输出的时序的组合。当一个外设既可以用作输入也可以用作输出时,的组合。当一个外设既可以用作输入也可以用作输出时,将其接口初始化为方式将其接口初始化为方式2,这样输入输出就不用再重新初,这样输入输出就不用再重新初始化了,具体某个时刻是输出操作还是输入操作由程序来始化了,具体某个时刻是输出操作还是输入操作由程序来控制,控制,CPU可以通过中断或查询状态字来控制程序进程。可以通过中断或查询状态字来控制程序进程。PA70PC6AACKPC7AOBFPC4ASTBPC5IBFAINTE1INT
41、E2PC3INTRARDWR方方式式2(端端口口A)方式方式2的输入与输出是一个中断源,因此,在中断处理程的输入与输出是一个中断源,因此,在中断处理程序中还应该查询序中还应该查询8255的状态字,进一步识别是输入申请中的状态字,进一步识别是输入申请中断还是输出申请中断,来启动不同的处理程序。断还是输出申请中断,来启动不同的处理程序。方式方式2的状态字的状态字D7D6D5D4D3OBFAINTE1IBFAINTE2INTRA输入:输入:INTRAINTEAIBFAI/OI/OD3D4D5D6D7输出:输出:INTRAI/OI/OINTEAOBFAD3D4D5D6D7方式方式1输出输出输入输入两个
42、中断允许位两个中断允许位INTE1和和INTE2要分别设置。在中服中要要分别设置。在中服中要查询查询OBF和和IBF两位,看是哪个操作在申请中断。两位,看是哪个操作在申请中断。第三节第三节 键盘及键盘及LED显示显示键盘及键盘及LED显示电路显示电路l键盘是微机系统最常使用的输入设备键盘是微机系统最常使用的输入设备l小键盘小键盘:适用于单板机或以微处理器为基础:适用于单板机或以微处理器为基础的仪器,实现数据、地址、命令及指令等的的仪器,实现数据、地址、命令及指令等的输入输入l独立键盘独立键盘:通过:通过5芯电缆与芯电缆与PC微机主机连接微机主机连接简易键盘的工作原理简易键盘的工作原理+5V+5
43、V+5Vp最简单的线性结构键盘最简单的线性结构键盘l每一个引脚连接一个键每一个引脚连接一个键l输入输入0/1反映键是否按下反映键是否按下简易简易键盘的工作原理键盘的工作原理1.扫描法扫描法l先使第先使第0行接低电平,其余行为高电平,然后看行接低电平,其余行为高电平,然后看第第0行是否有键闭合(通过检查列线电位实现)行是否有键闭合(通过检查列线电位实现)l此后,再将第此后,再将第1行接地,然后检测列线是否有变行接地,然后检测列线是否有变为低电位的线。如此往下为低电位的线。如此往下一行一行地扫描一行一行地扫描,直到,直到最后一行最后一行l在扫描过程中,当发现某一行有键闭合时,便在在扫描过程中,当发
44、现某一行有键闭合时,便在扫描中途退出扫描中途退出l通过组合行线和列线可识别此刻按下的是哪一键通过组合行线和列线可识别此刻按下的是哪一键KEYMOVDX,pt;pt为为8255的控制寄存器地址的控制寄存器地址:MOVAL,82H;方式选择控制字;方式选择控制字OUTDX,ALWAIT MOVAL,00H:MOVDX,PTA;所有行线输出低电平,;所有行线输出低电平,OUTDX,ALMOVDX,,PTB;PTB为列线所连接的端口为列线所连接的端口BINAL,DX;读取列值;读取列值ANDAL,0FFHCMPAL,0FFH;看是否有列线处于低电平;看是否有列线处于低电平JEWAIT;否,则没有键闭合
45、,循环等待;否,则没有键闭合,循环等待CALL DELAY;是,则延迟;是,则延迟20ms去抖动去抖动SCAN:MOVBL,0;键号基值为;键号基值为0MOVDL,0FEH;送扫描初值,只有最低位为;送扫描初值,只有最低位为“0”MOVCL,8;行数计数值;行数计数值ROW:MOVAL,DLOUTPTA,AL;扫描一行;扫描一行ROLDL,1;修改扫描值,使之下一行为;修改扫描值,使之下一行为“0”INAL,PTB;读进列值;读进列值CMPAL,0FFHJNEKEYC;有列线为;有列线为“0”,则进一步取列位置,则进一步取列位置ADDBL,8;没有列线接地,则使键基值;没有列线接地,则使键基值
46、=键基值键基值+列数列数DECCL;是否各行都扫完;是否各行都扫完JNEROW;未扫完,则扫下一行;未扫完,则扫下一行JMPWAIT;已经扫完,没有按键按下,转;已经扫完,没有按键按下,转WAIT等待等待KEYC:RCRAL,1JNCPROCE;若此列接地,则转至;若此列接地,则转至PROCEINCBL;键号;键号=键基值键基值+列号列号JMPKEYC;若未找到接地的列线,则转;若未找到接地的列线,则转KEYCODE继续继续PROCE;键命令处理,键值在;键命令处理,键值在BL寄存器中寄存器中:;后续处理程序;后续处理程序2.反转法反转法p首先,将行线作为控制线接一个输出端口,将首先,将行线作
47、为控制线接一个输出端口,将列线作为检测线接一个输入端口列线作为检测线接一个输入端口CPU通过输出端口将行线(控制线)全部设置为通过输出端口将行线(控制线)全部设置为低电平,然后从输入端口读取列线(检测线)低电平,然后从输入端口读取列线(检测线)p然后,将行线和列线的作用互换,即将列线作然后,将行线和列线的作用互换,即将列线作为控制线接输出端口,行线作为检测线接输入为控制线接输出端口,行线作为检测线接输入端口端口将刚才读得的列值从列线所接端口输出,再读取将刚才读得的列值从列线所接端口输出,再读取行线的输入值行线的输入值p这样,当一个键被按下时,必定可以读得一对这样,当一个键被按下时,必定可以读得
48、一对唯一的行值和列值唯一的行值和列值;设置行线接输出端口,列线接输入端口设置行线接输出端口,列线接输入端口KEY2:MOV AL,00MOV DX,ROWPORTOUT DX,AL;设置行线全为低设置行线全为低MOV DX,COLPORTIN AL,DX;读取列值读取列值CMP AL,0FFHJZ KEY2;无闭合键,循环等待无闭合键,循环等待PUSH AX;有闭合键,保存列值有闭合键,保存列值 PUSH AX;设置行线接输入端口,列线接输出端设置行线接输入端口,列线接输出端MOV DX,COLPORTPOP AXOUT DX,AL;输出列值输出列值MOV DX,ROWPORTIN AL,DX
49、;读取行值读取行值POP BX;组合行列值组合行列值MOV AH,BL;此时,此时,AL行值,行值,AH列值列值键盘扫描程序MOV SI,OFFSET TABLEMOV DI,OFFSET CHARMOV CX,64;CX键的个数键的个数KEY3:CMP AX,SI;与键值比较与键值比较 JZ KEY4;相同,说明查到相同,说明查到INC SI;不相同,继续比较不相同,继续比较INC SIINC DILOOP KEY3JMP KEY1;全部比较完,仍无相同,说明是重键全部比较完,仍无相同,说明是重键KEY4:MOV AL,DI;获取键代码送获取键代码送AL;判断按键是否释放,没有则等待判断按键
50、是否释放,没有则等待CALL DELAY;按键释放,延时消除抖动按键释放,延时消除抖动;后续处理后续处理;键盘的行列值表键盘的行列值表TABLEDW 0FEFEH;键键0的行列值(键值)的行列值(键值)DW 0FDFEH;键键1的行列值的行列值DW 0FBFEH;键键2的行列值的行列值;其他键的行列值其他键的行列值;键盘的键代码表键盘的键代码表CHARDB;键键0的代码值的代码值DB;键键1的代码值的代码值;其他键的代码值其他键的代码值LED数码管及其接口数码管及其接口l发光二极管发光二极管LED是是最简单的显示设备最简单的显示设备l由由7段段LED就可以组成的就可以组成的LED数码管数码管l