- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章89C51扩展IO接口的设计
1、I/O接口的功能: (1)无条件传送 适用于对简单的I/O设备(如开关、LED显示器、继电器等)的操作,或者I/O设备的定时固定或已知的场合。 (2)查询状态传送 查询外设“准备好”后,再进行数据传送。通用性好,硬件连线和查询程序十分简单效率低。 (3)中断传送方式 外设准备好后,发中断请求,单片机进入与外设数据传送的中断服务程序,进行数据的传送。中断服务完成后又返回主程序继续执行。效率大大提高。 (4)直接存储器存取(DMA)方式 适于高速外设以及成组交换数据的场合 。 二、简单I/O口扩展 用并行口扩展I/O口 选择TTL电路或MOS电路即能组成简单的扩展I/O口。 如:用8位三态缓冲器74LS244可扩展输入口; 用8D锁存器74LS273、74LS373、74LS377等可组成输出口。 74LS244各引脚定义如下: 1A1~1A4:第1组4条输入线 1Y1~1Y4:第1组4条输出线 2A1~2A4:第2组4条输入线 2Y1~2Y4:第2组4条输出线 1G:第1组三态门使能端, 低电平有效 2G:第2组三态门使能端, 低电平有效 VCC:工作电源,接+5V电压 GND:接地 74LS273各引脚定义如下: D0~D7:输入线。 Q0~Q7:输出线。 CLR:清除控制端, 低电平有效。 CLK:时钟输入端, 上升沿有效。 VCC:工作电源, 接+5V电压。 GND:接地。 三、利用串行口扩展并行口 Q A?Thanks! * * * * 扩展I/O接口设计 一、概述 MCS-51真正用作I/O口线的只有P1口的8位I/O线和P3口的某些位线。 51单片机有4组并口P0-P3,为什么还要扩展I/O口? (1)对单片机输出的数据锁存 锁存数据线上瞬间出现的数据,以解决单片机与I/O设备的速度协调问题。 (2)对输入设备的三态缓冲 外设传送数据时要占用总线,不传送数据时必须对总线呈高阻状态。利用I/O接口的三态缓冲功能,可以实现I/O设备与数据总线的隔离,便于其它设备的总线挂接。 (3)信号转换 信号类型(数字与模拟、电流与电压)、信号电平(高与低、正与负)、信号格式(并行与串行)等的转换。 (4)时序协调 不同的I/O设备定时与控制逻辑是不同的,并与CPU的时序往往是不一致的,这就需要I/O接口进行时序的协调。 2、 单片机与I/O设备的数据传送方式 3、I/O端口编址 (1)独立编址方式 I/O寄存器地址空间和存储器地址空间分开编址,但 需专门读写I/O的指令和控制信号。 (2)统一编址方式 I/O寄存器与数据存储器单元同等对待,统一编址。 不需要专门的I/O指令,直接使用访问数据存储器 的指令进行I/O操作,简单、方便且功能强。 注:MCS-51使用统一编址的方式 简单的I/O口扩展 可编程I/O口芯片 常用I/O口芯片有:82C55、81C55 利用串行口扩展并行口 4、常用的扩展方法 当P2.0=0;RD=0;WR=1时,选中74LS244,其输出状态通过P0口被读入89C51 当P2.0=0;RD=1;WR=0时,选中74LS273,将P0口状态输出 I/O的地址是多少? 只要P2.0=0即可,其它为0为1都行。 输入程序段: MOV DPTR,#0FEFFH ;I/O地址→DPTR MOVX A,@DPTR ;RD为低,74LS244口 ;数据读入内部RAM 输出程序段: MOV A,#data ;数据→A MOV DPTR,#0FEFFH ;I/O地址→DPTR MOVX @DPTR,A ;WR为低,数据经74LS273口输出 串行口的工作方式0为同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口。 波特率:fosc/12 发送、接收的数据是8位 不占用片外RAM地址,节省了硬件开销 用74LS165扩展并行输入口 74LS165:并行输入,串行输出移位寄存器 例 从16位扩展口读入5组数据(每组二个字节),并把它们转存到内部RAM 20H开始的单元中。 MOV R7,#05H ;设置读入组数 MOV R0,#20H ;设置内部RAM数据区首址 START: CLR P1.0 ;并行置入数据,S/L*=0 SETB P1.0 ;允许串行移位,S/L*=1
文档评论(0)