单片机基教程.doc

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机基教程

第6章 通用I/O接口基本结构与输出应用 从本章开始,将从AVR单片机的基本功能单元入手,讲解其各个外围功能部件的基本组成和特性,以及它们的应用。 ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。所有这些I/O口都是双(有的为3)功能复用的。其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。 6.1 通用I/O口的基本结构与特性 6.1.1 I/O口的基本结构 图6-1为AVR单片机通用I/O口的基本结构示意图。从图中可以看出,每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。I/O口的工作方式和表现特征由这3个I/O口寄存器控制。 图6-1 通用I/O口结构示意图 方向控制寄存器DDRx用于控制I/O口的输入输出方向,即控制I/O口的工作方式为输出方式还是输入方式。 当DDRx=1时,I/O口处于输出工作方式。此时数据寄存器PORTx中的数据通过一个推挽电路输出到外部引脚(图6-2)。AVR的输出采用推挽电路提高了I/O口的输出能力,当PORTx=1时,I/O引脚呈现高电平,同时可提供输出20mA的电流;而当PORTx=0时,I/O引脚呈现低电平,同时可吸纳20mA电流。因此,AVR的I/O在输出方式下提供了比较大的驱动能力,可以直接驱动LED等小功率外围器件。 当DDRx=0时,I/O处于输入工作方式。此时引脚寄存器PINx中的数据就是外部引脚的实际电平,通过读I/O指令可将物理引脚的真实数据读入MCU。此外,当I/O口定义为输入时(DDRx=0),通过PORTx的控制,可使用或不使用内部的上拉电阻(图6-3)。 图6-2 通用I/O口输出工作方式示意图 图6-3 通用I/O口输入工作方式示意图(带内部上拉) 表6.1是AVR通用I/O端口的引脚配置情况。 表6.1 I/O口引脚配置表 DDRXn PORTXn PUD I/O方式 内部上拉电阻 引脚状态说明 0 0 X 输入 无效 三态(高阻) 0 1 0 输入 有效 外部引脚拉低时输出电流(uA) 0 1 1 输入 无效 三态(高阻) 1 0 X 输出 无效 推挽0输出,吸收电流(20mA) 1 1 X 输出 无效 推挽1输出,输出电流(20mA) 表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。当PUD=1时,AVR所有I/O内部上拉电阻都不起作用(全局内部上拉无效);而PUD=0时,各个I/O口内部上拉电阻取决于DDRXn的设置。 AVR通用I/O端口的主要特点为: 双向可独立位控的I/O口 ATmega16的PA、PB、PC、PD四个端口都是8位双向I/O口,每一位引脚都可以单独的进行定义,相互不受影响。如用户可以在定义PA口第0、2、3、4、5、6位用于输入的同时定义第1、7位用于输出,互不影响。 Push-Pull大电流驱动 (最大40mA) 每个I/O口输出方式均采用推挽式缓冲器输出,提供大电流的驱动,可以输出(吸入)20mA的电流,因而能直接驱动LED显示器。 可控制的引脚内部上拉电阻 每一位引脚内部都有独立的,可通过编程设置的,设定为上拉有效或无效的内部上拉电阻。当I/O口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低,则构成电流源输出电流(uA量级)。 DDRx可控的方向寄存器。 AVR的I/O端口结构同其它类型单片机的明显区别是,AVR采用3个寄存器来控制I/O端口。一般单片机的I/O仅有数据寄存器和控制寄存器,而AVR还多了一个方向控制器,用于控制I/O的输入输出方向。由于输入寄存器PINx实际不是一个寄存器,而是一个可选通的三态缓冲器,外部引脚通过该三态缓冲器与MCU的内部总线连接,因此,读PINx时是读取外部引脚上的真实和实际逻辑值,实现了外部信号的同步输入。这种结构的I/O端口,具备了真正的读-修改-写(Read-Modify-Write)特性。 图6-4 通用I/O口逻辑功能示意图 图6-4为AVR一个(位)通用I/O口的逻辑功能图。右上面的两个D触发器为方向控制寄存器和数据寄存器。 上面的第4点是由于在PINxn和AVR内部数据总线之间有一个同步锁存器(图6-4中的SYNCHRONIZER)电路,使用该电路避免了当系统时

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档