AVR的IO端口特性与应用

发布者:SereneMeadow最新更新时间:2017-12-20 来源: eefocus关键字:AVR  IO端口 手机看文章 扫描二维码
随时随地手机看文章

AVR的IO端口特性分析:

 

分析IO引脚Pxn。DDRxn 只有为1时,可控单向开关才工作,PORTxn 的数值才能通过可控单向开送到 Pxn.

 

结论:DDRxn=1 时,为输出状态。输出值等于PORTxn。所以,DDRxn 为方向寄存器。PORTxn 为数据寄存器。

 

分析上拉电阻。E的电位为0时,即D为1时,上拉电阻有效。

从与门的输入分析,只有以下的条件同时满足时,上拉电阻才有效

1。PUD 为0

2。DDxn 为0

3。PORTxn 为1

结论是:只有DDRxn = 0 即管脚定义为输入状态,并且 PORTxn=1, 而且UPD设置为0时,上拉电阻才生效。

 

分析 Pxn 及 SLEEP。只有当 SLEEP = 0 时,可控开关2才导通,SD1不工作,施密特触发器的输入等于Pxn, 信号送到同步器后读取。

结论:Pxn 无论在输入或输出状态都能被AVR读取。SLEEP=0时输入才能被读取。

AVR的IO端口的使用注意事项:

如果有引脚末被使用,建议些引脚赋予一个确定电平。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。

如果刚定义了引脚的输入状态,就要立即回读,可以在回读前,插入一句 _nop()。

系统复位时,DDR全部为0,Port也全部为0,故上拉电阻在复位时会失效。

如何用C语言操纵AVR的IO端口(以ICCAVR为例):

举例一:将PB0定义为输出,且输出为高电平

DDRB=BIT(0); //定义 PB0为输出

PORTB|=BIT(0); // PB0 输出高电平

举例二:将PB0、PB1定义为输出,且PB0输出低电平,PB1均为高电平

DDRB|=BIT(0)|BIT(1); //定义 PB0、PB1为输出

PORTB|=BIT(0)|BIT(1); // PB0、PB1 输出高电平

举例三:将PB0数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1

PORTB^=BIT(0); // PB0 输出高电平

举例四:将PB0、PB1数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1

PORTB^=BIT(0)|BIT(1); // PB0 输出高电平

举例五:将PB2、PB3定义为输入,不带上拉电阻

DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入

PORTB&=~(BIT(2)|BIT(3)); // 将 PORT 置0,没有上拉电阻

举例六:将PB2、PB3定义为输入,带上拉电阻。即没有引用这些引脚时,缺省值为高电平

SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉电阻控制位PUD置0,在整个代码中,这句话可以不出现,或仅出现一次即可。因为它是一个控制全部上拉电阻的控制位。

DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入

PORTB|=BIT(2)|BIT(3); // 将 PORT 置1,满足上拉电阻的另一个条件

举例七:DDRB=BIT(0)|BIT(1) 与 DDRB|=BIT(0)|BIT(1) 的区别

假定在执行上面两句指令前,DDRB 的状态为: 1000 0000

如果执行 DDRB=BIT(0)|BIT(1) ,DDRB的状态变为: 0000 0011 
如果执行 DDRD|=BIT(0)|BIT(1),,DDRB的状态变为: 1000 0011

那前一句会先清空以前的所有状态,后一句保留前面的状态。

在实际应用中,后一句更常用。

举例八:将第三位置1,除了用BIT(3),还有其它的表达方法吗?

DDRB|=BIT(3);

DDRB|=1<<3;

DDRB|=0x08;

DDRB|=0b00001000;


关键字:AVR  IO端口 引用地址:AVR的IO端口特性与应用

上一篇:AVR单片机入门范例
下一篇:AVR单片机的DS1302操作程序

推荐阅读最新更新时间:2024-05-03 02:10

IAR For AVR 串口中断接收
应用芯片: AT Mega16 晶振: 7.3728MHz 代码文件: uart_int.c |_________DELAY.H ############################################## DELAY.H : #ifndef __IAR_DELAY_H #define __IAR_DELAY_H #include intrinsics.h #define XTAL 7.3728 //可定义为你所用的晶振频率(单位Mhz) #define delay_us(x) __delay_cycles ( (unsigned long
[单片机]
CEPARK AVR单片机 之HC595驱动数码管显示
这里我用的CEPARK 的M64 AVR开发板,这一课的重点是学会如何使用74HC595来驱动数码管。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7 ),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。 引脚说明: QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下
[单片机]
AVR串口查询模式程序实例
* Code adapted from Atmel AVR ApplICation Note AVR306 * PolLED mode driver for UART, this is the similar to the * library default putchar() and getchar() in ICCAVR */ #include io8515.h #include macros.h #include uart.h /* initialize UART */ void InitUART( unsigned char baudrate ) { UBRR = baudrate; /* set the baud r
[单片机]
SPI协议工作过程详解文档,内含实例代码
SPI:一种3线(有的没有SS线(选择主或从机模式))或4线的通信方式: MOSI:主机出从机进数据线 MISO:主机进从机从数据线 SCK: 时钟线 SS: 主从模式选择线 工作过程的理解:设置好相应的配置后就可以发送或接收数据,当放送或接收完成后就会是SPIF置位,此时如果开了中断就会就入中断服务程序。如果没开中断就可以通过查询该标志位来做相应的事。进入中段服务程序后,或者读(写)SPDR寄存器都可以清零SPIF标志位。从而可以开始下一次的传输 相应的寄存器 1:SCPR:控制寄存器:SPI的大部分设置 2:SPSR:标志寄存器:(查看一些标志(主要是SPIF位)和设置
[单片机]
SPI协议工作过程详解文档,内含实例代码
PIC单片机以及51单片机和AVR单片机的IO口操作方法介绍
对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文,希望大家认真研读,以在pic单片机的学习之路上更为精进。 一.51单片机IO口的操作 51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,器件为AT89S52。 #i nclude sbit bv=P2^0;//定义位变量,
[单片机]
PIC单片机以及51单片机和<font color='red'>AVR</font>单片机的<font color='red'>IO</font>口操作方法介绍
采用AVR单片机对FPGA进行配置
Altera公司的ACEX、FLEX等系列的FPGA芯片应用广泛,但其FPGA基于SRAM结构,决定电路逻辑功能的编程数据存储于SRAM中。由于SRAM的易失性,每次上电时必须重新把编程数据装载到SRAM中,这一过程就是FPGA的配置过程。FPGA的配置分为主动式和被动式。在主动模式下,FPGA上电后主动将配置数据从专用的EPROM(如EPC1,EPC2等)加载到SRAM中。被动模式下,FPGA为从属器件,由相应的控制电路或微处理器控制配置过程,包括通过下载电缆由计算机控制配置和单片机模拟配置时序配置。其中,专用的EPROM价格高,可编程次数少,而计算机配置在现场应用中又很不现实,因此本文提出一种基于AVR单片机的被动配置方式。由于
[单片机]
采用<font color='red'>AVR</font>单片机对FPGA进行配置
基于 AVR 单片机的自动对靶喷雾控制系统设计
1. 引言 众所周知,我国农药生产技术处于国际先进水平,而我国植保机械和农药使用技术严重 落后的现状与我国高速发展的农药水平极不相称,已严重妨碍了农作物病虫害的防治,带来 了诸如农药利用率低、农产品中农药残留超标、环境污染、作物要害、操作者中毒等负面影 响。农药利用率最好的也不足 30%,农药流失量高达 60%~70%,不仅经济损失重大,也造 成了严重的“农残问题”和环境污染。而采用自动对靶喷雾技术,可节省农药 50%~80%,因 此开展对靶喷雾技术研究将成为我国植保机械的下一个重要的研究方向。为此,本文提出了 一种以 AVR 系列的 ATmega16 单片机为 CPU,以 PC 机作为上位机,以摄像头采集的信号 作为触发信号,结
[单片机]
基于 <font color='red'>AVR</font> 单片机的自动对靶喷雾控制系统设计
爱特梅尔Studio6提供1,000个ARM和AVR设计演示设计过程
爱特梅尔Studio 6是免费的IDE,提供了专业质量的开发工具,同时配有爱特梅尔软件框架(先前称为AVR软件框架),因而显著降低了创建新设计的成本。利用爱特梅尔软件框架,设计人员可以获得经验证的大型免费源代码库 — 包括近1000个设计样例。 利用这些代码,设计工程师能够为其项目节省大量的底层源代码的编写工作,最大限度地加快上市时间并保持高质量解决方案。这种软件框架包括一整套用于片上外设和外部器件的驱动程序、有线和无线通信协议栈、音频解码、图形演示,以及定点和浮点数学库。针对爱特梅尔基于ARM处理器的微控制器产品,软件库为Cortex微控制器软件接口标准(CMSIS)提供全面支持。爱特梅尔Studio 6可支持大约300种爱特梅
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved