#include sbit segC=P0^2; // przypisanie adresu zmiennej do portu P0 void timer0(); // deklaracja prototypu funkcji obsługi przerwania void button0(); // deklaracja prototypu funkcji obsługi przerwania void delay(unsigned int i); //prototyp funkcji opóźnienia char zmienna; //..................program główny.............// void main() { ET0=1; //zezwolenie na przerwanie od timera0 EX0=1; //zezwolenie na przerwanie zewn0 TMOD=0x01; //timer tryb 1 czyli tryb 16-sto bitowy EA=1; //uaktywnienie systemu obsługi przerwań TR0=1; //timer0 start P0=0; //wygaś wszystkie segmenty P2=0; //uaktywnij wyświetlacz 0 (czyli pierwszy od lewej) while (1) { } } //.............................................// void delay (unsigned int i) // ciało funkcji opóźnienia { for (;i>0;i--); //odliczaj w dół do zera } void button0() interrupt 0 //ciało funkcji obsługi przerwania { TR0=~TR0; //negacja stanu poprzedniego załączenia timera0 if (TR0==0) segC=0; //jak nie mruga to wygasza diodę) delay(20000); //opóźnienie na drganie styków przycisku } void timer0() interrupt 1 // ciało funkcji obsługi przerwania { zmienna++; if (zmienna>=6) //zmienna liczy który raz wchodzimy do przerwania { segC=~segC; zmienna=0; } segC=~segC; //negacja stanu poprzedniego zapalenia segmentu } //segment ma mrugać 2 razy w ciągu sekundy //