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

本文通过多个实例详细介绍了如何使用C语言操作AVR微控制器的IO端口,包括设置引脚为输入或输出、改变引脚电平状态等,并解释了不同指令之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何用C语言操纵AVRIO端口(ICCAVR为例): 

 

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

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

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

 

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

DDRB|=BIT(0)|BIT(1);//定义 PB0PB1为输出 

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

 

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

PORTB^=BIT(0);//PB0 输出高电平与0异或,不变,1异或,原来0的为1,1的为

 

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

PORTB^=BIT(0)|BIT(1);// PB0 输出高电平 这个很好,可惜我之前没看到 

 

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

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

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

 

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

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

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

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; 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值