## `pin.h`

`pin.h` provides a set of very handy macros that allow to use the bit of each port thru symbolic names. This header has been written by Josef Pavlik.

The first step to use them is to specify the logical name of each bit to be used. The general form of this specification is:

    #define <logical name> <port name><bit number>

for example, the following declare `LED` to be the logical name corresponding to the bit `3` of port `C`.

    #define LED PORTC3

Such a logical name can be defined for ports `A,B,C,D` or `E` and must be used with the following macros:

Macro | Role
`PIN_SET_INPUT(name)` | declare `name` as input bit
`PIN_SET_OUTPUT(name)` | declare `name` as output bit
`PIN_SET_OUTPUT0(name)` | declare `name` as output bit, and force it to 0
`PIN_SET_OUTPUT1(name)` | declare `name` as output bit, and force it to 1
`PIN_SET(name)` | force `name` to 1
`PIN_1(name)` | synonym for `PIN_SET`
`PIN_CLR(name)` | force `name` to 0
`PIN_0(name)` | synonym for `PIN_CLR`
`PIN_TOGGLE(name)` | toggle `name`
`PIN_READ(name)` | return 0 when `name` is clear, else return a non-nul value
`PIN_TST(name)` | synonym for `PIN_READ`
`PIN_WRITE(name,value)` | clear `name` when value is 0, else set it