AVR单片机IO口

上传人:无*** 文档编号:72628774 上传时间:2022-04-09 格式:DOC 页数:8 大小:98KB
收藏 版权申诉 举报 下载
AVR单片机IO口_第1页
第1页 / 共8页
AVR单片机IO口_第2页
第2页 / 共8页
AVR单片机IO口_第3页
第3页 / 共8页
资源描述:

《AVR单片机IO口》由会员分享,可在线阅读,更多相关《AVR单片机IO口(8页珍藏版)》请在装配图网上搜索。

1、组诚募管理员,“活跃之星”活动火热进行中 【免费申请】中国软件全球营销论坛门票上海2012 AVR单片机IO口结构 2009-11-08 16:161387人阅读评论(2)收藏举报AVR的IO是真正双向IO结构,由于大部分网友都是从标准51转过来的,受标准51的准双向IO和布尔操作概念影响,没能掌握AVR的IO操作,所以有必要撰文说明一下其实采用真正双向IO结构的新型MCU很多,常用的有 增强型51,PIC,AVR等先简单的回顾一下标准51的准双向IO结构这种准双向IO结构的特点是1 输出结构类似 OC门,输出低电平时,内部NMOS导通,驱动能力较强(800uA);输出高电平靠内部上拉电阻,驱

2、动能力弱(60uA)。2 永远有内部电阻上拉(P0口除外),高电平输出电流能力很弱,所以即使IO口长时间短路到地也不会损坏IO口(同理,IO口低电平输出能力较强,作低电平输出时不能长时间短路到VCC)3 作输入时,因为OC门有线与特性,必须把IO口设为高电平(所以按键多为共地接法)4 作输出时,输出低电平可以推动LED(也是很弱的),输出高电平通常需要外接缓冲电路(所以LED多为共阳接法)5 软件模拟 OC结构的总线反而比较方便-例如 IIC总线* P0口比较特殊,做外部总线时,是推挽输出,做普通IO时没有内部上拉电阻,所以P0口做按键输入需要外接上拉电阻。* OC门:三极管的叫集电极开路,场

3、效应管的叫漏极开路,简称开漏输出。具备线与能力,有0得0。* 为什么设计成输出时高电平弱,低电平强-是考虑了当年流行的TTL器件输入特性AVR的真正双向IO结构就复杂多了,单是控制端口的寄存器也有4个 PORTx.DDRx,PINx,SFIOR(PUD位),不过功能也强劲多了作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的读- 修改- 写功能。这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会无意地改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所

4、有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC 和地相连。* (很多数字器件都有保护二极管,在低功耗应用时要考虑保护二极管的电流倒灌的影响)每个端口都有三个I/O 存储器地址:数据寄存器 PORTx数据方向寄存器 DDRx端口输入引脚 PINx。数据寄存器PORTx和数据方向寄存器DDRx为读/ 写寄存器,而端口输入引脚PINx为只读寄存器。但是需要特别注意的是,对PINx 寄存器某一位写入逻辑1“ 将造成数据寄存器相应位的数据发生0“ 与“1“ 的交替变化。当寄存器MCUCR 的上拉禁止位PUD置位时所有端口引脚的上拉电阻都被禁止。在( 高阻态) 三态(DDxn, PORTx

5、n = 0b00) 输出高电平(DDxn, PORTxn = 0b11) 两种状态之间进行切换时,上拉电阻使能(DDxn, PORTxn = 0b01) 或输出低电平(DDxn,PORTxn = 0b10) 这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果使用情况不是这样子,可以通过置位SFIOR 寄存器的PUD 来禁止所有端口的上拉电阻。在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态(DDxn,PORTxn = 0b00) 或输出高电平(DDxn, PORTxn = 0b10) 作为中间步骤。不论如何配置DD

6、xn,都可以通过读取PINxn 寄存器来获得引脚电平PINxn寄存器的各个位与其前面的锁存器组成了一个同步器。这样就可以避免在内部时钟状态发生改变的短时间范围内由于引脚电平变化而造成的信号不稳定。其缺点是引入了延迟。AVR IO具备多种IO模式:1 高阻态 ,多用于高阻模拟信号输入,例如ADC数模转换器输入,模拟比较器输入2 弱上拉状态(Rup=20K50K),输入用。为低电平信号输入作了优化,省去外部上拉电阻,例如按键输入,低电平中断触发信号输入3 推挽强输出状态,驱动能力特强(20mA),可直接推动LED,而且高低驱动能力对称.使用注意事项:写用PORTx,读取用PINx实验时,尽量不要把

7、管脚直接接到GND/VCC,当设定不当,IO口将会输出/灌入 80mA(Vcc=5V)的大电流,导致器件损坏。作输入时:1通常要使能内部上拉电阻,悬空(高阻态)将会很容易受干扰。(表面看好像是51的抗干扰能力强,是因为51永远有内部电阻上拉,)2尽量不要让输入悬空或模拟输入电平接近VCC/2,将会消耗太多的电流,特别是低功耗应用场合-CMOS电路的特点3读取软件赋予的引脚电平时需要在赋值指令out 和读取指令in 之间有一个时钟周期的间隔,如nop 指令。4功能模块(中断,定时器)的输入可以是低电平触发,也可以是上升沿触发或下降沿触发。5用于高阻模拟信号输入,切记不要使能内部上拉电阻,影响精确

8、度。例如ADC数模转换器输入,模拟比较器输入 作输出时:采用必要的限流措施,例如驱动LED要串入限流电阻复位时:复位时内部上拉电阻将被禁用。如果应用中(例如电机控制)需要严格的电平控制,请使用外接电阻固定电平休眠时:作输出的,依然维持状态不变作输入的,一般无效,但如果使能了第二功能(中断使能),其输入功能有效。例如 外部中断的唤醒功能。AVR的C语言IO操作:AVR的C语言基于ANSI C,没有像51那样扩展了位操作(布尔操作),虽然汇编指令里面有SBI/CBI/SBIC/SBIS指令所以需要采用 位逻辑运算 来实现,这是必须要掌握的。IO口和功能寄存器的操作方法一样,但对于部分功能寄存器的读

9、写有特殊要求,请参看手册。不必考虑代码效率的问题,如果可能,GCCAVR会自动优化为SBI/CBI/SBIC/SBIS指令,跟汇编的效率是一样的。例如 iom16.h 里面定义了 #define PA7 7 (这标准头文件定义了MCU的所有官方定义(包括寄存器,位,中断入口等),但管脚的第二功能没有定义)想PA7为1 PORTA|=(1 想PA7为0 PORTA&=(1 想PA7取反 PORTA=(1 想检测PA7是否为1 if (PINA&(1 想检测PA7是否为0 if !(PINA&(1 * 为左移运算符,不懂的就要好好复习C语言基础了。注意IO操作的顺序:/上电默认DDRx=0x00,

10、PORTx=0x00 输入,无上拉电阻假设PA口驱动LED的负极,低电平灯亮初始化方法1:PORTA=0xFF; /内部上拉,高电平DDRA=0xFF; /输出高电平-灯一直是灭的初始化方法2:DDRA=0xFF; /输出低电平-灯被错误点亮了PORTA=0xFF; /输出高电平-马上被熄灭了,时间很短(1个指令不到uS时间),灯闪了一下,眼睛无法察觉但要是这个IO口是控制炸药包的点火信号呢?工控场合要考虑可靠性的问题 模拟OC结构的IIC总线的技巧:虽然AVR大多带有硬件IIC接口,但也有需要使用软件模拟IIC的情况可以通过使用外部上拉电阻+控制DDRx的方法来实现OC结构的IIC总线。IIC的速度跟上拉电阻有关,内部的上拉电阻阻值较大(Rup=20K50K),只能用于低速的场合#define SDA 0 /PC0#define SCL 1 /PC1(程序初始化设定 SDA和SCL都是 PORT=0,DDR=0)#define SDA_0() DDRA|=(1 #define SDA_1() DDRA&=(1 #define SCL_0() DDRA|=(1 #define SCL_1() DDRA&=(1 使用上面的SDA_0()/SDA_1()/SCL_0()/SCL_1()宏即可,直观,而且效率跟汇编是一样的

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!