原创 ICC AVR 的IO口位操作方法(转载)

2008-10-21 11:34 4513 5 6 分类: MCU/ 嵌入式

如何用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;

#define LED_SET    PORTD |= (1 << PD5)           //位置高
#define LED_CLR    PORTD &= ~(1 << PD5)          //位置低
#define LED_COM    PORTD ^= (1 << PD5)           //位取反
#define LED_R      PIND & (1 << PD5)             //位读取

通过上面的定义就可以在程序中直接操作I/O了。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2013-7-3 22:45

THANKS

用户209205 2011-7-8 21:01

最近在使用STM32的定时器输入捕获功能,一直存在问题,麻烦帮忙看一下,哪里有问题。谢谢了。 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4862265&bbs_page_no=1&bbs_id=3020

用户559531 2009-6-2 18:09

很有实际意义! 博主有没试过:tim2 的通道1配置为输入捕获模式, tim2 的通道2配置为输出比较模式,也就是说,用通道2来发脉冲,而用通道1来计脉冲个数。

用户165162 2008-10-14 18:45

是的 他们是有所不同PWM输入模式不光能测量频率而且可以测量信号的占空比,但是要占用2个通道,而输入捕捉模式只需要占用一个通道就可以,感谢您的支持

用户1090342 2008-10-14 15:57

哈哈,帮博主顶一下。 输入捕捉模式与PWM输入模式有所不同,都可以测量输入信号的频率。
相关推荐阅读
用户172161 2008-10-09 16:20
verilog中的资源共享
很多资料关于资源共享都会用到加法器这么一个例子,没有使用资源共享前的代码如下:assign z="cond"?(a+b):(c+d);或者是always@(a,b,c,d,cond)beginif(c...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /3 下一条