对AVR_I_O口的_理解.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对AVR_I_O口的_理解

学习ATMEL 89S5X系列单片机也有快两年了,前段时间接到个项目,帮别人做的 GPS 中的模块,磁场检测用的,通俗来说就是 做个 数字指南针,因为考虑到成本和速度几个问题,用89S5X系列做很不和算,所以逼着学新东西了。因为有51系列单片机 的基础,对AVR的学习还算顺利,看了他的DATASHEET后,差不多就清楚了这个单片机有那些功能了。学习差不多的东西的时候,有对比才能学的更快,所以先来对比下 标准51单片机和AVR的I/O口的区别吧: 一:标准51的准双向IO结构的特点是 ???? 1 输出结构类似 OC门,输出低电平时,内部NMOS导通,驱动能力较强(800uA);输出高电平靠内部上拉电阻,驱动能力弱(60uA)。 ???? 2 永远有内部电阻上拉(P0口除外),高电平输出电流能力很弱,所以即使IO口长时间短路到地也不会损坏IO口 ????????? (同理,IO口低电平输出能力较强,作低电平输出时不能长时间短路到VCC) ???? 3 作输入时,因为OC门有线与特性,必须把IO口设为高电平(所以按键多为共地接法) ???? 4 作输出时,输出低电平可以推动LED(也是很弱的),输出高电平通常需要外接缓冲电路(所以LED多为共阳接法) ???? 5 软件模拟 OC结构的总线反而比较方便-----例如 IIC总线 * P0口比较特殊,做外部总线时,是推挽输出,做普通IO时没有内部上拉电阻,所以P0口做按键输入需要外接上拉电阻。 * OC门:三极管的叫集电极开路,场效应管的叫漏极开路,简称开漏输出。具备线与能力,有0得0。 * 为什么设计成输出时高电平弱,低电平强----是考虑了当年流行的TTL器件输入特性 ?二:AVR单片机I/O口 ?????? AVR的真正双向IO结构复杂多了,单是控制端口的寄存器也有4个 PORTx.DDRx,PINx,SFIOR(PUD位),不过功能也强劲多了 ?????? 作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的读- 修改- 写功能。 ?????? 这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会无意地改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。 输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。 所有的端口引脚都具有与电压无关的上拉电阻。 并有保护二极管与VCC 和地相连。 *??? (很多数字器件都有保护二极管,在低功耗应用时要考虑保护二极管的电流倒灌的影响) 每个端口都有三个I/O 存储器地址: ????? 数据寄存器????? – PORTx ????? 数据方向寄存器 – DDRx ????? 端口输入引脚??? – PINx。 数据寄存器PORTx和数据方向寄存器DDRx为读/ 写寄存器,而端口输入引脚PINx为只读寄存器。 但是需要特别注意的是,对PINx 寄存器某一位写入逻辑1“ 将造成数据寄存器相应位的数据发生0“ 与“1“ 的交替变化。 当寄存器MCUCR 的上拉禁止位PUD置位时所有端口引脚的上拉电阻都被禁止。 ??在( 高阻态) 三态({DDxn, PORTxn} = 0b00) 输出高电平({DDxn, PORTxn} = 0b11) 两种状态之间进行切换时, 上拉电阻使能({DDxn, PORTxn} = 0b01) 或输出低电平({DDxn,PORTxn} = 0b10) 这两种模式必然会有一个发生。 ?????? 通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。 如果使用情况不是这样子,可以通过置位SFIOR 寄存器的PUD 来禁止所有端口的上拉电阻。 在上拉输入和输出低电平之间切换也有同样的问题。 用户必须选择高阻态({DDxn,PORTxn} = 0b00) 或输出高电平({DDxn, PORTxn} = 0b10) 作为中间步骤。 不论如何配置DDxn,都可以通过读取PINxn 寄存器来获得引脚电平 PINxn寄存器的各个位与其前面的锁存器组成了一个同步器。 这样就可以避免在内部时钟状态发生改变的短时间范围内由于引脚电平变化而造成的信号不稳定。 其缺点是引入了延迟。 ?AVR IO具备多种IO模式: ??? 1 高阻态 ,多用于高阻模拟信号输入,例如ADC数模转换器输入,模拟比较器输入 ??? 2 弱上拉状态(Rup=20K~50K),输入用。为低电平信号输入作了优化,省去外部上拉电阻,例如按键输入,低电平中断触发信号输入 ??? 3 推挽强输出状态,驱动能力特强(20mA),可直接推动LED,而且高低驱动能力对称. ??使用注意事项: ?????? 写用PORTx

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档