常见外设接口及应用1_第1页
常见外设接口及应用1_第2页
常见外设接口及应用1_第3页
常见外设接口及应用1_第4页
常见外设接口及应用1_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

1、会计学1常见外设接口及应用常见外设接口及应用1第1页/共75页 8255A 8255A是一个是一个4040脚脚封装双列直插式芯片。封装双列直插式芯片。 第2页/共75页D7-D0D7-D0:8 8位位双向数据线双向数据线,连接,连接CPUCPU与与8255A8255A片内的三态双向数据总线缓片内的三态双向数据总线缓冲器。冲器。A1-A0A1-A0:2 2位位地址线地址线,用于选择,用于选择3 3个个I/OI/O端口和一个控制端口。端口和一个控制端口。RD#RD#:读控制线读控制线,低电平有效。,低电平有效。WR# WR# :写控制线写控制线,低电平有效。,低电平有效。CS#CS#:片选端片选端

2、,低电平有效。,低电平有效。RESETRESET:复位信号复位信号,高电平有效。,高电平有效。 它清除控制寄存器并将它清除控制寄存器并将8255A8255A的的A A、B B、C C三个端口均置为输入方式;输出寄存器和三个端口均置为输入方式;输出寄存器和状态寄存器被复位,并且屏蔽中断请求;状态寄存器被复位,并且屏蔽中断请求;2424条面向外设的信号线呈现高阻悬浮状态。条面向外设的信号线呈现高阻悬浮状态。这种势态一直维持,直到用方式命令才能这种势态一直维持,直到用方式命令才能改变,使其进入用户所需的工作方式。改变,使其进入用户所需的工作方式。第3页/共75页 8255A8255A芯片内部包含芯片

3、内部包含3 3个个8 8位端口,其中:位端口,其中: 端口端口A:A:包含一个8位数据输出锁存/缓冲存储器和一个8位数据输入锁存器 端口端口B:B:包含一个8位数据输入/输出、锁存/缓冲存储器和一个8位数据输入缓冲存储器; 端口端口C:C:包含一个8位输出锁存/缓冲存储器和一个输入缓冲存储器(输入无锁存)。 实际使用时,可以把实际使用时,可以把A A口、口、B B口、口、C C口分成两个控制组:口分成两个控制组:A A组组和和B B组。组。 A A组组控制电路控制端口A和端口C的高4位(PC7PC4)。 B B组组控制电路控制端口B和端口C的低4位(PC3PC0)。 第4页/共75页 8255

4、A 8255A的内部结构分为的内部结构分为3 3部分:部分: CPUCPU接口、内部逻辑、外设接口接口、内部逻辑、外设接口 第5页/共75页第6页/共75页 1 1、数据端口、数据端口、C C 8255A 8255A的的3 3个个8 8位位I/OI/O端口端口A A、B B、C C是和外设一边相连是和外设一边相连的输入的输入/ /输出接口。输出接口。 在实际使用中,在实际使用中,A A口和口和B B口通常只作为独立的输入口通常只作为独立的输入或输出数据端口使用。或输出数据端口使用。 C C口的功能和使用比较特殊。它除了可以作数据口口的功能和使用比较特殊。它除了可以作数据口使用外,还可以用来配合

5、使用外,还可以用来配合A A口和口和B B口工作,作为专用联口工作,作为专用联络信号线,可以实现按位控制。络信号线,可以实现按位控制。 第7页/共75页 2 2、A A组控制和组控制和B B组控制部件组控制部件 这两组控制部件是这两组控制部件是8255A8255A的内部控制逻辑,其内部的内部控制逻辑,其内部有控制寄存器与状态寄存器,它们完成两个功能:有控制寄存器与状态寄存器,它们完成两个功能: 一是接收来自一是接收来自CPUCPU通过内部数据总线送来的控制字,通过内部数据总线送来的控制字,以选择两组端口的工作方式;以选择两组端口的工作方式; 二是接收来自读二是接收来自读/ /写控制逻辑电路的读

6、写控制逻辑电路的读/ /写命令,写命令,以决定两组端口的读以决定两组端口的读/ /写操作。写操作。 第8页/共75页 3 3、读、读/ /写控制逻辑电路写控制逻辑电路 读读/ /写控制逻辑电路是和写控制逻辑电路是和CPUCPU一边相连的控制电路,一边相连的控制电路,负责管理负责管理8255A8255A的数据传输过程。的数据传输过程。 它接收片选信号它接收片选信号CS#CS#与来自地址总线的地址信号与来自地址总线的地址信号A1A1、A0A0以及控制总线的信号以及控制总线的信号RESETRESET、WR#WR#、RD#RD#,将它们组合,将它们组合后,得到对后,得到对A A组控制部件和组控制部件和

7、B B组控制部件的控制命令,组控制部件的控制命令,并将命令送给这两个部件,再由它们完成对数据信息、并将命令送给这两个部件,再由它们完成对数据信息、状态信息和控制信息的传输。状态信息和控制信息的传输。 第9页/共75页4 4、数据总线缓冲器、数据总线缓冲器 数据总线缓冲器是连通数据总线缓冲器是连通CPUCPU数据总线的一个双向三数据总线的一个双向三态态8 8位数据缓冲器,位数据缓冲器,8255A8255A正是通过它来输入正是通过它来输入/ /输出数据输出数据的;的; 此外,此外,CPUCPU发给发给8255A8255A的控制字以及由外设输入的控制字以及由外设输入CPUCPU的状态信息等,也都是通

8、过该部件传递的。的状态信息等,也都是通过该部件传递的。 8.1.1 8255A芯片引脚定义与功能第10页/共75页 8255A 8255A有有3 3个个I/OI/O端口和一个控制端口,它们通过地端口和一个控制端口,它们通过地址线址线A1A1、A0A0,读写控制线,读写控制线RD#RD#、WR#WR#以及片选线以及片选线CS#CS#进行进行寻址并实现相应的操作。寻址并实现相应的操作。 第11页/共75页8.1.2 8255A寻址方式第12页/共75页 8255A 8255A在初始化编程时,是利用在初始化编程时,是利用OUTOUT指令由指令由CPUCPU输出输出一个控制字到控制端口的控制寄存器来控

9、制其工作的。一个控制字到控制端口的控制寄存器来控制其工作的。 两种类型的控制字:两种类型的控制字: 1 1、方式选择控制字、方式选择控制字 2 2、端口、端口C C置位置位/ /复位控制字复位控制字 第13页/共75页第14页/共75页第15页/共75页 例例1 1、将、将8255A8255A设定为:设定为: 1、A组为方式0,组B为方式1。 2、A口输入,B口输出,PC7PC4输出,PC3PC0输入。 3、设8255A的4个端口地址范围为0060H0063H。 则初始化编程时的程序段为:则初始化编程时的程序段为:MOV DX,0063H; 8255A控制口地址MOV AL,10010101B

10、 ;设定初始化方式选择控制字OUT DX,AL;送控制字到控制口第16页/共75页 例例2 2、设、设8255A8255A端口地址范围为端口地址范围为300H300H303H303H,若要置,若要置8255A 8255A PC5PC5的状态为的状态为1 1,则设置端口,则设置端口C C置位置位/ /复位控制字的程序段为:复位控制字的程序段为: MOV DX,0303H ; 8255A控制口地址 MOV AL,00001011B;由C口置位/复位控制字设定PC51 OUT DX,AL ;送控制字到控制口第17页/共75页 例例3 3、设、设8255A8255A控制端口地址为控制端口地址为037F

11、H037FH,若要使,若要使8255A8255A的的PC7PC7产产生一个负脉冲,用作打印机接口的选通信号,则设置端口生一个负脉冲,用作打印机接口的选通信号,则设置端口C C置位置位/ /复位控制字的程序段为:复位控制字的程序段为: MOV DX,037FH ;8255A控制口地址 MOV AL,00001110B ;由C口置位/复位控制字设定PC70 OUT DX,AL ;送控制字到控制口 NOP ;延长负脉冲宽度 NOP MOV AL,00001111B ;由C口置位/复位控制字设定PC71 OUT DX,AL8.1.3 8255A的控制字第18页/共75页 8255A 8255A有有3

12、3种工作方式:种工作方式:方式方式0 0(基本输入(基本输入/ /输出方式);输出方式);方式方式1 1(选通输入(选通输入/ /输出);输出);方式方式2 2(双向选通输入(双向选通输入/ /输出,仅适合于输出,仅适合于A A口)。口)。 这些工作方式由初始化编程时设置方式选择控制字来选择。 第19页/共75页 A A口可选择方式口可选择方式0 0、方式、方式1 1和方式和方式2 2; B B口可选择方式口可选择方式0 0和方式和方式1 1; C C口只能以方式口只能以方式0 0工作。工作。 当A口方式1/方式2或B口选择方式1时,C口某些位配合A口或B口工作,作为A口/B口与外设联络用的输

13、出控制信号或输入状态信号,而C口的其余各位仍用方式0工作。第20页/共75页方式方式0 0 方式 0 :基本的输入基本的输入/ /输出工作方式输出工作方式,只能完成简单的并行输入/输出操作。 方式方式 0 0 的特点:的特点: (1)没有固定的联络信号,一般采用无条件传送或查询方式传送与CPU交换数据。 (2)有4个独立的并口,16种不同的输入/输出组态。 (3)所有端口都是单向传输端口。第21页/共75页第22页/共75页方式方式1 1 方式方式 1 1 :选通输入选通输入/ /输出方式输出方式或应答方式应答方式。 它在使用端口A和端口B进行输入/输出时,一定要利用端口C所提供的选通信号和应

14、答信号来配合输入/输出操作。 第23页/共75页 方式方式1 1的特点:的特点:(1)需要固定的联络线(联络信号)联络线(联络信号)配合A口和B口使用。(2)如果A口和B口都工作在方式1,则C口中就有6位(分为两组3位)联络线来联络与控制操作,各联络信号线之间有着固定的时序关系。C口的其余2位,仍可作为输入或输出线。(3)联络信号可供CPU查询或向CPU申请中断。(4)所有端口都是单向传输端口。第24页/共75页STB#STB#:选通输入信号选通输入信号IBFIBF:输入缓冲器满信号输入缓冲器满信号INTRINTR:中断请求信号中断请求信号INTEINTE:中断允许信号中断允许信号中断方式中断

15、方式查询方式查询方式PC4PC4查询查询第25页/共75页PC2PC2第26页/共75页第27页/共75页端口端口A A和端口和端口B B为输入方式为输入方式 STB#STB#:选通输入信号选通输入信号,低电平有效。,低电平有效。 外设送给外设送给8255A8255A的选通信号,当它有效时,就把来的选通信号,当它有效时,就把来自外设的一个自外设的一个8 8位输入数据送到位输入数据送到8255A8255A的端口的端口A A或端口或端口B B的输入缓冲器中。的输入缓冲器中。第28页/共75页 IBFIBF:输入缓冲器满信号,输入缓冲器满信号,输出信号,高电平有效。输出信号,高电平有效。 IBFIB

16、F是是8255A8255A输出的状态信号,当它有效时,表示输出的状态信号,当它有效时,表示当前已有一个新的数据进入端口当前已有一个新的数据进入端口A A或端口或端口B B的输入缓冲的输入缓冲器中,即缓冲器已满,器中,即缓冲器已满,8255A8255A此刻不能再接收别的数据。此刻不能再接收别的数据。 IBFIBF信号是对信号是对STB#STB#的响应信号,由的响应信号,由STB#STB#信号置位。信号置位。 它可以由它可以由CPUCPU通过查询通过查询C C口的口的PC5PC5或或PC1PC1位获得。当位获得。当CPUCPU查得查得PC5PC5(或(或PC1PC1)1 1时,表示输入缓冲器数据已

17、时,表示输入缓冲器数据已满,满,CPUCPU可以从可以从A A口(或口(或B B口)读入输入数据。口)读入输入数据。 IBFIBF将由将由RD#RD#信号的上升沿复位(变为低电平)。信号的上升沿复位(变为低电平)。第29页/共75页 INTRINTR:82558255送往送往CPUCPU的的中断请求信号中断请求信号,高电平有效。,高电平有效。 当当STB#STB#结束(回到高电平时)和结束(回到高电平时)和IBFIBF为高电平,且为高电平,且有相应的中断允许信号(即有相应的中断允许信号(即INTEINTE为高电平)时,则为高电平)时,则8255A8255A就把就把INTRINTR变为有效,以向

18、变为有效,以向CPUCPU发中断请求。发中断请求。 由由RD#RD#信号的下降沿使信号的下降沿使INTRINTR复位(变为低电平)复位(变为低电平)。 INTRINTR通常和通常和8259A8259A的一个中断请求输入端的一个中断请求输入端IRIR相连,相连,通过通过8259A8259A的输出端的输出端INTINT向向CPUCPU发中断请求。发中断请求。 第30页/共75页 INTEINTE:中断允许信号中断允许信号。它是在。它是在8255A8255A内部的一个控内部的一个控制中断允许或禁止的控制信号。制中断允许或禁止的控制信号。 INTEINTE没有外部引出端,即没有对片外输入或输出没有外部

19、引出端,即没有对片外输入或输出的功能,它只能由软件通过对的功能,它只能由软件通过对C C口某位的置位或复位来口某位的置位或复位来实现对中断请求的允许或禁止。实现对中断请求的允许或禁止。 端口端口A A的中断请求的中断请求INTRAINTRA可以通过对可以通过对PC4PC4的置位或复的置位或复位加以控制,位加以控制,PC4PC4置置1 1,允许,允许INTRAINTRA工作;工作; PC4PC4置置0 0,则,则屏蔽屏蔽INTRA INTRA 。 端口的中断请求端口的中断请求INTEBINTEB可以通过对可以通过对PC2PC2的置位或的置位或复位加以控制。复位加以控制。第31页/共75页OBF#

20、OBF#:输出缓冲器满信号输出缓冲器满信号ACK#ACK#:外设应答信号外设应答信号INTRINTR:中断请求信号中断请求信号INTEINTE:中断允许信号中断允许信号PC6PC6查询查询第32页/共75页第33页/共75页端口端口A A与与B B为输出方式为输出方式 OBF#OBF#:输出缓冲器满信号输出缓冲器满信号,输出信号,低电平有,输出信号,低电平有效。效。 当它有效时,表示当它有效时,表示CPUCPU已把数据写入端口或的已把数据写入端口或的输出缓冲器等待输出。当输出缓冲器等待输出。当CPUCPU执行执行OUTOUT指令指令WR#WR#有效时,有效时,表示将数据锁存到输出缓冲器。表示将

21、数据锁存到输出缓冲器。 由由WR#WR#的上升沿把的上升沿把OBF#OBF#信号置成低电平。信号置成低电平。 由由ACK#ACK#的下降沿把的下降沿把OBF#OBF#信号复位为高电平。信号复位为高电平。 ACK#ACK#:外设应答信号外设应答信号,低电平有效。,低电平有效。 当当ACK#ACK#有效时,表示有效时,表示8255A8255A中的数据已被外设取走。中的数据已被外设取走。 第34页/共75页 INTRINTR:中断请求信号中断请求信号,高电平有效。,高电平有效。 ACK#ACK#信号结束(回到高电平),信号结束(回到高电平),8255A8255A便向便向CPUCPU发发中断请求信号中

22、断请求信号INTRINTR。 写信号写信号WR#WR#上升沿使上升沿使INTRINTR复位,变为低电平。复位,变为低电平。 INTEINTE:中断允许信号中断允许信号。 端口端口A A的输出中断请求的输出中断请求INTRAINTRA可以通过对可以通过对PC6PC6的置位的置位或复位来加以允许或禁止。或复位来加以允许或禁止。 端口端口B B的输出中断请求的输出中断请求INTRBINTRB可以通过对可以通过对PC2PC2的置位的置位或复位来加以允许或禁止。或复位来加以允许或禁止。 第35页/共75页第36页/共75页第37页/共75页 例例1 1:设:设8255A8255A为工作方式为工作方式1

23、1,A A口为输出。设置中口为输出。设置中断允许信号(端口的地址范围为断允许信号(端口的地址范围为300H300H303H303H)。)。MOV DXMOV DX, 303H303H;置;置8255A8255A控制口控制口MOV ALMOV AL, 00001101B 00001101B ;置;置C C口按位控制字,使口按位控制字,使PC6PC61 1,;允许发中断请求;允许发中断请求 OUT DXOUT DX, ALALMOV ALMOV AL, 00001100B 00001100B ;置;置PC6PC60 0,禁止发中断请求,禁止发中断请求OUT DXOUT DX,ALAL 第38页/共

24、75页方式方式2 2 方式方式2 2为为选通双向传输选通双向传输,仅适用于端口仅适用于端口A A。 方式方式2 2控制字格式及含义:控制字格式及含义: INTRAINTRA:中断请求信号中断请求信号,高电平有效。端口,高电平有效。端口A A完成一次输入完成一次输入或输出数据操作后,可通过或输出数据操作后,可通过INTRAINTRA向向CPUCPU发中断请求。发中断请求。 STBSTB# #:输入选通信号输入选通信号,低电平有效。当,低电平有效。当STBSTB有效时,把有效时,把外设输入的数据信号锁存入端口外设输入的数据信号锁存入端口A A。 IBFAIBFA:输入缓冲器满输入缓冲器满,高电平有

25、效。当,高电平有效。当IBFAIBFA有效时,表示有效时,表示已有一个数据送入端口已有一个数据送入端口A A,等待,等待CPUCPU读走。此信号可供读走。此信号可供CPUCPU作输入作输入查询用。查询用。第39页/共75页 OBFOBF# #:输出缓冲器满输出缓冲器满,低电平有效。当,低电平有效。当OBFOBF有效时,表有效时,表示示CPUCPU已将一个数据写入端口已将一个数据写入端口A A,通知外设,可以将其取走。,通知外设,可以将其取走。 ACKA#ACKA#:外设应答信号外设应答信号,低电平有效。当,低电平有效。当ACKAACKA有效时,表示有效时,表示端口端口A A输出的数据已送到外设

26、。输出的数据已送到外设。 INTE1INTE1:A A口口输出输出中断允许信号中断允许信号(在片内)。可以由软件通(在片内)。可以由软件通过对过对PC6PC6的置位或复位来加以允许或禁止。的置位或复位来加以允许或禁止。 INTE2INTE2:A A口口输入输入中断允许信号中断允许信号(在片内)。可以由软件对(在片内)。可以由软件对PC4PC4的置位或复位来加以允许或禁止。的置位或复位来加以允许或禁止。 第40页/共75页8.1.4 8255A的工作方式第41页/共75页第42页/共75页第43页/共75页第44页/共75页工作过程工作过程 (1 1)当数据端口作为输入工作时,在)当数据端口作为

27、输入工作时,在STB#STB#有效时,有效时,由外设把输入数据送入端口,并发出由外设把输入数据送入端口,并发出IBFIBF有效信号。有效信号。 当当CPUCPU执行执行ININ指令对该数据口进行读入操作后,由指令对该数据口进行读入操作后,由RD#RD#的上升沿使的上升沿使IBFIBF复位,为下一次输入数据作好准备。复位,为下一次输入数据作好准备。 如果该数据端口的中断允许如果该数据端口的中断允许INTEINTE被置位,则在被置位,则在STB#STB#信号回复到高电平时,信号回复到高电平时,8255A8255A通过通过INTRINTR向向CPUCPU发中发中断请求。断请求。 若若CPUCPU响应

28、该中断请求,读取该数据端口的输入数响应该中断请求,读取该数据端口的输入数据,则据,则RD#RD#由下降沿使由下降沿使INTRINTR复位,为下一次数据输入请复位,为下一次数据输入请求中断作好准备。求中断作好准备。第45页/共75页工作过程工作过程 (2 2)当数据端口作为输出口时,在)当数据端口作为输出口时,在CPUCPU把数据写把数据写入端口后,由入端口后,由WR#WR#的上升沿使的上升沿使OBF#OBF#有效并使有效并使INTRINTR复位。复位。 OBF#OBF#由由8255A8255A输出到外设,并通知外设可以取走端输出到外设,并通知外设可以取走端口的输出数据。当外设取走一个数据时,应

29、向口的输出数据。当外设取走一个数据时,应向8255A8255A发发回应答信号回应答信号ACK#ACK#。ACK#ACK#的有效低电平可以使的有效低电平可以使OBF#OBF#复位,为下一次输复位,为下一次输出作好准备。出作好准备。 (3 3)当数据端口既作输入又作输出选通双向传送)当数据端口既作输入又作输出选通双向传送时,其时序图上所表示的工作过程将是以上输入时序时,其时序图上所表示的工作过程将是以上输入时序与输出时序的综合。与输出时序的综合。 8.1.5 时序关系 8.1 可编程并行通信接口芯片8255A第46页/共75页1 1、利用、利用8255A8255A(方式(方式0 0)作为打印机的连

30、接接口,采用查询方式,)作为打印机的连接接口,采用查询方式,CPUCPU通过通过8255A8255A的的A A口将存放在从口将存放在从BUFBUF单元开始的内存缓冲区中的单元开始的内存缓冲区中的256256个字符(个字符(ASCIIASCII码)码)输出给打印机去打印。完成初始化编程和打印一组字符的程序段。(输出给打印机去打印。完成初始化编程和打印一组字符的程序段。(8255A8255A的端口地址范围为的端口地址范围为0FBD0H0FBD0H0FBD3H0FBD3H)数据选通信号数据选通信号打印机忙信号打印机忙信号第47页/共75页2 2、8255A8255A工作于方式工作于方式0 0,利用,

31、利用8255A8255A将外设开关的二进制状态从将外设开关的二进制状态从端口端口A A输入,经程序转换为对应的输入,经程序转换为对应的LEDLED段选码段选码( (字形码字形码) ) 后,再从后,再从端口端口B B输出到输出到LEDLED显示器。具体连线图如图显示器。具体连线图如图(a)(a)所示。所示。LEDLED显示器显示器如图如图(b)(b)所示。完成初始化及输入、输出控制程序(设所示。完成初始化及输入、输出控制程序(设8255A8255A的的端口地址为:端口地址为: 端口端口A A:D0HD0H,端口,端口B B:D1HD1H,端口,端口C C:D2HD2H,控制口:,控制口:D3HD

32、3H)。)。第48页/共75页地地址址译译码码地址地址CPU(8088)RDWRA0A1_D7D08255ARDWRA0A1_PA0PA1PA2PA3PB0PB1PB2PB3PB4PB5PB6PB7+5V2K4K0K1K2K3abcdefgh+5V74LS04LED(a) 连线图连线图地地址址译译码码地址地址CPU(8088)RDWRA0A1_D7D08255ARDWRA0A1_PA0PA1PA2PA3PB0PB1PB2PB3PB4PB5PB6PB7+5V2K4K0K1K2K3第49页/共75页3 3、8255A8255A的端口的端口A A(方式(方式1 1)与打印机相连。利用中断方式向打印机

33、输出一组)与打印机相连。利用中断方式向打印机输出一组(字符串长度为(字符串长度为256256字节)字符。字节)字符。82558255的端口地址为的端口地址为300H300H303H303H,82598259的端的端口地址为口地址为020H020H与与021H021H)。完成中断打印输出字符的程序(由主程序)。完成中断打印输出字符的程序(由主程序MAINMAIN和中和中断服务子程序断服务子程序SUBPSUBP两部分组成)。两部分组成)。第50页/共75页4 4、(选做)设甲、乙两机之间进行并行通信,共传送、(选做)设甲、乙两机之间进行并行通信,共传送1KB1KB数据。数据。 甲机一方的甲机一方的

34、8255A8255A的的PAPA口采用方式口采用方式2 2并用中断方式并用中断方式传送数据。传送数据。 乙机一方乙机一方8255A8255A的的PAPA口与口与PBPB口采用方式口采用方式0 0输出与输输出与输入,按查询方式传送数据。入,按查询方式传送数据。 接口电路的连接如图所示。甲机一侧的接口电路的连接如图所示。甲机一侧的8255A8255A的的A A口作双向传送,既作输出又作输入,它的中断请求线口作双向传送,既作输出又作输入,它的中断请求线由由PC3PC3接到接到8259A8259A的的IR2IR2上。乙机一侧的上。乙机一侧的8255A8255A的的A A口和口和B B口是单向传送,分别

35、作输出与输入。口是单向传送,分别作输出与输入。 完成甲机完成甲机8255A8255A的初始化程序和中断服务程序。的初始化程序和中断服务程序。第51页/共75页第52页/共75页8255A8255A与打印机接口的初始化程序段与打印机接口的初始化程序段MOV DXMOV DX,0FBD3H 0FBD3H ;8255A8255A的控制寄存器端口地址的控制寄存器端口地址MOV ALMOV AL,10000001B 10000001B ;方式选择控制字(;方式选择控制字(A A组方式组方式0 0:A A口输出,口输出, ;PC7PC7PC4PC4输出。输出。B B组方式组方式0 0:B B口输出,口输出

36、, ;PC3PC3PC0PC0输入)输入)OUT DXOUT DX,AL AL ;控制字送控制口寄存器;控制字送控制口寄存器MOV ALMOV AL,00001111B 00001111B ;C C口置位口置位/ /复位控制字,使复位控制字,使PC7PC7置置1 1 OUT DXOUT DX, AL AL ;C C口置位口置位/ /复位控制字送控制寄存器复位控制字送控制寄存器第53页/共75页打印一组字符的程序段打印一组字符的程序段 MOV SIMOV SI,OFFSET BUFOFFSET BUF;取字符串的内存首地址;取字符串的内存首地址 MOV CXMOV CX,100H100H;将打印

37、字符长度作为循环次数;将打印字符长度作为循环次数PLPL:MOV DXMOV DX,0FBD2H0FBD2H;C C口地址口地址 IN ALIN AL,DXDX;从;从C C口查询打印机的状态信息口查询打印机的状态信息; BUSYBUSY0? 0? (即(即PC1PC10?0?) AND ALAND AL,00000010B 00000010B JNZ PL JNZ PL;若;若BUSYBUSY1 1,则循环等待;,则循环等待; ;BUSYBUSY0 0,则向,则向A A口送出数据口送出数据第54页/共75页打印一组字符的程序段(续)打印一组字符的程序段(续)MOV ALMOV AL,SISI

38、;从内存中取一个字符准备输出;从内存中取一个字符准备输出MOV DXMOV DX,0FBD0H 0FBD0H ;A A口地址送口地址送DXDXOUT DXOUT DX,ALAL;将内存中的一个字符输出到;将内存中的一个字符输出到A A口口MOV DXMOV DX,0FBD3H0FBD3H;控制口地址;控制口地址MOV ALMOV AL,00001110H 00001110H ;设定;设定C C口按位操作控制字,口按位操作控制字,;置为低(;置为低( PC7 PC7 0 0)OUT DXOUT DX,ALALNOPNOP;使负脉冲宽度延时;使负脉冲宽度延时NOPNOPMOV ALMOV AL,0

39、0001111B 00001111B ;置为高电平;置为高电平 (PC7PC71 1),),;在;在PC7PC7上生成上生成1 1个负脉冲个负脉冲OUT DXOUT DX, ALAL第55页/共75页打印一组字符的程序段(续)打印一组字符的程序段(续)INC SIINC SI;指向内存中下一个字符;指向内存中下一个字符LOOP PLLOOP PL;字符数减;字符数减1,1,若输出字符未完,则继续若输出字符未完,则继续HLTHLT;若输出字符已完,则暂停;若输出字符已完,则暂停第56页/共75页初始化及输入、输出控制程序如下:DATA SEGMENT SSEGCODE DB 3FH,06H,5B

40、H,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS: CODE,DS: DATASTART:MOV AX, DATA MOV DS, AX MOV AL,90H ;设置方式选择控制字,A口工作于方式0输入, ;B 口工作于方式0输出 OUT 0D3H, AL RDPORTA : IN AL,0D0H ; 读A口 AND AL,0FH ; 取A口低4位 MOV BX,OFFSET SSEGCODE ; 取LED段选码表首地址 XLAT ;查表,AL(BX+AL)第57页/共

41、75页 OUT 0D1H,AL ;从B口输出LED段选码,显示相应字形符号 MOV AX,XXXXH ;延时DELAY: DEC AX JNZ DELAY MOV AH,1 ;判断是否有键按下 INT 16H JZ RDPORTA ;若无,则继续读端口A MOV AH,4CH ; 否则返回DOS INT 21HCODE ENDS END START 第58页/共75页主程序主程序MAINMAIN ;设置中断向量;设置中断向量MAINMAIN:CLICLI;关中断;关中断PUSH DSPUSH DS;保存原;保存原DSDSMOV AXMOV AX,SEG SUBPSEG SUBP;为打印驱动子程

42、序入口;为打印驱动子程序入口SUBPSUBP;设置新的中断向量;设置新的中断向量DSDS:DXDXMOV DSMOV DS,AXAX;SUBPSUBP的段地址送的段地址送DSDSMOV DXMOV DX,OFFSET SUBP OFFSET SUBP ;SUBPSUBP的偏移地址送的偏移地址送DXDXMOV AHMOV AH,25H25H;设置中断向量的功能号;设置中断向量的功能号AHAHMOV ALMOV AL,0AH0AH;为;为82598259的的IR2IR2建立建立0AH0AH号中断向量号中断向量;表项;表项INT 21H INT 21H POP DSPOP DS;恢复原;恢复原DSD

43、S第59页/共75页 ;82558255初始化初始化MOV DXMOV DX,303H303H;设定;设定82558255控制端口地址控制端口地址MOV ALMOV AL,0A0H0A0H;82558255初始化,设置方式选择控制字初始化,设置方式选择控制字OUT DXOUT DX,ALAL;控制字送端口;控制字送端口 MOV ALMOV AL,00001101B00001101B ;设定;设定C C口置位口置位/ /复位控制字复位控制字OUT DXOUT DX,ALAL;置;置PC6PC61 1,使,使INTEAINTEA1 1,允许,允许8255A8255A产生产生;中断;中断第60页/共

44、75页;设置数据地址和字符数;设置数据地址和字符数MOV AXMOV AX,OFFSET DATAOFFSET DATAMOV STR_PTRMOV STR_PTR,AXAX;设置打印字符串的偏移地址;设置打印字符串的偏移地址MOV AXMOV AX,SEG DATASEG DATAMOV STR_PTR+2MOV STR_PTR+2,AXAX;设置打印字符串的段地址;设置打印字符串的段地址MOV MOV STR_NUMSTR_NUM,100100H H ;设置打印字符串的字符数;设置打印字符串的字符数;引发第一次中断请求;引发第一次中断请求STISTI;CPUCPU开中断开中断INT 0AH

45、INT 0AH第61页/共75页中断服务子程序中断服务子程序SUBPSUBP;保护现场;保护现场SUBPSUBP:PUSH SIPUSH SIPUSH DSPUSH DSPUSH AXPUSH AXPUSH PUSH D DX X;字符串字符串处理并输出处理并输出CLDCLDLDS SILDS SI,DWORD PTR STR_PTRDWORD PTR STR_PTR;设置打印字符串地址的指针;设置打印字符串地址的指针DSDS:SISILODSBLODSB;从从SISI寻址的字符串中取一个寻址的字符串中取一个8 8位字符送位字符送ALAL第62页/共75页MOV STR_PTRMOV STR_

46、PTR,SISI;保存新的字符串指针;保存新的字符串指针MOV DXMOV DX,300H300H;82558255的的A A口地址口地址OUT DXOUT DX,ALAL;将;将ALAL的一个打印字符输出到的一个打印字符输出到A A口口 DEC DEC STR_NUMSTR_NUMJNZ NEXT JNZ NEXT ;字符送完否;字符送完否? ?未完,转未完,转NEXTNEXTMOV ALMOV AL,00001100B00001100B;已送完,重设;已送完,重设C C口置位口置位/ /复位控制字复位控制字MOV DXMOV DX,303H303H;8255A8255A控制端口地址控制端口

47、地址OUT DXOUT DX,ALAL;置;置PC6PC60 0,使,使INTEAINTEA0 0,禁止,禁止8255A8255A产生中断产生中断第63页/共75页NEXTNEXT:MOV ALMOV AL,20H20H;设置;设置8259A8259A的的OCW2OCW2命令命令OUT 20HOUT 20H,ALAL; 送中断结束命令给送中断结束命令给8259A8259A的端口的端口POP POP D DX XPOP AXPOP AXPOP DSPOP DSPOP SIPOP SIIRETIRET; 中断返回中断返回 第64页/共75页甲机的程序甲机的程序 ;8255A8255A初始化初始化M

48、OV DXMOV DX,303H303H;8255A8255A控制口控制口MOV ALMOV AL,11000000B11000000B;方式选择字:;方式选择字:A A口为口为;方式;方式2 2;B B口未用口未用OUT DXOUT DX,ALALMOV ALMOV AL,00001001B 00001001B ;置位;置位PC4PC4,设置,设置INTE2INTE21 1,;A A口输入中断允许口输入中断允许OUT DXOUT DX,ALALMOV ALMOV AL,00001101B00001101B;置位;置位PC6PC6,设置,设置INTE1INTE11 1,;A A口输出中断允许口

49、输出中断允许OUT DXOUT DX,ALALMOV SIMOV SI,300H300H;发送数据块内存首地址;发送数据块内存首地址MOV DIMOV DI,410H410H;接收数据块内存首地址;接收数据块内存首地址MOV CXMOV CX,3FFH3FFH;置发送与接收字节数;置发送与接收字节数 第65页/共75页AGAINAGAIN:STISTI;CPUCPU开中断开中断HLT HLT ;等待中断;等待中断DEC CX DEC CX ;字节数减;字节数减1 1JNZ AGAIN JNZ AGAIN ;未完,继续;未完,继续MOV AXMOV AX,4C00H 4C00H ;已完,退出;已

50、完,退出INT 21H INT 21H ;返回;返回DOSDOS;中断服务程序;中断服务程序ROUTROUT PROC FAR PROC FAR ;中断服务程序入口;中断服务程序入口ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA,SSSS:STACKSTACKPUSH AXPUSH AXPUSH DXPUSH DXPUSH DIPUSH DIPUSH SI PUSH SI MOV DXMOV DX,303H 303H ;8255A8255A控制口控制口MOV ALMOV AL,08H 08H ;复位;复位PC4PC4,使,使INTE2INTE20 0,;禁止

51、输入中断;禁止输入中断OUT DXOUT DX,AL AL 第66页/共75页MOV ALMOV AL,0CH0CH;复位;复位PC6PC6,使,使INTE1INTE10 0,;禁止输入中断;禁止输入中断OUT DXOUT DX,ALALCLI CLI ;关中断;关中断MOV DXMOV DX,302H 302H ;8255A8255A状态口状态口IN ALIN AL,DX DX ;查中断源,读状态字;查中断源,读状态字MOV AHMOV AH,ALAL;保存状态字;保存状态字AND ALAND AL,20H20H;查状态位;查状态位IBFIBF1?1?即判是输入即判是输入? ?JZ OUTP

52、JZ OUTP;不是,则跳转至输出程序;不是,则跳转至输出程序OUTPOUTPINPINP: MOV DXMOV DX,300H300H;是,则由;是,则由A A口读取数据口读取数据IN ALIN AL,DXDXMOVMOVDIDI,ALAL;将输入数据存入内存区;将输入数据存入内存区INC DI INC DI ;接收数据块内存地址加;接收数据块内存地址加1 1JMP RETURN JMP RETURN ;跳转;跳转RETURN RETURN OUTPOUTP:MOV DXMOV DX,300H 300H ;8255A 8255A 数据口数据口A AMOV ALMOV AL,SISI;从发送数

53、据块内存取数;从发送数据块内存取数OUT DXOUT DX,AL AL ;由;由A A口输出口输出INC SI INC SI ;发送数据块内存地址加;发送数据块内存地址加1 1 第67页/共75页RETURNRETURN:MOV DXMOV DX,303H303H;8255A8255A控制口控制口MOV ALMOV AL,00001101B00001101B ;置位;置位PC6PC6,设置,设置INTE1INTE11 1,;允许;允许A A口输出中断口输出中断OUT DXOUT DX,ALALMOV ALMOV AL,00001001B00001001B ;置位;置位PC4PC4,设置,设置INTE2INTE21 1,;允许;允许A A口输入中断口输入中断OUT DXOUT DX,ALALMOV ALMOV AL,62H62H;设置;设置OCW2OCW2为特殊为特殊EOIEOI中断中断;结束方式

温馨提示

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

评论

0/150

提交评论