您的位置 首页 汽车

AVR单片机i/o(输入/输出)端口详解

通过前面示例的讲解,已基本知道了单片机IO端口的用法。为了更好、更深入地运用好IO端口,下面再来详细讨论一下AVR单片机ATMega16的端口

经过前面示例的解说,已根本知道了单片机I/O端口的用法。为了更好、更深化地运用好I/O端口,下面再来具体评论一下AVR单片机ATMega16的端口结构。

输入/输出端口(I/O端口)是单片机所能依靠进行操控的仅有通道,假如把单片机内核比作人的大脑,那I/O端口就相当于人的五官和四肢,担任着信息的获取和动作的履行,假如没有I/O端口单片机自身就变得毫无意义,因而很有必要来具体了解它们的内部结构。ATMega16的端口为具有可选上拉电阻的双向I/O端口,下面是其间某一位I/O口的内部结构图(来自于Datasheet)。

在上图中,Pxn便是这一位的输入/输出端口,也便是单片机的某个外部引脚。它经过PORTxn寄存器和数据总线(DATA BUS)相连。前面示例中对PORTxn的赋值其实便是经过数据总线来写这个寄存器完成的。在图中还能够看到,在Pxn和PORTxn之间实际上还串有一个门控位,假如要让PORTxn的成果输出至Pxn,那这个门控位必须得翻开,而该门控位的受控信号来自于DDxn(DDRx中的一位)寄存器。经过数据总线对该寄存器位写1,就可翻开门控位,让输出信号直接输出至引脚Pxn。这也正是为什么单片机引脚要处于输出状况就必须要给DDRx方向寄存器赋值1的原因地点。假如给DDxn赋值0,则门控位断开,引脚Pxn不能做为输出,只能做为输入。但输入信号能够取自两个当地,一个是直接从外部引脚Pxn来取(图中的下半部分),实际上是把外部引脚的信号锁存到PINxn寄存器中来读取;另一个则是从输出寄存器PORTxn来取(图中门控位操控信号为RRx的当地)。一般称“从外部引脚(PINxn)来取”为读引脚,称“从寄存器PORTxn来取”为读端口寄存器。
从图中还能够看出,在引脚Pxn的上方,有一个受控于MOS管的上拉电阻。而MOS管又一起遭到PUD位、DDxn位和PORTxn位的一起操控。当引脚做为输入时(DDxn=0),在给PORTxn赋值1后,经过PUD就能够操控引脚是否运用上拉电阻。当PUD位为0时,上拉电阻有用,不然相反。PUD存在于寄存器SFIOR中的第2位,见下图。

下面几个图给出了以端口A为代表的三个寄存器装备的具体情况:

从图中能够看出,PORT和DDR两个寄存器为可读可写的,而PIN寄存器为只读的。关于寄存器中每一位的操作,在IAR开发环境中能够直接引证,这在第二个示例中现已论述过了。下表给出了这几个寄存器组合装备的具体情况:

在运用I/O端口时还有几点需求阐明一下:
1、作为通用数字I/O运用时,一切I/O端口都具有真实的读――修正――写的功用。
2、不论如何装备DDxn,都能够经过读取PINxn寄存器来取得引脚电平。
3、读取软件赋予的引脚电平常,需求在赋值指令和读取指令之间至少有一个时钟周期的距离(可刺进一条nop指令)。
4、假如某些引脚未被运用,主张仍是给这些引脚赋予一个确认电平。
5、复位时,上拉电阻将被禁用,各引脚为高阻态。
6、安稳状况条件下每个I/O端口能够接受的拉电流或灌电流为:VCC=5V时为20mA、VCC=3V时为10mA。
7、一切端口拉电流或灌电流的总和不能超过400mA,且端口A、B、C、D各自的拉电流或灌电流总和不能超过200mA(在DIP封装方法下,端口B、C、D可达300mA)。
除了通用数字I/O功用之外,大多数端口引脚都还具有第二功用,这也便是所谓的端口复用。由于单片机的引脚毕竟是有限的,并且在大多数时分做为通用数字I/O口的引脚不一定悉数用完,所以不用为单片机再完成其它功用而独自制造引脚。比方A/D(模/数)转化,就可不用再独自为单片机做输入引脚,而直接把这个功用隶属在PORTA的I/O口上就能够了。这样PORTA的八个引脚就有了第二功用,即做为A/D转化的信号输入端。当然,在某个时间只能运用其间的一种功用,不可能两种功用一起运用,所以才称之为复用。这儿要注意,所谓的第二功用仅仅一种说法,有些单片机的引脚复用的很厉害,能够完成两种以上的功用。
要完成引脚的第二功用,其端口内部结构较为杂乱,这儿就不再进行深化探讨了,以下仅给出ATMega16单片机引脚复用的第二功用。

要完成端口的第二功用,当然还必须得有相关的寄存器来进行挑选操控。不同的第二功用所装备的寄存器不同,装备方法也不一样,因而要根据实际情况来确认。引脚第二功用的具体运用会在后续的相关评论中进行具体叙述

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/317296.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部