如何用C语言操纵AVR的IO端口(以ICCAVR为例)
来源:互联网 发布:洛奇英雄传au优化 编辑:程序博客网 时间:2024/05/29 10:16
如何用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 C语言编程的小技巧-IO口置位
- 如何用ModelsimSE仿真IP核-以PLL为例
- 如何用ModelsimSE仿真IP核-以PLL为例
- AVR的IO端口特性与应用
- AVR的IO端口特性与应用
- AVR 的 IO 端口特性与应用
- C语言如何用OpenGL
- C语言如何用OpenGL
- 如何用C#代码操纵Excel中的单元格格式?
- JDBC操纵数据库的步骤(以SQLServer为例)
- 如何用C语言编写幂运算的代码?救急!!!
- 如何用c语言制作带图像的验证码
- 如何用C语言解析BMP文件的结构
- 如何用C语言调用JAVA的类文件啊
- 如何用C语言调用JAVA的类
- 如何用C语言获取文件的大小
- AfxOleInit 和CoInitlize的区别
- 国际:写出漂亮代码的七种方法----看了美化化码的想法,觉得很好,故加以引用,希望更多人可以看到
- Struct 结构体疑惑(c语言)
- 终验结果的经验
- Unix下如何直接获取键盘输入而不需要以回车作为结束符的方法总结
- 如何用C语言操纵AVR的IO端口(以ICCAVR为例)
- 总结Java中return语句的用法
- asp.net的自代验证forms
- windows CE应用程序异常的调试方法——转载
- hibernate开发中使用原生语句查询
- 使用curses库进行tab 移动代码
- Cannot retrieve mapping for action
- 如何处理libva加速元件的显示:(vaPutImage)(1)
- 如何处理libva加速元件的显示:(vaPutImage)(2)-将视频过滤器更改为视频接收器