Advertisement
Guest User

Untitled

a guest
Jan 8th, 2013
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.11 KB | None | 0 0
  1. /* low-level macros for pin i/o manipulation */
  2. #define _INPUT(port, pin)   DDR ## port &= ~_BV(pin)
  3. #define _OUTPUT(port, pin)  DDR ## port |= _BV(pin)
  4. #define _CLEAR(port, pin)   PORT ## port &= ~_BV(pin)
  5. #define _SET(port, pin)     PORT ## port |= _BV(pin)
  6. #define _TOGGLE(port, pin)  PORT ## port ^= _BV(pin)
  7. #define _READ(port, pin)    ((PIN ## port & _BV(pin)) ? 1 : 0)
  8.  
  9. /* high-level macros for pin i/o */
  10. #define INPUT(x)        _INPUT(x)
  11. #define OUTPUT(x)       _OUTPUT(x)
  12. #define CLEAR(x)        _CLEAR(x)
  13. #define SET(x)          _SET(x)
  14. #define TOGGLE(x)       _TOGGLE(x)
  15. #define READ(x)         _READ(x)
  16. #define PULLUP_ON(x)        do { _INPUT(x); _SET(x); } while(0)
  17. #define PULLUP_OFF(x)       do { _INPUT(x); _CLEAR(x); } while(0)
  18.  
  19. #define LCD_D4          A,4
  20. #define LCD_D5          A,5
  21. #define LCD_D6          A,6
  22. #define LCD_D7          A,7
  23.  
  24. #define LCD_EN          A,1
  25. #define LCD_RW          A,2
  26. #define LCD_RS          A,3
  27.  
  28. #define LCD_PWR         A,0
  29.  
  30. #define LED0            C,7
  31.  
  32. #define WIEG_LED0       B,4
  33. #define WIEG_LED1       B,5
  34. #define WIEG_BUZZER0        B,6
  35. #define WIEG_BUZZER1        B,7
  36.  
  37. ...
  38.  
  39. void foo(void)
  40. {
  41.     OUTPUT(LED0); SET(LED0);
  42.     PULLUP_ON(KEY_UP);
  43.  
  44.     while (READ(KEY_UP)) ;
  45.     CLEAR(LED0);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement