2 // Some helpers for controlling gpio pins
7 PinDirectionOutput
= 1,
12 // ex: pinMode(B0, PinDirectionOutput);
13 static inline void pinMode(uint8_t pin
, int mode
) {
14 uint8_t bv
= _BV(pin
& 0xf);
15 if (mode
== PinDirectionOutput
) {
16 _SFR_IO8((pin
>> 4) + 1) |= bv
;
18 _SFR_IO8((pin
>> 4) + 1) &= ~bv
;
19 _SFR_IO8((pin
>> 4) + 2) &= ~bv
;
23 // ex: digitalWrite(B0, PinLevelHigh);
24 static inline void digitalWrite(uint8_t pin
, int mode
) {
25 uint8_t bv
= _BV(pin
& 0xf);
26 if (mode
== PinLevelHigh
) {
27 _SFR_IO8((pin
>> 4) + 2) |= bv
;
29 _SFR_IO8((pin
>> 4) + 2) &= ~bv
;
33 // Return true if the pin is HIGH
35 static inline bool digitalRead(uint8_t pin
) {
36 return _SFR_IO8(pin
>> 4) & _BV(pin
& 0xf);