微机原理可编程接口芯片8255A及应用讲解_第1页
微机原理可编程接口芯片8255A及应用讲解_第2页
微机原理可编程接口芯片8255A及应用讲解_第3页
微机原理可编程接口芯片8255A及应用讲解_第4页
微机原理可编程接口芯片8255A及应用讲解_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、1第七章 第七章 可编程外围接口芯片8255A及其应用 7.1 8255A的工作原理 一、8255A的结构和功能 二、8255A的控制字及初始化编程 三、8255A工作方式和C口状态字 7.2 8255A的应用举例 教材第九章内容 2第七章 7.1 8255A的工作原理 u8255A是一种通用的可编程并行I/O接口芯片,一 般不需附加外部逻辑电路就可直接为CPU与外设之 间提供数据通道; u通过对它进行编程,可为CPU与外设之间的通信提 供无条件、有条件和中断方式的接口电路,因此 应用较广泛。 8255A综述 3第七章 1、外形 u40引脚的芯片; u双列直插式封装; 一、8255A的结构和功

2、能 8255A的引脚图 4第七章 u管脚小结: (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第七章 数据总线数据总线 D7D0 A 组组 控控 制制 数据数据 总线总线 缓冲器缓冲器 B 组组 控控 制

3、制 读读/写写 控制控制 逻辑逻辑 端口端口A (8位)位) 端口端口C (高高4位位) 端口端口B (8位)位) 端口端口C (低低4位位) 内部数据总线内部数据总线 (8 8位)位) RD WR A1 A0 RESET CS PA7PA0 PC7PC4 PC3PC0 PB7PB0 C P U 外外 设设 CPU接口接口内部逻辑内部逻辑外设接口外设接口 A A 组组 B B 组组 2、内部结构 7第七章 8255A与系统的连接示意图 8第七章 3、各部分功能简介 u数据端口 A、B、C:可用来和外设传送信息;每 个端口8位,通过编程设定其为输入口或输出口; 8255数据端口功能表 工作方式A

4、口B口C口 0 1 2 基本输入输出 输出锁存 输入三态 应答式输入输出 输入输出均锁存 应答双向输入输出 输入输出均锁存 基本输入输出 输出锁存 输入三态 基本输入输出 输出锁存 输入三态 应答式输入输出 输入输出均锁存 作为A口、B口的 控制位及状态位 作为A口、B口的 控制位及状态位 9第七章 8255A的基本操作 10第七章 u8255A的初始化编程,通过输出指令让CPU对8255A 控制字寄存器写数据,来设置8255A的初始状态 u8255A有两类控制字 1、方式选择控制字: 选择各端口的工作方式及操作类型(输入输出) 2、置位复位控制字: 对C端口的任一位进行置位或复位操作 二、8

5、255A的控制字及初始化编程 11第七章 1、方式选择控制字 12第七章 u通过对8255A的控制口写入置位/复位控制字,可 使端口C的任意一个引脚的输出单独置1或清0。 2、置位复位控制字 13第七章 例1:设8255A的各端口地址为90H93H,若要求各端 口的工作状态如下:应怎样对8255A进行初始化编程? A口:方式0输出; B口:方式0输入; 上C口:方式0输入;下C口:方式0输出; 分析:控制口地址:93H 工作方式控制字为:1000 1010B 即8AH 初始化程序片断: MOV AL,8AH OUT 93H,AL 14第七章 例2:设一片8255A的端口地址为60H63H,要求

6、从 PC5的引脚输出一个正脉冲。 分析:先将PC5清零,再将其置1,最后再清零 MOVAL, 00001010B OUT 63H, AL MOVAL, 00001011B OUT 63H, AL MOVAL, 00001010B OUT 63H, AL 15第七章 思考:例2中若要求输出方波信号,则程序片段为: AGAIN:MOV AL,00001011B OUT 63H,AL CALL DELAY ;调用延时子程序 MOV AL,00001010B OUT 63H,AL CALL DELAY ;调用延时子程序 JMP AGAIN 16第七章 u8255A有3种工作方式: 方式0:基本的输入输

7、出方式 方式1:选通输入输出方式 方式2:双向总线I/O方式 u各端口的工作方式,是通过编程向控制口写入方 式选择控制字设置的。 uA口可工作在方式0、方式1、方式2下; B口:方式0和方式1; C口:方式0或作为A口、B口的状态或控制信号。 三、8255A工作方式和C口状态字 17第七章 1、方式 0(称为基本输入/输出工作方式) u适用场合:不需要用应答信号的无条件数据传送。 如:读一组开关状态,控制一组指示灯 u方式0的基本功能: 具有两个8位口(A口和B口),两个4位口(上口C和 下C口) 任意端口都可作为输入或输出,但不能同时实现输入 及输出 设置为输出口时有锁存能力,设置为输入口时

8、无锁存 能力。 方式0举例 18第七章 2、方式 1(称为选通输入输出工作方式) u适用场合:查询方式或中断方式的数据传送。 如:与打印机的接口 u方式1的主要功能: 两个选通的8位数据端口,可输入或输出 ; 每个端口有三条控制线(C口提供,固定指定的,不 能用程序改变) 若只有一个口工作在方式1,余下的13位可工作在方 式0; 方式1的两个8位数据口的输入、输出数据都能锁存。 19第七章 (1)选通输入方式 A口、B口都工作在选通输入方式 u其端口控制字、状态、联络信号如下图所示。 选通输入/输出方式可以分为3种情况 PA7PA0 IBFA RD STBA D0D1D2D3D4D5D6D7

9、1/01101 控制字控制字 INTRA I/O INTE APC4 PC5 PC3 PC6,7 PC6,7 1=输入输入 0=输出输出 方式方式1 A口口 中断允许信号中断允许信号 选通信号选通信号 缓冲器满信号缓冲器满信号 中断请求信号中断请求信号 标志位标志位 A口方式口方式1 A口输入口输入 20第七章 PB7PB0 IBFB RD STBB D0D1D2D3D4D5D6D7 111 控制字控制字 INTRB INTE BPC2 PC1 PC0 方式方式1 B口口 中断允许信号中断允许信号 选通信号选通信号 缓冲器满信号缓冲器满信号 中断请求信号中断请求信号 B口方式口方式1 B口输入

10、口输入 【注意】 由于INTE A、INTE B无外部引出脚,因此当PC4或PC2脚上出现 高电平或低电平信号时,不会改变中断允许触发器的状态。 21第七章 22第七章 (2)选通输出方式 A口、B口都工作在选通输出方式 u其端口控制字、状态、联络信号如下图所示。 选通输入/输出方式可以分为3种情况 D0D1D2D3D4D5D6D7 1/00101 控制字控制字 PC5,4 1=输入输入 0=输出输出 PA7PA0 WR INTRA I/O INTE A PC7 PC6 PC3 PC4,5 方式方式1 A口口 OBFA ACKA 输出缓冲器满输出缓冲器满 外设回答信号外设回答信号 23第七章

11、D0D1D2D3D4D5D6D7 011 控制字控制字 PB7PB0 WR INTRB INTE B PC1 PC2 PC0 方式方式1 B口口 OBFB ACKB (2)选通输出方式(续) 24第七章 25第七章 (3)选通输入/输出方式 8255A工作于方式1时,允许对A口和B口分别定义,一 个端口作输入,另一个端口作输出。 选通输入/输出方式可以分为3种情况 D0D1D2D3D4D5D6D7 011/01101 控制字控制字 PC6,7 1=输入输入 0=输出输出 PA7PA0 WR INTRA I/O PC4 PC5 PC6,7 OBFB ACKB RD PC3 STBA IBFA P

12、B7PB0 PC1 PC2 PC0 INTRB 26第七章 (3)选通输入/输出方式(续) D0D1D2D3D4D5D6D7 111/00101 控制字控制字 PC5,4 1=输入输入 0=输出输出 PA7PA0 RD INTRA I/O PC7 PC6 PC4,5 STBB ACKA WR PC3 OBFA IBFB PB7PB0 PC2 PC1 PC0 INTRB 27第七章 3、方式 2(称为双向总线方式) u适用场合:查询方式或中断方式的数据传送。 如:在主机和软盘驱动器交换数据时 u方式2的主要功能: 只有A口可以工作于这种方式。 在这种方式下,CPU与外设交换数据时,可在单一的8

13、位端口数据线PA7PA0上进行,既可以通过A口把数据 传送到外设,又可以从A口接收从外设送过来的数据, 而且输入和输出数据均能锁存。 输入和输出过程不能同时进行。 28第七章 注意:输入输出共用一个INTR,有效时,CPU需通过查询 PC7( )和PC5( )判断是输入还是输出引起的中断。 A OBF A IBF B组方式组方式:1=方式方式1 0=方式方式0 D0D1D2D3D4D5D6D7 控制字控制字 111/01/01/0 B口口:1=输入输入, 0=输出输出 PC20:1=输入输入, 0=输出输出 IBFA I/O OBFA ACKA PA7PA0 WR INTE 1 PC20 RD

14、 PC3 PC7 PC6 PC4 PC5 INTE 2 STBA INTRA 29第七章 4、C口状态字 u当8255A工作于方式0时,C口各位作输入输出用。 u当8255A工作于方式1和方式2时,C口产生或接收 与外设间的联络信号。此时,读取C口的内容可使 编程人员测试或检查外设的状态,用输入指令对C 口进行读操作就可读取C口的状态, 即:IN AL,PC口 30第七章 C口的状态字有以下几种格式: (1)方式1状态字 输入状态字: 输出状态字: 31第七章 (2)方式2状态字 方式1举例 32第七章 例1:在某一系统中,有8个开关K7K0,要求每隔1S检测 它们的通断状态,并随时在发光二极

15、管LED7LED0上显 示出来。要求:开关断开,相应的LED点亮;开关合上 ,LED熄灭 硬件电路设计图 7.2 8255A的应用举例 33第七章 分析: u确定各端口地址 A口:F0H B口:F2H C口:F4H 控制口:F6H u控制字: A口工作于方式0输入,B口为方式0输出,C口未 用,控制字中与C口对应的位可以被置为0,写入 控制端口F6H的控制字为:10010000B u要求功能的实现: 从A口读入的数据直接输出至B口即可满足要求 34第七章 参考程序片断: MOV AL, 10010000B ; 控制字 OUT 0F6H, AL ; 写入控制字 LP: IN AL, 0F0H ;

16、 从A口读入开关状态 OUT 0F2H, AL ; B口控制LED,指示开关状态 CALL DELAY1S JMP LP 思考: u若地址大于FFH,则程序应该怎么改? u若要“开关断开,相应的LED熄灭”,程序怎么改 ? 35第七章 【小结】 (1)CPU与8255A之间数据传输以BYTE为单位; (2)8255A的方式0使用步骤: 确定地址; 写控制字(初始化); 输入输出操作 36第七章 1、七段LED的工作原理和接口电路 dpgfedcba 01101101 例2:数码管与8255A接口举例 37第七章 十六进制数字七段显示码 十六进制数字七段显示码 03FH87FH 106H96FH

17、 25BHA77H 34FHb7CH 466HC39H 十六进制数共阴极的七段显示码表 56DHd5EH 67DHE79H 707HF71H 38第七章 (1)静态显示方式 I/O(1) I/O(2) I/O(3) I/O(4) 2、数码管的显示方式 39第七章 这种方式的共阴极或共阳极点连在一起,接地 或接+5V,每一个数码管与一个并行口相连。所以 在同一时间内,每个数码管可以显示不同的内容。 但每个数码管都需要一个8位的I/O口,占用I/O太 多,成本高。 40第七章 (2)动态显示方式 41第七章 这种方式数码管的数据端与一个I/O口并连, 而每个数码管的控制端(公共端)分别与另一个 I

18、/O口的某一位相连,可通过程序控制,使得在某 一时间段内只让某个数码管显示,下一时间段内 让另一个数码管显示,这样让4个数码管轮流显示 ,只要轮流的速度快,人眼不会感到闪烁,好像 在同时显示。 42第七章 设计一接口电路,要求从8255A的A口输入由8个 开关组成的数据信息,用2位16进制数表示,并通过B 口输出至数码管显示。 要求编写完整的源程序实现数据的输入和输出显示 。这里,8255的端口地址为:60H、62H、64H、 66H ,数码管采用共阴极接法。 3、接口电路设计 43第七章 A2 A1 44第七章 编程思路: (1)建立一个0F的数码显示表; (2)读A口数据(8位),分成低4

19、位和高4位,然 后分别到表中查找出对应的数码,通过B口送出; (3)由于2个数码管数据端连接的都是B口,所以 当想让低位数码管亮时,必须先让高位数码管灭; 同样,当想让高位数码管亮时,必须先让低位数码 管灭。 4、程序设计 45第七章 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口输出 参考程序 46第

20、七章 ;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 参考程序 47第七章 START: MOV AX,DATA MOV DS, AX MOV AL ,FSZ ;设8255的工作方式 OUT CWR,AL MOV BX, OFFSET TAB ;设段选码表首地址 S1: IN A

21、L,PORTA ;从8255 A口输入数据 MOV CL, AL ;暂存数据 AND AL,0FH ;取数据的低4位 XLAT ;查表,得段选码 MOV AH, AL ;暂存低位显示 MOV AL,PC6H OUT CWR,AL ;灭高位数码管 参考程序 48第七章 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

22、,PC7H OUT CWR,AL ;灭低位数码管 参考程序 49第七章 MOV AL,AH OUT PORTB,AL ;送至8255B口 MOV AL, PC6L OUT CWR ,AL ;点亮高位数码管 JMP S1 ;继续扫描 MOV AH,4CH INT 21H CODE ENDS END START 参考程序 50第七章 设计CPU(8086)与打印机的接口电路。 要求: 使用8255A作为接口芯片,并用A口作为输出口, 这里,8255A的基地址为:340H。 编写完整的源程序,实现将内存某一段单元中的 内容送到打印机进行打印。 例3:打印机与8255接口举例 51第七章 (1)打印机

23、接口信号 并行打印机接口中除8位数据线外,还应有选通、 忙碌、应答、出错、缺纸等信号。这些信号有打印 机输出的状态信息,也有计算机发出的信息。 常用的有: DATA1DATA8:8位并行数据,输入。 STROB#:选通信号,低有效,输入;有效时将8位 并行数据送到打印机的输入缓冲器中。 52第七章 ACK#:应答信号,低有效,输出。有效时,表示数 据已被接受,打印机准备接收下一个数据。 BUSY:忙信号,高有效,输出。有效时表示打印机 不能接收数据 下列情况BUSY为高: 数据输入期间 打印机操作期间 脱机状态 打印机出错状态 53第七章 (2)8255与打印机的连接电路 54第七章 DATA

24、 SEGMENT PORTA EQU 340H PORTB EQU 342H PORTC EQU 344H CWR EQU 346H Pstrings DB This is a sample of printer DB interface using 8255A;要打印的字符串 COUNT EQU $-Pstrings DATA ENDS (3)参考程序 55第七章 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,OFFSET Pstrings 56第七章 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 5

温馨提示

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

评论

0/150

提交评论