ICC位操作
来源:互联网 发布:手机论坛下载软件 编辑:程序博客网 时间:2024/06/15 08:34
如何用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_CLRPORTD &= ~(1 << PD5) //位置低
#define LED_COMPORTD ^= (1 << PD5) //位取反
#define LED_RPIND & (1 << PD5) //位读取 通过上面的定义就可以在程序中直接操作I/O了。
- ICC位操作
- ICC
- ICC specifications
- icc编译器
- 10 ICC
- ICC Profile
- ICC Profile
- icc ifort
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 贴片钽电容的封装、尺寸和标…
- DXP,AD不用新建PCB完美解决unknown pin和failed
- Profibus报文解读【转】
- (db2 迁移)windows db2 数据库脚本导出 aix db2 导入
- TF卡 SD卡接口【转】
- ICC位操作
- 2013.7.7 webserver动态相关
- 2013.7.9 有关K60 JTAG下载
- DP83848硬件设计及其调试
- Labview相关驱动插件的卸载\安装——以VISA驱动为例
- Labview中函数节点控件DLL的使用
- Word中利用Mathtype/公式编辑器实…
- uboot1.1.6源码编译的EABI问题
- HDU-1839 Delay Constrained Maximum Capacity Path 最短路