00001 00002 00003 00004 00005 00006 #ifndef _UTIL_H 00007 #define _UTIL_H 00008 00009 #define BV2(a,b) (_BV(a)|_BV(b)) 00010 #define BV3(a,b,c) (_BV(a)|_BV(b)|_BV(c)) 00011 #define BV4(a,b,c,d) (_BV(a)|_BV(b)|_BV(c)|_BV(d)) 00012 #define BV5(a,b,c,d,e) (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)) 00013 #define BV6(a,b,c,d,e,f) (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)|_BV(f)) 00014 #define BV7(a,b,c,d,e,f,g) (_BV(a)|_BV(b)|_BV(c)|_BV(d)|_BV(e)|_BV(f)|_BV(g)) 00015 00017 enum _blinkmode { 00018 BLINK_NONE = 0, 00019 BLINK_HH = 1, 00020 BLINK_MM = 2, 00021 BLINK_ALL = 3, 00022 }; 00023 00025 #define maketime(hh,mm) (((hh) << 8) + (mm)) 00026 00029 #define _frombcd(x) ((x & 017) + (((x) & 0160)>>4) * 10) 00030 00033 uint8_t frombcd(uint8_t); 00034 00037 uint8_t days_in_month_bcd(uint8_t year, uint8_t month); 00038 00040 uint8_t bcd_increment(uint8_t x); 00041 00043 uint8_t day_of_week(uint8_t y, uint8_t m, uint8_t d); 00044 00046 void set_blinkmode(uint8_t mode); 00047 00049 void (*blinkhandler)(uint8_t); 00050 00051 void duty_set(uint8_t d); 00052 00053 uint8_t duty_get(); 00054 00055 void fadeto(uint16_t t); 00056 00057 uint16_t get_display_value(); 00058 00059 00060 00061 #endif