ibrahim ozturk

Entrepreneur, Tech CTO, Software Developer, Electronics Engineer, Author




Tek bit işlemi – gömülü C

Category : General

Port üzerindeki herhangi bir pine ya da bit array diye tanımlanabilecek herhangi bir değişkenden tek bite veya birkaç bite dokunmak istiyorsanız ve bu işlemi diğer bitlerin değerlerini değiştirmeden sağlamak istiyorsaniz ne yapmanız gerektiğine cevap vermeye çalışacağım.

Bu işlemlerin temel mantığı istenen bite uygun bitwise maskeleme islemi ile ulaşabilmektir. Örneğin temp değişkeninin sadece 4.bitini 1 olarak ayarlamak istiyoruz  ya da diğer bir deyişle set etmek istediğimizi varsayalim. Bit numaralandirmamin en sagdan 0,1,2… diye gittigini hatırlatmak istiyorum. Bu işlemi sağlamak için başlangıçtaki değişken ile uygun bite kaydırılmış değeri aşağıdaki gibi bitwise or işlemine tabi tutuyoruz.

uint8_t temp = 0x08; /* 00001000 */
temp |=  (1<<4);     /* 00011000 */

Aynı işlemi birden çok bite uygulamak istiyorsaniz (burada 4. ve 5. bit):

uint8_t temp = 0x08; /* 00001000 */
temp |=  (1<<4) | (1<<5);     /* 00111000 */

Diğer yandan bir biti 0 olarak ayarlamak istediğinizde ya da diğer bir deyişle clear etmek istediğimizde :

uint8_t temp = 0x08; /* 00111000 */
temp &= ~(1<<3);       /* 00110000 */

Aynı işlemi birden çok bite uygulamak istiyorsaniz (burada 3. ve 4. bit):

uint8_t temp = 0x08; /* 00111000 */
temp &= ~ ((1<<3) | (1<<4));       /* 00100000 */

Yararlanilabilecek detaylı anlatım linkleri :
http://www.micahcarrick.com/tutorials/avr-microcontroller-tutorial/avr-c-programming.html

SHARE :


error: Content is protected !!