#include LiquidCrystal lcd(7, 6, 5, 4, 3, 2); volatile int state = 0; volatile int increm = 0; byte show[8]={ B00000, B00000, B00000, B00000, B00000, B00000, B00000, }; byte ceasH[8][8] = { { B00000, B00000, B00100, B00100, B00000, B00000, B00000, }, { B00000, B00000, B00010, B00100, B00000, B00000, B00000, }, { B00000, B00000, B00000, B00110, B00000, B00000, B00000, }, { B00000, B00000, B00000, B00100, B00010, B00000, B00000, }, { B00000, B00000, B00000, B00100, B00100, B00000, B00000, }, { B00000, B00000, B00000, B00100, B01000, B00000, B00000, }, { B00000, B00000, B00000, B01100, B00000, B00000, B00000, }, { B00000, B00000, B01000, B00100, B00000, B00000, B00000, }, }; byte ceasM[8][8] = { { B00000, B00100, B00100, B00100, B00000, B00000, B00000, }, { B00000, B00001, B00010, B00100, B00000, B00000, B00000, }, { B00000, B00000, B00000, B00111, B00000, B00000, B00000, }, { B00000, B00000, B00000, B00100, B00010, B00001, B00000, }, { B00000, B00000, B00000, B00100, B00100, B00100, B00000, }, { B00000, B00000, B00000, B00100, B01000, B10000, B00000, }, { B00000, B00000, B00000, B11100, B00000, B00000, B00000, }, { B00000, B10000, B01000, B00100, B00000, B00000, B00000, }, }; ISR(INT0_vect) { //reset state = 0; } //Rutina pentru tratarea intreruperii atasata la INT0 ISR(INT1_vect) { increm = increm == 1? 0: 1; } void setup() { lcd.begin(16, 2); } // FuncŃia loop ramane nefolosita, puteti să o folositi pentru a extinde funcționalitatea void loop() { state += increm; state = state == 64? 0:state; for(int i=0; i<7; i++){ show[i] = (byte)ceasM[state%8][i] | (byte)ceasH[state/8][i]; } pinMode(21 ,INPUT); pinMode(20, INPUT); EIMSK |= (1 << INT0); //activam punctual intreruperea INT0 EIMSK |= (1 << INT1); //activam punctual intreruperea INT1 EICRA |= (1 << ISC01); //activam intreruperea 0 pentru front descrescător. EICRA |= (1 << ISC11); //ca si mai sus, pentru intreruperea 1 sei(); //activam intreruperile la nivel global lcd.createChar(1, show); lcd.setCursor(1, 1); lcd.write(1); // cand referiti caractere diferite de „0” nu mai este necesar cast-ul; delay(1000); }