#include "macros.h"
#define UP_DOWN PINB4
#define INC_DEC PINB7
unsigned char convertBCD(unsigned char value){
unsigned char BCD = 0b00000000;
int i = 0;
unsigned char decs = (value/10)%10;
unsigned char units = value%10;
while(i<4){
BCD = BCD | (getValue(units, (3-i))<<(i+4));
BCD = BCD | (getValue(decs, (3-i))<<i); i++;
}
return BCD;
}
unsigned char value = 0;
size_t millisCurrent = 0;
size_t millisButton = 0;
void setup () {
DDRD = (OUTPUT<<DDD7) |
(OUTPUT<<DDD6) |
(OUTPUT<<DDD5) |
(OUTPUT<<DDD4) |
(OUTPUT<<DDD3) |
(OUTPUT<<DDD2) |
(OUTPUT<<DDD1) |
(OUTPUT<<DDD0) ;
PORTD = 0b00000000;
DDRB = (INPUT<<DDB4)|
(INPUT<<DDB7);
}
void loop() {
millisCurrent = millis();
if(getValue(PINB, UP_DOWN) && (millisCurrent - millisButton) > 200){
millisButton = millisCurrent;
if(getValue(PINB, INC_DEC)) value--;
else value++;
if(value >> 7) value = 0;
if(value > 99) value = 99;
PORTD = convertBCD(value);
}
}⏎