專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)avr c語(yǔ)言位運(yùn)算 與或非 異或邏輯 運(yùn)算介紹 詳解

作者:海盜工作室   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月29日   【字體:

 位運(yùn)算是指按二進(jìn)制位進(jìn)行的運(yùn)算。在單片機(jī)中位運(yùn)算通常用于I/O端口的輸入輸出控制和邏輯判斷。

C語(yǔ)言提供的位運(yùn)算符有:

運(yùn)算符含義功能
按位與如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1;否則為0。
|按位或兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1。
按位異或若參加運(yùn)算的兩個(gè)二進(jìn)制位同號(hào)則結(jié)果為0(假)異號(hào)則結(jié)果為1(真)
取反~是一個(gè)單目(元)運(yùn)算符,用來(lái)對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0。
<<左移左移運(yùn)算符是用來(lái)將一個(gè)數(shù)的各二進(jìn)制位全部左移N位,右補(bǔ)0。
>>右移表示將a的各二進(jìn)制位右移N位,移到右端的低位被舍棄,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)0。

 

與邏輯:

    

 

 


將PA口的第0位清0(即最低位輸出低0v電平),其余位保持不變:   PORTA口應(yīng)同‘11111110’進(jìn)行與運(yùn)算

  二進(jìn)制:11111110 的十六進(jìn)制為:0xFE,C語(yǔ)言代碼:PORTA=PORTA&0xFE;一般采用c語(yǔ)言的“&=‘運(yùn)算符,通常寫(xiě)成

PORTA&=0xFE;   執(zhí)行此語(yǔ)句后,PORTA口的第0位將輸出低電平。

 

或邏輯:

   

 

 


將PA口的第7位置1(即最高位輸出高電平)其余為保持不變,PORTA應(yīng)與‘10000000’進(jìn)行或運(yùn)算

即c語(yǔ)言:PORTA=PORTA|0x80 ;采用或賦值運(yùn)算符,通常寫(xiě)成 PROTA|=0x80 ;  二進(jìn)制‘10000000’的十六進(jìn)制是0x80;

非邏輯:

   

 

 


c語(yǔ)言:PORTA~=0x0F;//將0x0F=‘00001111‘取反后 '11110000‘=0xF0 賦值給PORTA,通常和其他邏輯運(yùn)算符一起使用

異或邏輯:

    

 

 


將PA口的第7位翻轉(zhuǎn),PORTA^=0x80,即執(zhí)行此語(yǔ)句一次,PORTA口的第7位狀態(tài)變化一次,由0變1,或由1變0,可以周期性的控制一個(gè)燈的亮滅。

移位操作:

   

 

 


判斷PA口的第7位是否為0,c語(yǔ)言 if (PINA&(1<<7)==0)       1<<7  結(jié)果為0x80,也可寫(xiě)為 if (PINA&0x80)==0)

 

 

 

關(guān)閉窗口

相關(guān)文章