- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章通用IO接口的基本结构与基本应用
基于 AVR 的单片嵌入式系统原理与实践应用
第 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 口同外围电路
的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数
据通信接口,形成和实现了千变万化的应用。
由于刚开始学习 I/O 的应用,读者还没有掌握中断和定时计数器的使用,所以在本章的
实例中,调用了 CVAVR 提供的软件延时函数来实现时间延时等待的功能。
需要指出的是,使用软件延时的方式会造成 MCU 效率的下降,而且也不能实现精确的延
时,所以在一般情况下应尽量不使用软件延时的方式。在后面的章节里,会逐步介绍如何使
用 T/C 和中断实现延时的正确方法。
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 口寄存器控制。
数
据
总
线
DDRx
0
PORTx
0
PINx
?
方向:输入
上拉:OFF
上
拉
物理引脚
?
图 6-1 通用 I/O 口结构示意图
华东师范大学 电子系 马 潮 6-1
第 6 章 通用 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)。
数
据
总
线
DDRx
1
PORTx
1
PINx
1
方向:输出
上拉:OFF
上
拉
物理引脚
1
数
据
总
线
图 6-2 通用 I/O 口输出工作方式示意图
DDRx
0
PORTx
1
PINx
?
方向:输入
上拉:ON
上
拉
物理引脚
?
图 6-3 通用 I/O 口输入工作方式示意图(带内部上拉)
表 6.1 是 AVR 通用 I/O 端口的引脚配置情况。
华东师范大学 电子系 马 潮 6-2
基于 AVR 的单片嵌入式系统原理与实践应用
表 6.1 I/O 口引脚配置表
DDRXn PORTXn PUD I/O 方式 内部上拉电阻
引脚状态说明
0
0
0
1
1
0
1
1
0
1
X
0
1
X
X
输入
输入
输入
输出
输出
无效
有效
无效
无效
无效
三态(高阻)
外部引脚拉低时输出电流(uA)
三态(高阻)
推挽 0 输出,吸收电流(20mA)
推挽 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 口,每一位引脚都可以单独的
进行定义
文档评论(0)