28.2.10 __builtin_btg

Architecture

dsPIC33C/E/F, dsPIC30

Description

This function will generate a btg machine instruction.

Some examples include:

int16_t i; /* near by default */
int16_t l attribute((far));

struct foo {
  int16_t bit1:1;
} barbits;

int16_t bar;

void some_bittoggles() {
  register int16_t j asm("w9");
  int16_t k;

  k = i;

  __builtin_btg(&i,1);
  __builtin_btg(&j,3);
  __builtin_btg(&k,4);
  __builtin_btg(&l,11);

 return j+k;
} 
Note: Taking the address of a variable in a register will produce warning by the compiler and cause the register to be saved onto the stack (so that its address may be taken); this form is not recommended. This caution only applies to variables explicitly placed in registers by the programmer.

Prototype

void __builtin_btg(uint16_t *, uint16_t 0xn);

Arguments

* – A pointer to the data item for which a bit should be toggled.

0xn – A literal value in the range of 0 to 15.

Return Value

Returns a btg machine instruction.

Machine Instruction

btg

Error Messages

An error message will be displayed if the parameter values are not within range.