1、微型计算机原理与应用 -输入输出和接口技术微型计算机原理与应用 -可编程并行接口2023-1-30382558255与系统的连接与系统的连接BG2AG2A AB BC C74LS13874LS138&1 10YD D7 7D D0 0 PAPA0 0RESETRESET82558255PAPA7 7PBPB7 7PBPB0 0PCPC0 0PCPC7 7 WRRDA A1 1A A0 0CS&80888088系统系统BUSBUSA A7 7IOWA A1111A A9 9A A8 8A A1010A A1313A A1212A A4 4A A2 2A A3 3A A6 6A A5 5A A15
2、15A A1414D D7 7D D0 0 IORRESETRESETIORA A1 1A A0 0IOW8255与系统的连接与系统的连接o 8255相当于三个独立的8位简单接口。o 各端口既可设置为输入口,也可设置为输出口,但不能同时实现输入及输出。o C端口即可以是一个8位的简单接口,也可以分为两个独立的4位端口。o 设置为输出口时有锁存能力,设置为输入口时无锁存能力。o 属于无条件传输方式属于无条件传输方式PPT+PPT+表述表述1 1、工作方式、工作方式0 0查询方式交换数据查询方式交换数据IN AL,PORT ;PORT是端口号 输入输入输入缓冲器译码器数据数据DBDBABAB外设8
3、nIO/MRD外设将数据送到外设将数据送到82558255输入缓冲器中;输入缓冲器中;CPUCPU给出有效的给出有效的82558255地址;地址;CPUCPU发读命令,将发读命令,将8255A8255A输入缓冲器中数据读入输入缓冲器中数据读入CPUCPU的的ALAL寄存器中。寄存器中。PPTPPT8255A的工作方式方式0(输出方式)oOUT PORT,AL输出锁存器译码器数据数据DBDBABAB外设8nIO/MWRPPTPPT2023-1-307教材实例:例教材实例:例1 1 将将8255 C8255 C端口的端口的8 8根根I/OI/O线接线接8 8只发光二极管的正极只发光二极管的正极(八
4、个负极均接八个负极均接地地),编写使这,编写使这8 8只发光二极管依次亮、灭的程序。设只发光二极管依次亮、灭的程序。设82558255的端口地址为的端口地址为380H380H383H383H。8255方式0应用举例12023-1-308程序框图程序框图控制字寄存器的端口地址送间址寄存器控制字寄存器的端口地址送间址寄存器写入方式选择字写入方式选择字PC=10向向PCPC口送数据口送数据 写入置位字点亮一只发光二极管写入置位字点亮一只发光二极管延时让发光二极管发光延时让发光二极管发光向向PCPC口送第二个数据口送第二个数据熄灭发光二极管熄灭发光二极管11号功能调用检测有无键入号功能调用检测有无键入
5、有键入吗有键入吗?NYPC=10PC=0 PC1=102023-1-309stackstack segment stack segment stack stackstack dw dw 32 dup(0)32 dup(0)stackstack ends endscode code segment segmentbeginbegin proc far proc far assume ss:stack,cs assume ss:stack,cs:code:code push ds push ds sub ax,ax sub ax,ax push ax push ax MOV DX,383HMOV
6、DX,383H;383H383H为控制字寄存器的端口地址为控制字寄存器的端口地址 MOV AL,80HMOV AL,80H OUT DX,AL OUT DX,AL;写入方式选择字写入方式选择字参考程序参考程序2023-1-3010 MOV DX,382H MOV DX,382H ;C C端口的端口地址送端口的端口地址送DXDX MOV AL,1 MOV AL,1 ;C C端口的输出值端口的输出值AGAIN:OUT DX,AL AGAIN:OUT DX,AL ;给给C C口送数据,点亮一只二极管口送数据,点亮一只二极管 LOOP$LOOP$;延时延时 LOOP$LOOP$;延时;延时 PUSH
7、AXPUSH AX MOV AH,11 MOV AH,11 ;1111号功能调用:检查键盘有无输入号功能调用:检查键盘有无输入 INT 21H INT 21H ;无:;无:0 0送送ALAL;有:;有:-1-1送送ALAL INC AL INC AL ;有键入,;有键入,AL=-1AL=-1,ALAL增增1 1,AL=0AL=0 POP AX POP AX JZ BACK JZ BACK ROL AL,1 ROL AL,1 ;通过循环移位指令改变C端口的输出值,灭第一盏灯点第二盏灯 JMP AGAIN JMP AGAIN ;给端口送数据BACK:retBACK:ret2023-1-3011be
8、ginbegin endp endpcodecode ends ends end begin end begin 方式方式0 0也可作为查询式输入或输出的接口电路,此时端口也可作为查询式输入或输出的接口电路,此时端口A A和和B B分别可作为一个数据端口,而取端口分别可作为一个数据端口,而取端口C C的某些位作为这两个数据端的某些位作为这两个数据端口的控制和状态信息。口的控制和状态信息。2023-1-30128255方式0应用举例2o 例2在某工业系统中,要不断检测8个开关K7 K0的通断状态,并随时在LED7LED0上显示出来(开关合,LED亮;开关断,LED灭)。2023-1-3013o
9、端口地址的分配端口地址的分配:如图,地址线A2 A1是可以变化的,其他都是固定的。o 端口A地址:90H(A2A1=00)o 端口B地址:92H(A2A1=01)o 端口C地址:94H(A2A1=10)o 控制字寄存器地址:96H(A2A1=11)A1A1A0A0注意连接线上的信号方向!2023-1-3014o 控制程序:oMOVAL,10010000B;分析控制字oOUT96H,AL;写入8255控制字 o L1:I NAL,90H;收K7 K0的通断状态 oOUT92H,AL;输出收到的数据到PB口,CALLDELAY;延时,保持灯亮 oJMPL1;转移到L1,继续测定。延时程序先不用管延
10、时程序先不用管2023-1-3015例3 检测8个开关K7 K0的通断状态,将闭合的开关个数,在LED7LED0上显示出来。o 例3的分析o 接收A口上开关的状态到AL中 o 检查AL中有几个位是“0”o 用换码指令将“0”的个数转换成对应的字型码 o 将字型码从B口输出 2023-1-3016o 7段数码管及字形码o 接法:共阴极与共阳极 o 字形码与字形o 字形码由PB口提供。o PB口的字形码从哪儿来?每个字形对应一组编码每个字形对应一组编码字形码。字形码。2023-1-3017参考程序o MOV AL,1001 0000B o OUT 96H,AL;置8255方式控制字 L0:IN A
11、L,90H;收开关状态 o MOV DL,00H;将来存放1的个数L1:AND AL,AL o JZ EXT1 o SHL AL,1 o JC L2 o INC DL L2:JMP L1;未查完,继续查 EXT1:LEA BX,TABLE;TABLE中方 的是0-7的字形码 o MOV AL,DL o XLAT;将DL中的“0”的个数转换成字型码 o MOV DX,92H o OUT DX,AL;将字型码从B口输出 o CALL DELAY;延时o JMP L0 检查检查1 1的个数的个数码转变并输出显示码转变并输出显示A A口输入口输入B B口输出,方式口输出,方式0 02023-1-301
12、88255综合练习 方式0应用举例4o要求:o掌握芯片之间连接o相应端口地址会分析。o看懂图上的芯片之间的联系o编写控制程序。要求:将要求:将IN7IN7上的模拟量转换成数字量,存入上的模拟量转换成数字量,存入BUFBUF单元单元 分析:分析:A口做数据输入端口口做数据输入端口 B口没有使用口没有使用 C口高口高4位是输入口,低位是输入口,低4位是输位是输出口出口 均采用方式均采用方式0进行控制。进行控制。2023-1-3019o分析顺序:oCPU与8255连线oCPU与译码器间的连线,读懂8255的端口地址o8255与外设连接 C口低4位是输出用ADC0809的工作原理:的工作原理:1、用、
13、用C、B、A三个端子选择模拟量的输入(三个端子选择模拟量的输入(IN0-IN7)端:)端:000-IN0、001-IN1、110-IN6、111-IN7(每次只能转换1路,所以要先选择)2、ALE有效时,有效时,CBA上信号存入上信号存入ADC内的地址锁存器中内的地址锁存器中 CBA上面的数据随时都有,什么时候是选择模拟量通道的那个信号呢,ALE有效的时候,CBA上的数据被锁存,这个信号才是输出端选择信号。3、START端有正脉冲,启动端有正脉冲,启动AD转换转换注:ALE 和STA RT 接到同一个引脚上。4、转换结束时,、转换结束时,EOC为为“1”转换时间:64个外部时钟周期5、ADC的
14、数据输出锁存器后接有缓冲器,缓冲器靠的数据输出锁存器后接有缓冲器,缓冲器靠OE=“1”选选中中。如果OE不打开,锁存器与CPU间就不联通。6、转换好的数据从、转换好的数据从D7-D0端传给端传给CPU2023-1-3020o8255的端口地址分析的端口地址分析qA7 A6 A5 A4 A3 A2 A1 A0 q 1 0 0 0 1 0 X X qA口:88H、B口:89H、C口:8AH、控制字口:8BHq工作方式控制字工作方式控制字qMOV AL,1001 1000B qOUT 8BH,ALq选择选择IN7并启动并启动A/D转换转换qMOV AL,0000 0111B ;PC2 PC1 PC0
15、;此时不启动转换,PC3=0qOUT 8AH,AL;选择IN7 qMOV AL,0000 1111B qOUT 8AH,AL qMOV AL,0000 0111B;START引脚上0-1-0有一个脉冲qOUT 8AH,AL;启动A/D转换,蓝色111决定了端口2023-1-3021q检查检查A/D转换是否结束?并打开输出缓冲器转换是否结束?并打开输出缓冲器q L1:IN AL,8AH ;检查PC4q TEST AL,0001 0000B q JZ L1;AD转换没有结束转L1 q;AD转换结束处理 q(打开输出缓冲器靠硬件连线解决)接收转换好的数据接收转换好的数据 IN AL,88H MOV
16、BUF,AL2023-1-30228255 的方式1-选通输入方式 o端口A和端口B仍作为数据的输入、输出口;o端口C的某些位作为端口A和端口B的选通控制信号,配合AB 口使用。oA口、B口在作为输入和输出时的选通信号源自不同的引脚。o表中的输入输出时是针对8255而言。在这种工作方式下,数据的输入输出操作要在选通信号控制下完成。在这种工作方式下,数据的输入输出操作要在选通信号控制下完成。和外设商量着来和外设商量着来2023-1-3023外部设备外部设备8255A方式1(输入)情况下四个联络信号及工作过程111外设产生外设产生数据数据数据出现在外数据出现在外部数据总线部数据总线外设发选通外设发
17、选通信号信号数据进入数据进入8255A的的A口口1通知外设缓冲区已通知外设缓冲区已满,表示已经接受满,表示已经接受数据数据1向向C口写口写P4位置位置1,开放中断开放中断向向CPU发中断请发中断请求信号求信号CPU发读信发读信号号注意:此工作是注意:此工作是8255A8255A初始化时初始化时完成的!完成的!PPTPPTPCPC口的哪一位做选通信号和口有关和输出输入口的哪一位做选通信号和口有关和输出输入有关,比如同为输入有关,比如同为输入A A口用口用PC4PC4,B B口用口用PC2PC22023-1-3024o STB#(Strobe闸门)选通输入信号,低电平有效。它是外设供给的输入信号,
18、当其有效时将外设来的数据送入8255的输入锁存器。A组对应(接到)PC4;B组对应PC2。o IBF(input buffer full)输入锁存器满,高电平有效。这是一个8255输给外设的联络信号。当其有效时,通知外设输入的数据已写入缓冲器,此时不能送下一个数据。CPU用IN指令取走数据后,此信号被清除。A组对应PC5;B组对应PC1。如果外设不需要这个信号你可以悬空不用。这两个信号(引脚)是这两个信号(引脚)是82558255与外设间的联络引脚与外设间的联络引脚2023-1-3025o INTR(interrupt request)中断请求信号,高电平有效。是由8255A输出的一个信号。用
19、于向CPU请求中断,让CPU读走输入锁存器中的数据。A组对应PC3;B组对应PC0。向CPU发出中断请求有一个前提条件,INTE 必须是1.o INTE(interrupt enable)端口中断允许信号,可由用户通过对PC4位置位来实现。如果你想让CPU已中断的方式处理输入的数据,那么设INTE=1,允许发出INTR请求。该信号没有外接引脚,INTE状态通过C口置位复位控制字来设置。如图如图和和CPUCPU联络的引脚联络的引脚C C口置位复位控制字来设置口置位复位控制字来设置2023-1-3026注意:2023-1-30278255A8255A方式方式1 1输入工作过程小结:输入工作过程小结
20、:需要事先设置开放内部中断;外设产生数据,发选通信号,将数据送入8255A;一方面将输入缓冲区满信号激活,通知外设不再送入数据;一方面与内部INTE信号联合作用产生INTR信号,通知CPU外设送来数据等待处理;CPU响应后,发出读信号,取走数据。注意:STB只持续一个时钟周期,IBF在CPU读取数据后才变成无效,是最晚改变的一个信号。2023-1-3028选通输入时序选通输入时序o1)8255与外设间的数据“INPUT DATA”上线o2)稍后STB变为低电平o3)再稍后 8255缓冲器满IBF变为高电平o4)此时8255锁存器将数据锁存,STB变为高电平o5)INTR 给出中断请求信号o6)
21、响应后,将8255锁存器中内容通过D7-D0传送给CPU2023-1-3029o 与输入方式比较,输出方式的联络信联络信号的定义号的定义有所改变。o 使用B口时与输入一样使用PC2 PC1 PC0但是引脚上的定义有所不同。8255A8255A方式方式1 1工作过程(输出)工作过程(输出)2023-1-30308255A8255A方式方式1 1工作过程(输出)工作过程(输出)CPU发写信发写信号号1111向向C口写口写PC4位置位置1,开放中断开放中断1CPUCPU产生数据后,产生数据后,输出到数据总线输出到数据总线数据进入数据进入8255A通知外部设备取通知外部设备取走数据走数据外部设备取外部
22、设备取走数据走数据外设取走数据外设取走数据后的应答信号后的应答信号高电平告诉外高电平告诉外设数据缓冲区设数据缓冲区为空为空0PPTPPT2023-1-3031o OBF*(output buffer full)输出缓冲器满信号,8255A输输出给外设出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走o ACK*(Acknowledge)响应确认信号。是一个外设的响应信号,指示CPU输给8255A的数据已由外设接受。o INTR中断请求信号,高有效。n 当输出设备已接受了CPU输出的数据后,8255A输出此信号向输出此信号向CPU提出新的中断请求,提出新的中断请
23、求,要求CPU继续输出数据lINTE(interruptINTE(interrupt enable)enable)端口中断允许信号,端口中断允许信号,可由用户通过对PC6(INTEA)和PC2(INTEB)位置位来实现。INTE=1,允许发出INTR请求。该信号没有外接引脚C口的联络信号(方式口的联络信号(方式1输出)输出)2023-1-30328255A8255A方式方式1 1输出工作过程小结:输出工作过程小结:需要事先设置开放内部中断;CPU产生数据送入8255A;将输出缓冲区满信号激活,通知外设有数据到来;外设取走数据后,发响应信号给8255A,同时与内部INTE联合作用激活INTR,向
24、CPU发出中断请求号,让CPU再次送数据。注意:ACK只持续一个时钟周期,OBF在外设读取数据后才变成无效,而INTR是最晚改变的一个信号。2023-1-3033选通输出时序o1)D7-D0现有数据o2)输出寄存器满,OBF有效。o3)o3)外部设备ACK应答信号,从8255中把数据送给外设PA0-PA7。o数据拿走后,当OBF信号,从0变1那么此时INTR有效,发出中断信号。请送第二个数据。2023-1-3034例例7 73 3利用利用82558255作为打印机的连接接口,并通过该打印机接口字符串,字符串长度放在作为打印机的连接接口,并通过该打印机接口字符串,字符串长度放在DSDS段段的的C
25、OUNTCOUNT单元中,要打印的字符存放在从单元中,要打印的字符存放在从DATADATA单元开始的数据区中。单元开始的数据区中。8255综合练习 方式1应用举例2023-1-3035初始化程序初始化程序INIT:MOV DX,0FBC3HMOV AL,10000001B ;A组方式组方式0:A口输出,口输出,C口高口高4位输出位输出;B组方式组方式0:B口输出,口输出,C口低口低4位输入位输入OUT DX,AL ;写入至控制字寄存器;写入至控制字寄存器MOV AL,00001101B ;读取低;读取低8位位OUT DX,AL打印一批字符的程序打印一批字符的程序MOVCX,COUNTMOVSI
26、,OFFSETDATAGOON:MOV DX,0FBC2H INAL,DX ;从;从C口读入打印机口读入打印机BUSY信号信号ANDAL,02HJNZGOONMOVAL,SI;取一个字符;取一个字符2023-1-3036MOVDX,0FBC0HOUTDX,AL;输出一个字符到;输出一个字符到A口口MOVDX,0FBC2H ;准备在;准备在PC6上形成一个负脉冲上形成一个负脉冲MOVAL,0 OUTDX,AL;使;使PC6变低变低MOVAL,40HOUTDX,AL;再使;再使PC6变高变高INCSI;指向下一个字符;指向下一个字符LOOP GOONHLT8255A应用举例o 例8-1打印机接口。
27、为某应用系统配置一个并行打印机接口,并且通过接口CPU采用查询方式采用查询方式打印。已知欲打印数据存放在数据段中有效地址位2000H的单元中。8255的口地址位80H、81H、82H、83H。o 分析:由于打印接口直接面向的对象是打印机接口标准,而不是打印机本身,因此打印机接口要按照接口标准的要求进行设计,主要是8位并行数据线DATA0DATA7,2条握手联络线STB#、ACK#和1条忙线BUSY。有关打印机接口工作时序见下图。PPTPPT8255综合练习 方式1应用举例12023-1-3038硬件示意图oData1-data8:对打印机来讲是输入信号数据输入端oStrobeoSlct:当他为
28、低电平时打印机才能接受数据oInit:打印机初始化,原先打印缓冲器的内容清除掉。o注意:箭头的方向!oBusy:data1信号有效后才,他变成忙状态2525针插座针插座并行并行USBUSB插口插口-串行串行2023-1-3039o数据从B口输出,B口工作在方式1oC口的联络功能见上表oC口高四位做输出o打印机状态位都接到PA口,所以A口时输入口oC口低4位,由于有固定用途,不用设工作方式,B 口时输出口o插座是驱动器 起信号放大作用o8255端口B以选通方式作数据输出端口o在8255的B口中数据传输给打印机,打印机发回应答信号-ACKB后,8255的PC0向中断控制器(IR2)发中断请求,请C
29、PU再输出一个数据。o打印机选通由PC4控制(0有效)。初始化PC5由控制(0有效)2023-1-3040方式0掌握 方式1了解o编程要求o1)中断向量表输入一定要会!o2)8259初始化了解即可o为什么8255初始化在8259后面呢?因为如果8255在前,方式控制字一写,发出中断请求,8259却没准备好。o3)打印机选通及初始化由PC4/PC5完成。o4)查状态 查谁呢 查BUSYo5)保存寄存器,主程序子程序都用的,打架的寄存器保存硬件连接图o由PC6充当打印机的选通信号,通过对PC6的置位/复位来产生选通。同时,由PC2来接收打印机发出的“BUSY”信号作为能否输出的查询。o图中用825
30、5A的PA口作为输出打印数据口,工作于方式0,PC口高4位工作于输出方式,PC6产生STB#信号;PC口低4位工作于输入方式,PC2接收打印机的BUSY信号。PC6PC2PPT+PPT+工作流程工作流程由于工作在方式由于工作在方式0 0,联络,联络信号位可以自选。信号位可以自选。返回返回从图可见,DATA0DATA7STBBUSYACK它的工作流程它的工作流程:当CPU通过接口要求打印机打印数据时,先要查看BUSY信号,BUSY0时,才能向打印机输出数据。主机将要打印的数据送上数据线,然后发选通信号STB#=0(0.5微秒)信号通知打印机;打印机将数据读入,同时使BUSY线为高,通知主机停止送
31、数。这时,打印机内部对读入的数据进行处理。处理完以后送出ACK#=0信号(使ACK有效),同时使BUSY=0(失效),通知主机可以发下一个数据。8255A应用举例 结 束8255A 初始化BUSY=0?送 数送 STB#开始YN程序流程图程序流程图8255A应用举例MOV AL,81H ;工作方式字100001BOUT 83H,ALMOV AL,0DH ;置/复位字 01101B PC6位置高,使STB#=1 OUT 83H,ALTESBY:IN AL,82H ;查BUSY=0?(PC2=0?)TEST AL,04H ;00000100B JNZ TESBY ;忙,则等待;不忙,则向A口送数M
32、OV AL,2000H;从内存取数OUT 80H,AL ;送数据到A口MOV AL,0CH ;00001100B置STB#信号为低(PC6=0)OUT 83H,ALNOP;负脉冲宽度(延时)NOPINC AL ;置STB#为高(PC6=1)OUT 83H,AL结 束8255A 初始化BUSY=0?送 数送 STB#开始YN链接链接o 1、一个由8086CPU和8255A为主体构成的闭环调节系统的结构流程结构流程如图8.20所示:o 由8255A端口A输出的8位数字信息,经数模转换器DAC0832转换成模拟量。当CPU输出的数字量从00HFFH时,运算放大器输出04.98V的模拟电压,该电压经传
33、感器可调节控制现场的温度、速度、声音或流量等其他参数。o 控制现场的模拟信息经传感器和运算放大器可变换为一定范围内的电压值,这模拟电压经模数转换器ADC0809可变换为8位数字信息送回8255A的端口B,端口B可采用查询或中断方式与CPU联系。CPU经过分析比较,再输出一个数字量来控制现场。给排水压力监控、空调温度控制给排水压力监控、空调温度控制硬件连接图硬件连接图电机转速电机转速电磁阀电磁阀图中图中B B口的应答信号口的应答信号PC1PC1没用没用n 端口A工作在方式0:完成输出功能,用来向数模转换器输出8位数字信息。n 端口B工作在方式1:完成输入功能,用来接收由模数转换器输入的8位数字信
34、息。n 端口C作控制用:PC7用作模数转换器ADC0809的启动信号,PC2用作输入的STBB信号,PC0用作中断请求信号INTRB,通过中断控制器8259A可向CPU发中断请求,这些都要由初始化程序来定义。端口端口B B采用中断方式和采用中断方式和CPUCPU联系,中断请求信号经联系,中断请求信号经8259A8259A中断排队后送中断排队后送CPUCPU的的INTRINTR端端2 2、系统设计、系统设计o 如果采用中断方式,并定义中断类型码定义中断类型码为40H,那么首先应将相应的中断服务程序定位到存储器中断服务程序定位到存储器中,并将其入口地址的段基址和偏移地址入口地址的段基址和偏移地址值
35、值置入中断入口地址表中从100H地址开始的四个字节中。o 可使用的初始化和控制程序如下:o INTT:MOV DX,8255A控制端口MOV AL,86HOUT DX,ALMOV AL,05HOUT DX,AL;初始化8255A1 1000 0110B=86H000 0110B=86H设定方设定方式控制字式控制字:A A口方式口方式0 0输出输出B B口方式口方式1 1输入输入0 0000 0101B=05H000 0101B=05H设定设定C C口置位控制字:设置口置位控制字:设置INTE INTE 开中断开中断BOISBOIS系统自动分配系统自动分配3 3、程序设计、程序设计MOV DX,
36、8259A偶地址端口MOV AL,13HOUT DX,ALMOV DX,8259A奇地址端口MOV AL,40HOUT DX,ALMOV AL,03HOUT DX,ALMOV AL,0FEHOUT DX,AL;POUT:MOV DX,8255A端口端口AMOV AL,XXHOUT DX,AL;初始化8259A从端口A输出8位数据o MOV DX,8255A端口Co MOV AL,80Ho OUT DX,ALo MOV AL,0o OUT DX,AL;oWAIT:STIo JMP WAITo40H类型中断服务程序:o MOV DX,8255A端口Bo IN AL,DXo o IRET启动ADC0809PC7=1PC7=1启动后启动后C C口清零口清零以备后续使用以备后续使用82558255发出中断命令使执行发出中断命令使执行-数据输入数据输入等待指令等待指令中断标志位中断标志位置置1 1