您的位置 首页 芯闻

IAR for AVR 学习笔记(3)–位操作

3.1.在c语言里对位的操作如一般如下:PORTB

3.1.在c言语里对位的操作如一般如下:

PORTB|=(1<<2);//置PORTB的第2位=1
PORTB&=~(1<<2);//置PORTB的第2位=0
PORTB^|=(1<<2);//取反PORTB的第2位
While(PORTB&(1<<2));//判别1
While(!(PORTB&(1<<2)));//判别为0

3.2.IAR编译器对位的支撑更强壮,除了上面的方法外还有以下更简略的操作方法:
PORTB_ Bit2=1; //置PORTB的第2位=1
PORTB_ Bit2=0; //置PORTB的第2位=0
PORTB_ Bit2=~ PORTB_ Bit2;//取反PORTB的第2位
While(PORTB_ Bit2);或许while(PORTB_Bit2==1);//判别1
while(PORTB_ Bit2==0);//判别0
PORTC_Bit4=PORTB_Bit2;//把PORTB的第2位传送到PORTC的第4位

3.3.位变量界说
因为iar运用了扩展言语,它对位域的支撑变为最小为char类型,咱们能够很方便地用来界说位变量。
选用结构体来界说位变量:
struct
{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
}t;
然后就能够用以下位变量了。
t.bit0=1;
t.bit0=~t.bit0;
可是选用以上结构体做出来的位变量只能够拜访t的位,不能够直接拜访变量t,和规范的IAR位操作也不一样。选用联合体来界说作用更佳。
#i nclude
union
{

unsigned char t;

struct
{

unsigned char t_bit0:1,

t_bit1:1,

t_bit2:1,

t_bit3:1,

t_bit4:1,

t_bit5:1,

t_bit6:1,

t_bit7:1;

};

};
void main(void)
{
t_bit0=1;//拜访变量t的位
t_bit0=~t_bit0;
PORTB=t;//直接拜访变量t
}
位变量也能够直接界说在作业寄存器里。

3.4 bool 数据类型在C++言语里是默许支撑的。
假如你在C代码的头文件里包括stdbool.h, bool数据类型也能够运用在C言语里。也能够运用布尔值 false和 true。不过是占用8位1个字节。
#i nclude
#i nclude
bool y=0;//界说位变量
void main(void)
{
y=!y;//取反位变量
PORTB_Bit3=y;//传递位变量
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/273085.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部