1第七章第七章可编程外围接口芯片8255A及其应用7.18255A的工作原理一、8255A的结构和功能二、8255A的控制字及初始化编程三、8255A工作方式和C口状态字7.28255A的应用举例教材第九章内容2第七章7.18255A的工作原理8255A是一种通用的可编程并行I/O接口芯片,一般不需附加外部逻辑电路就可直接为CPU与外设之间提供数据通道;通过对它进行编程,可为CPU与外设之间的通信提供无条件、有条件和中断方式的接口电路,因此应用较广泛。8255A综述3第七章1、外形40引脚的芯片;双列直插式封装;一、8255A的结构和功能8255A的引脚图4第七章管脚小结:(1)与外设连接的管脚8255A有三个数据端口,每个端口是8位的,由此与外设相连接的管脚共有24位。•A口有八个I/O引脚PA7-PA0•B口有八个I/O引脚PB7-PB0•C口有八个I/O引脚PC7-PC05第七章(2)与CPU连接的管脚•数据线D7-D0;•读写控制线RD#、WR#;•片选信号CS#;•端口地址控制线A0和A1;•复位线RESET。(3)电源线和地线•电源线VCC,一般取+5V;•电源地线GND。6第七章2、内部结构数据端口A、B、C(其中C口被分成C口上半部分和C口下半部分两个部分)A组和B组控制逻辑;数据总线缓冲器;读/写控制逻辑。7第七章8第七章8255A与系统的连接示意图9第七章3、各部分功能简介数据端口A、B、C:可用来和外设传送信息;每个端口8位,通过编程设定其为输入口或输出口;8255数据端口功能表工作方式A口B口C口012基本输入\输出输出锁存输入三态应答式输入\输出输入输出均锁存应答双向输入输出输入输出均锁存基本输入\输出输出锁存输入三态基本输入\输出输出锁存输入三态应答式输入\输出输入输出均锁存作为A口、B口的控制位及状态位作为A口、B口的控制位及状态位10第七章控制端口D(A组和B组控制电路):8位端口,无对外引脚;接收CPU送的控制字,决定A组和B组的工作方式,或对C口的每位执行置位/复位等操作。数据总线缓冲器(D0-D7):由1个8位双向三态缓冲器构成;8255A内各端口通过数据缓冲器与系统总线相连。11第七章地址译码与读写控制逻辑根据系统送来的地址信号和控制信号,对数据信息、控制信息和状态信息的传送进行管理。CS#:片选信号,低有效,有效时允许8255A与CPU交换信息RD#:读信号,低有效,有效时允许CPU从8255A端口中读数据/状态。WR#:写信号,低有效,有效时允许CPU将控制字/数据写入8255A。RESET:复位信号,高有效。复位后,控制寄存器内容被清零。A口、B口和C口被置成输入方式。A1、A0:端口的选择信号。00—端口A01—端口B10—端口C11—端口D(控制口)12第七章8255A的基本操作13第七章8255A的初始化编程,通过输出指令让CPU对8255A控制字寄存器写数据,来设置8255A的初始状态8255A有两类控制字1、方式选择控制字:选择各端口的工作方式及操作类型(输入\输出)2、置位复位控制字:对C端口的任一位进行置位或复位操作二、8255A的控制字及初始化编程14第七章1、方式选择控制字15第七章通过对8255A的控制口写入置位/复位控制字,可使端口C的任意一个引脚的输出单独置1或清0。2、置位\复位控制字16第七章例1:设8255A的各端口地址为90H~93H,若要求各端口的工作状态如下:应怎样对8255A进行初始化编程?A口:方式0输出;B口:方式0输入;上C口:方式0输入;下C口:方式0输出;分析:控制口地址:93H工作方式控制字为:10001010B即8AH初始化程序片断:MOVAL,8AHOUT93H,AL17第七章例2:设一片8255A的口地址为60H~63H,要求从PC5的引脚输出一个正脉冲。分析:先将PC5清零,再将其置1,最后再清零8255PC5MOVAL,00001010BOUT63H,ALMOVAL,00001011BOUT63H,ALMOVAL,00001010BOUT63H,AL18第七章思考:例2中若要求输出方波信号,则程序片段为:AGAIN:MOVAL,00001011BOUT63H,ALCALLDELAY;调用延时子程序MOVAL,00001010BOUT63H,ALCALLDELAY;调用延时子程序JMPAGAIN……19第七章8255A有3种工作方式:方式0:基本的输入输出方式方式1:选通输入输出方式方式2:双向总线I/O方式各端口的工作方式,是通过编程向控制口写入方式选择控制字设置的。A口可工作在方式0、方式1、方式2下;B口:方式0和方式1;C口:方式0或作为A口、B口的状态或控制信号。三、8255A工作方式和C口状态字20第七章1、方式0(称为基本输入/输出工作方式)适用场合:不需要用应答信号的无条件数据传送。如:读一组开关状态,控制一组指示灯方式0的基本功能:①具有两个8位口(A口和B口),两个4位口(上口C和下C口)②任意端口都可作为输入或输出,但不能同时实现输入及输出③设置为输出口时有锁存能力,设置为输入口时无锁存能力。方式0举例21第七章2、方式1(称为选通输入输出工作方式)适用场合:查询方式或中断方式的数据传送。如:与打印机的接口方式1的主要功能:①两个选通的8位数据端口,可输入或输出;②每个端口有三条控制线(C口提供,固定指定的,不能用程序改变)③若只有一个口工作在方式1,余下的13位可工作在方式0;④方式1的两个8位数据口的输入、输出数据都能锁存。22第七章(1)选通输入方式A口、B口都工作在选通输入方式其端口控制字、状态、联络信号如下图所示。选通输入/输出方式可以分为3种情况PA7~PA0IBFARDSTBAD0D1D2D3D4D5D6D7×××1/01101控制字INTRAI/OINTEAPC4PC5PC3PC6,7PC6,71=输入0=输出方式1A口中断允许信号选通信号缓冲器满信号中断请求信号标志位A口方式1A口输入23第七章PB7~PB0IBFBRDSTBBD0D1D2D3D4D5D6D7×11××××1控制字INTRBINTEBPC2PC1PC0方式1B口中断允许信号选通信号缓冲器满信号中断请求信号B口方式1B口输入【注意】由于INTEA、INTEB无外部引出脚,因此当PC4或PC2脚上出现高电平或低电平信号时,不会改变中断允许触发器的状态。24第七章25第七章(2)选通输出方式A口、B口都工作在选通输出方式其端口控制字、状态、联络信号如下图所示。选通输入/输出方式可以分为3种情况D0D1D2D3D4D5D6D7×××1/00101控制字PC5,41=输入0=输出PA7~PA0WRINTRAI/OINTEAPC7PC6PC3PC4,5方式1A口OBFAACKA输出缓冲器满外设回答信号26第七章D0D1D2D3D4D5D6D7×01××××1控制字PB7~PB0WRINTRBINTEBPC1PC2PC0方式1B口OBFBACKB(2)选通输出方式(续)27第七章28第七章(3)选通输入/输出方式8255A工作于方式1时,允许对A口和B口分别定义,一个端口作输入,另一个端口作输出。选通输入/输出方式可以分为3种情况D0D1D2D3D4D5D6D7×011/01101控制字PC6,71=输入0=输出PA7~PA0WRINTRAI/OPC4PC5PC6,7OBFBACKBRDPC3STBAIBFAPB7~PB0PC1PC2PC0INTRB29第七章(3)选通输入/输出方式(续)D0D1D2D3D4D5D6D7×111/00101控制字PC5,41=输入0=输出PA7~PA0RDINTRAI/OPC7PC6PC4,5STBBACKAWRPC3OBFAIBFBPB7~PB0PC2PC1PC0INTRB30第七章3、方式2(称为双向总线方式)适用场合:查询方式或中断方式的数据传送。如:在主机和软盘驱动器交换数据时方式2的主要功能:①只有A口可以工作于这种方式。②在这种方式下,CPU与外设交换数据时,可在单一的8位端口数据线PA7~PA0上进行,既可以通过A口把数据传送到外设,又可以从A口接收从外设送过来的数据,而且输入和输出数据均能锁存。③输入和输出过程不能同时进行。31第七章注意:输入输出共用一个INTR,有效时,CPU需通过查询PC7()和PC5()判断是输入还是输出引起的中断。AOBFAIBFB组方式:1=方式10=方式0D0D1D2D3D4D5D6D7控制字×××111/01/01/0B口:1=输入,0=输出PC2~0:1=输入,0=输出IBFAI/OOBFAACKAPA7~PA0WRINTE1PC2~0RDPC3PC7PC6PC4PC5INTE2STBAINTRA32第七章4、C口状态字当8255A工作于方式0时,C口各位作输入输出用。当8255A工作于方式1和方式2时,C口产生或接收与外设间的联络信号。此时,读取C口的内容可使编程人员测试或检查外设的状态,用输入指令对C口进行读操作就可读取C口的状态,即:INAL,PC口33第七章C口的状态字有以下几种格式:(1)方式1状态字输入状态字:输出状态字:D2~D0D2~D034第七章(2)方式2状态字方式1举例35第七章例1:在某一系统中,有8个开关K7~K0,要求每隔1S检测它们的通断状态,并随时在发光二极管LED7~LED0上显示出来。要求:开关断开,相应的LED点亮;开关合上,LED熄灭硬件电路设计图7.28255A的应用举例36第七章分析:确定各端口地址A口:F0HB口:F2HC口:F4H控制口:F6H控制字:A口工作于方式0输入,B口为方式0输出,C口未用,控制字中与C口对应的位可以被置为0,写入控制端口F6H的控制字为:10010000B要求功能的实现:从A口读入的数据直接输出至B口即可满足要求37第七章参考程序片断:MOVAL,10010000B;控制字OUT0F6H,AL;写入控制字LP:INAL,0F0H;从A口读入开关状态OUT0F2H,AL;B口控制LED,指示开关状态CALLDELAY1SJMPLP思考:若地址大于FFH,则程序应该怎么改?若要“开关断开,相应的LED熄灭”,程序怎么改?38第七章【注意】(1)CPU与8255A之间数据传输以BYTE为单位;(2)8255A的方式0使用步骤:确定地址;写控制字(初始化);输入输出操作39第七章1、七段LED的工作原理和接口电路dpgfedcbaabcdefgDPDPgfedcba阴极数字【5】01101101例2:数码管与8255A接口举例40第七章十六进制数字七段显示码十六进制数字七段显示码03FH87FH106H96FH25BHA77H34FHb7CH466HC39H十六进制数共阴极的七段显示码表56DHd5EH67DHE79H707HF71H41第七章(1)静态显示方式I/O(1)I/O(2)I/O(3)I/O(4)2、数码管的显示方式42第七章这种方式的共阴极或共阳极点连在一起,接地或接+5V,每一个数码管与一个并行口相连。所以在同一时间内,每个数码管可以显示不同的内容。但每个数码管都需要一个8位的I/O口,占用I/O太多,成本高。43第七章(2)动态显示方式44第七章这种方式数码管的数据端与一个I/O口并连,而每个数码管的控制端(公共端)分别与另一个I/O口的某一位相连,可通过程序控制,使得在某一时间段内只让某个数码管显示,下一时间段内让另一个数码管显示,这样让4个数码管轮流显示,只要轮流的速度快,人眼不会感到闪烁,好像在同时显示。45第七章设计一接口电路,要求从8255A的A口输入由8个开关组成的数据信息,用2位16进制数表示,并通过B口输出至数码管显示。要求编写完整的源程序实现数据的输入和输出显示。这里,8255的端口地址为:60H、62H、64H、66H,数码管采用共阴极接法。3、接口电路设计46