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

发布者:BlissfulWhisper最新更新时间:2016-10-26 来源: eefocus关键字: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 输出高电平                   与0异或,不变,与1异或,原来0的为1,1的为0      

 

举例四:将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;

关键字:C语言  AVR  IO端口  ICCAVR 引用地址:如何用C语言操纵AVR的IO端口(以ICCAVR为例)

上一篇:AVR I/O使用方法
下一篇:关于avr的熔丝的使用和设置

推荐阅读最新更新时间:2024-03-16 15:17

AVR单片机超低功耗的进阶经验
四年多前整过一次低功耗的,当时调试也是OK的,程序基本上是移植过来了。 这次重新改动一下,做了,本以为捣腾一天差不多了,结果又捣腾了两天。 硬件平台是使用9V的电池,系统稳压到5V,普通的稳压IC肯定不行的,必须是LDO型的IC。LDO选的是国产的BL8061,INPUT VOLTAGE是2-16V,OUTPUT CURRENT:250mA,典型的消耗是2uA,BL8060输入电压是1.5-14V,最大电流时200mA,功耗是1uA。稳压前后的电解电容1uF。因为板子做的是贴片的,贴片的手头现成的只有10V/22uF,偶加在稳压后,因为9V电池空载电压就接近10V了,稳压前偶弄了个普通的杂牌铝电解,结果第一晚就被这颗害死了。 第一
[单片机]
<font color='red'>AVR</font>单片机超低功耗的进阶经验
AVR现代设施农业的监控系统设计
设施农业是是综合利用先进的设施设备和先进的生产技术,人为地创造动植物生长发育所需要的最佳环境条件,并通过科学的技术管理,最大限度地提高土地产出率、资源利用率、劳动生产率和产品商品率,从而获得最佳经济效益、生态效益和社会效益的一种生产方式。相比于传统农业,具有空间利用率高、生产周期短等突出优势,成为国内外广泛采用的一种农作物生产方式。针对现代设施农业要求,设计集温度、湿度、CO 2 浓度和光照度于一体的参数采集系统,并结合作物与LED光学特性的关系,设计LED光谱可调的光源控制系统,用于作物环境的补光照射。监控系统取代了传统的人工监控方式,自动化程度大大提高。系统根据不同作物的要求,采用不同光谱进行补光照射,更有利于作物的生长。
[单片机]
<font color='red'>AVR</font>现代设施农业的监控系统设计
C语言一百例第二十八例
代码: /* C语言第二十八例 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 程序分析:无。 */ #include stdio.h int n; int main() { int i=5; printf( 请输入5个字符: ); palin(i); //递归函数 printf( n ); } void palin(n) { char next; if(n =1) { next=getchar(); printf( 相反顺序输出结果: ); putchar(next); } else //此处递归发生 {
[单片机]
<font color='red'>C语言</font>一百例第二十八例
STC12系列单片机C语言的延时程序
本举例所用CPU为STC12C5412系列12倍速的单片机,只要修改一下参数值其它系例单片机也通用,适用范围宽。 共有三条延时函数说明如下: 函数调用分两级:一级是小于10US的延时,二级是大于10US的延时 //====================小于10US的【用1US级延时】==================== //----------微秒级延时--------- for(i=X;i X;i--) 延时时间=(3+5*X)/12 提示(单位us, X不能大于255) //================大于10US 小于21.9955Ms的可用【10US级延时函数】=========== void Delay10
[单片机]
avr单片机数码管显示时钟
// 数码管 数据P0口,数码管控制P2口 #include avr/io.h #include avr/delay.h #include avr/pgms PAC e.h #include avr/signal.h #include avr/interrupt.h #define code PROGMEM #define uchar unsigned char #define uint unsigned int code const uchar LED _7 = {0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff};//common of
[单片机]
IAR AVR环境设置和Proteus联调介绍
IAR据说是效率最高的编译器,但是设置起来还真的不是那么顺手,在经过一番折腾后,终于有了头绪。 首先,当然是建立一个新的工程,Project Creat new project,出现以下对话框,选择Empty project,确定。 然后输入工程名,选择保存的路径,确定。此时,我们需要添加C文件,new file保存为文件名.c格式,然后在右边的工程中添加,完成后如下图所示 这样建好以后呢,还需要设置下,右键点击工程lesson1,选择options选项 在CPU设置里选择MCU型号,这里我们用的是ATmega16,选择 因为要使用proteus进行代码级仿真,还需要在linker
[单片机]
AVR架构发明人:与众不同 方能成功
微处理器架构之间从以前的显著差异到现在变得越来越细微的差别,这是一件非常值得关注的事。 从AVR过渡到ARM是一个漫长的过程,这个趋势要维持多久?下一步又将走向何方? 从上个世纪70年代开始,微控制器就已经快速取代了离散逻辑,并支持更多的功能,例如先行控制,复杂计算,高速通信,以及即使在低成本的微系统上仍然拥有直观的用户界面。 早期的大多数单片机代码使用汇编语言编写,并且这种接近硬件底层的编程已经成为嵌入式设计者的个性特征,因为没有人能够(或者应该)修改他人的代码。 在90年代早期工程师们就已经意识到了单片机系统的更多的功能需求,在8位微处理器中C语言一直扮演着重要角色。最大的问题是单片机不能很好的支持C语言,并且代码量越
[半导体设计/制造]
Atmel的AVR CAN微处理器添新成员
Atmel近日推出两款8位AVR MCU——AT90CAN32/64,拓展了其CAN能力。该两款产品采用先进的RISC架构,有133条功能强大的指令,在16MHz时高达16MIPS吞吐量,是众多CAN网络应用的优选。  AT90CAN32/64集成于单芯片,带有V2.0A/V2.0B的CAN控制器,32/64kbyte的可编程闪存,1/2kbyte EEPROM。  AT90CAN32/64采用了先进的RISC架构,并以与标准8bit微处理器相同的价格提供16bit微处理器。  AT90CAN32/64可同时处理15个独立的消息单元,并在多CAN帧的情况下提供卓越的可控接收、传输缓存。可扩展的CAN帧有效降低了中心处理单元的负荷
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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