第八章 MCS-51的IO接口扩展

更新时间:2023-08-31 10:14:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理与应用

内 容 提 要 ★并行I/O接口的扩展

★*中断扩展 ★*定时器扩展 ★小结

并行I/O接口的扩展 MCS-51单片机共有4个8位并行I/O口, 在外部扩 展时, P0和P2口做为总线使用, 因而提供给用户的 I /O口就只有P1或P3口的部分口线所接的外设较多 时, 就必须扩展I/O接口。

MCS-51单片机扩展的I/O口和外部数据存储器统 一编址、 采用相同的控制信号、 相同的寻址方式 和相同的指令。扩展I/O所用的芯片有通用可编程芯片 ( 如8251, 8155, 8255等)和TTL, CMOS锁存器,缓冲器(如273, 377, 244, 245等),用户可根据系统对输入输出的要求 适当选择芯片。

图9-24为8XX51 扩展一个输入接口244 和一 个输出接口273 的电路.RD P0 P2.0 8XX51 WR 74LS273 C 1D 1Q 74LS244 1G 2G 1Y 1A

. . . . . . 8Y 2A

输入 数据

. . . . . . 8D 8Q

输出 数据

图9.24

8XX51扩展缓冲器和锁存器I/O端口

244的选通信号由RD和P2.0相或产生,当执行读该 片的指令时, RD和P2.0有效, 打开244控制门, 从而把 数据通过244读入8XX51。273的选通信号由WR和P2.0相或产生,通过执行 对该片的写指令,WR和P2.0有效,使8XX51的数据往 273输出。 8XX51内部有ROM/EPROM, 不用扩展外部程序存 储器, 所以P0口作为双向数据线连在的数据端。

273、244有相同的地址FEFFH(实际上只要保证 P2.0=0,其他地址位无关紧要), 然而由于使用不同 的控制信号RD或WR ,它们地址相同却不会发生数据 传送冲突。

例如将244的输入数据从273输出只需使用如下指令:MOV DPTR, #0FEFFH ;DPTRZ指向扩展I/O地址

MOVX A, @DPTRMOVX @DPTR,A 多个芯片扩展实例

;从244读入数据;向273输出数据

图9-25是一个用8031/80C31扩展1片 2716(EPROM), 2片6116(SRAM)和1片 8255(可编程并行接口)的电路。

2716仅一片, 片选端接地。 图中采用线选法: P2.3 6116(1) P2.4 6116(2) P2.5 8255P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000H 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 07FFH 3000H

00 0 0

00 0 0

11 1 0

10 0 1

01 1 1

10 1 0

10 1 0

10 1 0

1 1 10 0 0 1 1 1 0 0 0

10 1 0

10 1 0

1 1 10 0 0 1 1 1 0 0 0

37FFH2800H 2FFFH 1800H

0

0

0

1

1

0

0

0

0 0 0

0

0

0 1 1

1803H

每个芯片片内地址填写全“0”~全“1”,片选地址必须填 “0”,无关位填“0”或填“1”均可,但要避免和别的同类芯片 片选相同。

8255为可编程并行接口芯片,它有3个8位数据口:A口,B口,C 口(其中C口可作为两个四位口),一个控制口,口地址由A1,A0 决定。图中8255的三个数据口地址分别为1800H~1802H,控制 口地址为1803H。 8255有三种工作方式:方式0(基本方式), 方式1(选通方式 , 此时C口高四位为A口的联络

线,低四位为B口联络线) , 方式2( 双向方式,仅A口有)。

8255的方式控制字格式为:

例8-1 将8255A口输入的数据从B口输出,C口不用,均采用 方式0 。 MOV DPTR, #1803H MOV A, #10010000B MOVX @DPTR, A MOV DPTR, #1800H MOVX A, @DPTR INC DPTR MOVX @DPTR, A SJMP $ ;DPTR指向控制口 ;设定A口方式0输 入,B口方式0输出 ;写入控制口 ;DPTR指向A口 ;从A口输入数据 到A累加器 ;DPTR指向B口 ;A的内容从B口输出

中断扩展 标准的8051单片机只有两个外部中断输入端。 而当系统的外部中断源大于或等于3个时,则考虑通过中断 扩展获得更多的外部中断端口。 中断扩展的基本思想就是,通过系统的标准外部中断端口( 一级中断)的复用来扩展若干个二级中断。 当有扩展的中断请求输入时,在中断服务程序的开始处,读 入二级中断向量,依据不同的中断向量来区别不同的中断请 求源,然后执行对应的中断服务程序代码。 常见的中断扩展有编码器线和与两种方式。前者适合中断源 较多的情况,后者电路简单,但只适合中断源扩展较少的情 况。编码器方式的扩展电路如图8.6所示。

图8.6 编码器方式的中断扩展电路

在图8.6中,使用一片优先编码 器74148,扩展了8个中断源。编 码器产生8-3线的中断向量码的 同时,通过GS产生复用的中断请 求信号输入至单片机的外部中断 输入口INT0或INT1。中断向量码 由P1口或中断向量数据端口(需 另加三态数据缓冲器)在进入中 断后读入。148优先编码器优先 级别从IN7到IN0依次变低,向量 码分别为111、110、…、000。 一般扩展中断不需要8路,只需 要4路左右。此时可以用线与方 式扩展完成,其电路如图8.7所 示。

图8.7 线与方式的中断扩展电路

在图8.7中,直接使用二极管的“线与”操作来实现 中断输入的判别。当INT0到INT3的某个扩展中断源有中断请 求时,因二极管的“线与”功能,使得INT为低电平,从而 引起系统中断。进入中断后,通过查询P1.0到P1.3便可知道 应该执行哪一部分中断服务程序。假设INT接至51单片机的 脚,对应的中断服务程序的框架结构为: ORG 0013H JMP INTSERV …… INTSERV: … … ;现场保护 JNB P1.0,INT0SERV ;是中断INT0请求,则执行INT0对应的中断 服务程序 JNB P1.1,INT1SERV ;是中断INT1请求,则执行INT1对应的中断 服务程序

JNB P1.2,INT2SERV ;是中断INT2请求,则执行INT2对应的中断 服务程序 JNB P1.3,INT3SERV ;是中断INT3请求,则执行INT3对应的中断 服务程序 INT0SERV: … … ; INT0的中断服务程序 JMP RETU INT1SERV: … … ; INT1的中断服务程序 JMP RETU INT2SERV: … … ; INT2的中

断服务程序 JMP RETU INT3SERV: … … ; INT3的中断服务程序 RETU: …… ;恢复现场 RETI

小结 单片机应用系统的设计中I/ O接口和中断源的扩展 1、I/ O接口扩展有两类:通用型和可编程型,在硬 件连接中,无论哪种芯片,都要将单片机的WR (写) 或RD(读)连接上,以此作为输出或输入的选通控制 ,对于通用型输入接口,应使用使用RD,而对于通 用型输出接口,应使用使用WR,对于可编程型,芯 片本身有上WR和RD信号,使其和单片机的WR和RD对 应连接就可以了 2、地址译码的方法和存贮器地址译码方法相同,可 以是线选法,部分译码或全译码。也可将片选端可 接地,视外接芯片的多少决定,原则是外接I/O接口 和外接RAM不能有相同的地址;外接I/O接口之间不 能有相同的地址。

3、在软件设计中,外围I/O接口使用 MOVX指令完成输入或输出,使用可编程 型I/ O接口芯片时要先写控制字,且要 注意控制字要写入控制口,数据的输入 输出使用数据口。 在掌握了单片机的总线结构和连接方 法,查阅到各钟芯片的功能、结构和引 脚、控制字格式后,各种芯片和单片机连 接是轻而易举的,也就具备了嵌入式系 统的设计能力。

本文来源:https://www.bwwdw.com/article/kyxi.html

Top