《可编程外围接口芯片8255A及其应用.ppt》由会员分享,可在线阅读,更多相关《可编程外围接口芯片8255A及其应用.ppt(62页珍藏版)》请在三一办公上搜索。
1、,1,第七章,第七章 可编程外围接口芯片8255A及其应用,7.1 8255A的工作原理 一、8255A的结构和功能 二、8255A的控制字及初始化编程 三、8255A工作方式和C口状态字 7.2 8255A的应用举例,教材第九章内容,2,第七章,7.1 8255A的工作原理,8255A是一种通用的可编程并行I/O接口芯片,一般不需附加外部逻辑电路就可直接为CPU与外设之间提供数据通道;通过对它进行编程,可为CPU与外设之间的通信提供无条件、有条件和中断方式的接口电路,因此应用较广泛。,8255A综述,3,第七章,1、外形 40引脚的芯片;双列直插式封装;,一、8255A的结构和功能,8255
2、A的引脚图,4,第七章,管脚小结:(1)与外设连接的管脚8255A有三个数据端口,每个端口是8位的,由此与外设相连接的管脚共有24位。A口有八个I/O引脚 PA7-PA0 B口有八个I/O引脚 PB7-PB0 C口有八个I/O引脚 PC7-PC0,5,第七章,(2)与CPU连接的管脚 数据线D7-D0;读写控制线RD#、WR#;片选信号CS#;端口地址控制线A0和A1;复位线RESET。,(3)电源线和地线 电源线VCC,一般取5V;电源地线GND。,6,第七章,2、内部结构 数据端口A、B、C(其中C口被分成C口上半部分和C口下半部分两个部分)A组和B组控制逻辑;数据总线缓冲器;读/写控制逻
3、辑。,7,第七章,8,第七章,8255A与系统的连接示意图,9,第七章,3、各部分功能简介 数据端口 A、B、C:可用来和外设传送信息;每个端口8位,通过编程设定其为输入口或输出口;,8255数据端口功能表,10,第七章,控制端口D(A组和B组控制电路):8位端口,无对外引脚;接收CPU送的控制字,决定A组和B组的工作方式,或对C口的每位执行置位/复位等操作。数据总线缓冲器(D0-D7):由1个8位双向三态缓冲器构成;8255A内各端口通过数据缓冲器与系统总线相连。,11,第七章,地址译码与读写控制逻辑 根据系统送来的地址信号和控制信号,对数据信息、控制信息和状态信息的传送进行管理。CS#:片
4、选信号,低有效,有效时允许8255A与CPU交换信息 RD#:读信号,低有效,有效时允许CPU从8255A端口中读数据/状态。WR#:写信号,低有效,有效时允许CPU将控制字/数据写入8255A。RESET:复位信号,高有效。复位后,控制寄存器内容被清零。A口、B口和C口被置成输入方式。A1、A0:端口的选择信号。00端口A 01端口B 10端口C 11端口D(控制口),12,第七章,8255A的基本操作,13,第七章,8255A的初始化编程,通过输出指令让CPU对8255A控制字寄存器写数据,来设置8255A的初始状态 8255A有两类控制字 1、方式选择控制字:选择各端口的工作方式及操作类
5、型(输入输出)2、置位复位控制字:对C端口的任一位进行置位或复位操作,二、8255A的控制字及初始化编程,14,第七章,1、方式选择控制字,15,第七章,通过对8255A的控制口写入置位/复位控制字,可使端口C的任意一个引脚的输出单独置1或清0。,2、置位复位控制字,16,第七章,例1:设8255A的各端口地址为90H93H,若要求各端 口的工作状态如下:应怎样对8255A进行初始化编程?A口:方式0输出;B口:方式0输入;上C口:方式0输入;下C口:方式0输出;分析:控制口地址:93H 工作方式控制字为:1000 1010B 即8AH 初始化程序片断:MOV AL,8AH OUT 93H,A
6、L,17,第七章,例2:设一片8255A的口地址为60H63H,要求从PC5的引脚输出一个正脉冲。分析:先将PC5清零,再将其置1,最后再清零,MOVAL,00001010B OUT 63H,AL MOVAL,00001011B OUT 63H,AL MOVAL,00001010B OUT 63H,AL,18,第七章,思考:例2中若要求输出方波信号,则程序片段为:AGAIN:MOV AL,00001011B OUT 63H,AL CALL DELAY;调用延时子程序 MOV AL,00001010B OUT 63H,AL CALL DELAY;调用延时子程序 JMP AGAIN,19,第七章,
7、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口)任意端口都可作为输入或输出,但不能同时实现输入及输出 设置为输出口时有锁存
8、能力,设置为输入口时无锁存能力。,方式0举例,21,第七章,2、方式 1(称为选通输入输出工作方式)适用场合:查询方式或中断方式的数据传送。如:与打印机的接口 方式1的主要功能:两个选通的8位数据端口,可输入或输出;每个端口有三条控制线(C口提供,固定指定的,不能用程序改变)若只有一个口工作在方式1,余下的13位可工作在方式0;方式1的两个8位数据口的输入、输出数据都能锁存。,22,第七章,(1)选通输入方式 A口、B口都工作在选通输入方式 其端口控制字、状态、联络信号如下图所示。,选通输入/输出方式可以分为3种情况,选通信号,缓冲器满信号,中断请求信号,标志位,23,第七章,选通信号,缓冲器
9、满信号,中断请求信号,【注意】由于INTE A、INTE B无外部引出脚,因此当PC4或PC2脚上出现 高电平或低电平信号时,不会改变中断允许触发器的状态。,24,第七章,25,第七章,(2)选通输出方式 A口、B口都工作在选通输出方式 其端口控制字、状态、联络信号如下图所示。,选通输入/输出方式可以分为3种情况,输出缓冲器满,外设回答信号,26,第七章,(2)选通输出方式(续),27,第七章,28,第七章,(3)选通输入/输出方式 8255A工作于方式1时,允许对A口和B口分别定义,一个端口作输入,另一个端口作输出。,选通输入/输出方式可以分为3种情况,29,第七章,(3)选通输入/输出方式
10、(续),30,第七章,3、方式 2(称为双向总线方式)适用场合:查询方式或中断方式的数据传送。如:在主机和软盘驱动器交换数据时 方式2的主要功能:只有A口可以工作于这种方式。在这种方式下,CPU与外设交换数据时,可在单一的8位端口数据线PA7PA0上进行,既可以通过A口把数据传送到外设,又可以从A口接收从外设送过来的数据,而且输入和输出数据均能锁存。输入和输出过程不能同时进行。,31,第七章,注意:输入输出共用一个INTR,有效时,CPU需通过查询C口状态:PC7()和PC5()判断是输入还是输出引起的中断。,32,第七章,4、C口状态字 当8255A工作于方式0时,C口各位作输入输出用。当8
11、255A工作于方式1和方式2时,C口产生或接收与外设间的联络信号。读取C口的内容可使编程人员测试或检查外设的状态,用输入指令对C口进行读操作就可读取C口的状态,即:IN AL,PC口,33,第七章,C口的状态字有以下几种格式:(1)方式1状态字 输入状态字:输出状态字:,34,第七章,(2)方式2状态字,35,第七章,例1:在某一系统中,有8个开关K7K0,要求每隔1S检测它们的通断状态,并随时在发光二极管LED7LED0上显示出来。要求:开关断开,相应的LED点亮;开关合上,LED熄灭,硬件电路设计图,7.2 8255A的应用举例,36,第七章,分析:确定各端口地址 A口:F0H B口:F2
12、H C口:F4H 控制口:F6H 控制字:A口工作于方式0输入,B口为方式0输出,C口未用,控制字中与C口对应的位可以被置为0,写入控制端口F6H的控制字为:10010000B 要求功能的实现:从A口读入的数据直接输出至B口即可满足要求,37,第七章,参考程序片断:MOV AL,10010000B;控制字 OUT 0F6H,AL;写入控制字 INAL,0F0H;从A口读入开关状态 OUT 0F2H,AL;B口控制LED,指示开关状态,思考:若地址大于FFH,则程序应该怎么改?若要“开关断开,相应的LED熄灭”,程序怎么改?,38,第七章,【注意】(1)CPU与8255A之间数据传输以BYTE为
13、单位;(2)8255A的方式0使用步骤:确定地址;写控制字(初始化);输入输出操作,39,第七章,1、七段LED的工作原理和接口电路,数字【5】,例2:数码管与8255A接口举例,40,第七章,十六制数共阴极的七段显示码表,41,第七章,(1)静态显示方式,2、数码管的显示方式,42,第七章,这种方式的共阴极或共阳极点连在一起,接地 或接+5V,每一个数码管与一个并行口相连。所以 在同一时间内,每个数码管可以显示不同的内容。但每个数码管都需要一个8位的I/O口,占用I/O太 多,成本高。,43,第七章,(2)动态显示方式,44,第七章,这种方式数码管的数据端与一个I/O口并连,而每个数码管的控
14、制端(公共端)分别与另一个I/O口的某一位相连,可通过程序控制,使得在某一时间段内只让某个数码管显示,下一时间段内让另一个数码管显示,这样让4个数码管轮流显示,只要轮流的速度快,人眼不会感到闪烁,好像在同时显示。,45,第七章,设计一接口电路,要求从8255A的A口输入由8个开关组成的数据信息,用2位16进制数表示,并通过B口输出至数码管显示。要求编写完整的源程序实现数据的输入和输出显示。这里,8255的端口地址为:60H、62H、64H、66H,数码管采用共阴极接法。,3、接口电路设计,46,第七章,A2,A1,47,第七章,编程思路:(1)建立一个0F的数码显示表;(2)读A口数据(8位)
15、,分成低4位和高4位,然 后分别到表中查找出对应的数码,通过B口送出;(3)由于2个数码管数据端连接的都是B口,所以 当想让低位数码管亮时,必须先让高位数码管灭;同样,当想让高位数码管亮时,必须先让低位数码 管灭。,4、程序设计,48,第七章,DATA SEGMENT TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H PORTA EQU 60H PORTB EQU 62H PORTC EQU 64H CWR EQU 66H FSZ EQU 90H;8255A为方式0,A口输入,B口输出,参考程序,
16、49,第七章,;C口位控方式输出 PC7L EQU 0000 1110 B;PC7 输出低电平 PC7H EQU 0000 1111 B;PC7 输出高电平 PC6L EQU 0000 1100 B;PC6 输出低电平 PC6H EQU 0000 1101 B;PC6 输出高电平 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,参考程序,50,第七章,START:MOV AX,DATA MOV DS,AX MOV AL,FSZ;设8255的工作方式 OUT CWR,AL MOV BX,OFFSET TAB;设段选码表首地址 S1:IN AL,PORT
17、A;从8255 A口输入数据 MOV CL,AL;暂存数据 AND AL,0FH;取数据的低4位 XLAT;查表,得段选码 MOV AH,AL;暂存低位显示 MOV AL,PC6H OUT CWR,AL;灭高位数码管,参考程序,51,第七章,MOV AL,AH OUT PORTB,AL;送至8255 B口 MOV AL,PC7L OUT CWR,AL;点亮低位数码管 MOV AL,CL AND AL,0F0H;取数据高4位 MOV CL,4 SHR AL,CL;高4位移至低4位 XLAT;查表得高位数的段选码 MOV AH,AL;暂存数据 MOV AL,PC7H OUT CWR,AL;灭低位数
18、码管,参考程序,52,第七章,MOV AL,AH OUT PORTB,AL;送至8255B口 MOV AL,PC6L OUT CWR,AL;点亮高位数码管 JMP S1;继续扫描 MOV AH,4CH INT 21H CODE ENDS END START,参考程序,53,第七章,设计CPU(8086)与打印机的接口电路。要求:使用8255A作为接口芯片,并用A口作为输出口,这里,8255A的基地址为:340H。编写完整的源程序,实现将内存某一段单元中的内容送到打印机进行打印。,例3:打印机与8255接口举例,54,第七章,(1)打印机接口信号 并行打印机接口中除8位数据线外,还应有选通、忙碌
19、、应答、出错、缺纸等信号。这些信号有打印机输出的状态信息,也有计算机发出的信息。常用的有:DATA1DATA8:8位并行数据,输入。STROB#:选通信号,低有效,输入;有效时将8位并行数据送到打印机的输入缓冲器中。,55,第七章,ACK#:应答信号,低有效,输出。有效时,表示数据已被接受,打印机准备接受下一个数据。BUSY:忙信号,高有效,输出。有效时表示打印机不能接受数据 下列情况BUSY为高:数据输入期间 打印机操作期间 脱机状态 打印机出错状态,56,第七章,(2)8255与打印机的连接电路,57,第七章,DATA SEGMENT PORTA EQU 340H PORTB EQU 34
20、2H PORTC EQU 344H CWR EQU 346H Pstrings DB This is a sample of printer DB interface using 8255A;要打印的字符串 COUNT EQU$-Pstrings DATA ENDS,(3)参考程序,58,第七章,CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,0A8H;8255 A口方式1输出,C口上半部输入 MOV DX,CWR OUT DX,AL MOV CX,COUNT;打印字符的个数 MOV BX,OFFSE
21、T Pstrings,59,第七章,LP1:MOV DX,PORTC LP2:IN AL,DX;读C口状态 AND AL,00010000B;屏蔽无关位 JNZ LP2;BUSY=1,等待,直到不忙 MOV AL,BX MOV DX,PORTA OUT DX,AL;送一个字符到8255A口 INC BX;准备输出下一个字符 LOOP LP1 MOV AH,4CH INT 21H CODE ENDS END START,60,第七章,小结,主要内容:8255A的结构及其功能 8255A的控制字及其工作方式 8255A的简单应用(方式0、方式1)重点难点 8255A的控制字 8255A的简单应用(方式0、方式1),61,第七章,9、(采用软件定时,不用8253)10,课后练习,作 业,教材P355,1 8,62,第七章,用户对寄存器FF写入的内容称为命令字或方式控制字,而寄存器FF称为命令寄存器,相应的端口称为命令端口或控制端口,对芯片的控制端口写入各种命令字的操作过程即为对可编程芯片的初始化编程。,