Frequently Asked Questions

How can I pass a variable to functions like OUTPUT_HIGH()?

Using the Version 5 and up compilers, the I/O functions accept a variable. For older compiler versions, use the following techniques:

switch(pin_to_use) { 
   case PIN_B3 : output_high(PIN_B3); break; 
   case PIN_B4 : output_high(PIN_B4); break; 
   case PIN_B5 : output_high(PIN_B5); break; 
   case PIN_A1 : output_high(PIN_A1); break; 
}

If you need to use any pin on a port use:

#byte portb = 6 
#byte portb_tris = 0x86 // **
portb_tris &= ~(1<<bit_to_use); // **
portb |= (1<<bit_to_use); // bit_to_use is 0-7

If you need to use any pin on any port use:

*(pin_to_use/8|0x80) &= ~(1<<(pin_to_use&7)); // **

*(pin_to_use/8) |= (1<<(pin_to_use&7));

In all cases pin_to_use is the normal PIN_A0... defines.

** These lines are only required if you need to change the direction register (TRIS).


C-Aware IDE Demo
Embedded C Learners Kit
C Workshop Compiler