Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <REGX52.H>
- #define TRUE 1
- // Znaki na 7-segmentowy wyswietlacz
- unsigned char liczba[] = {0x3F, 0x06, 0X5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
- // Plywajace zero
- unsigned char plywanie[] = {0xEF, 0xDF, 0xBF, 0x7F};
- // Do lapanie wiersza
- unsigned char wiersz;
- // do wyswietlania liczb
- unsigned char wyswietlany = 0;
- unsigned char licznik = 0;
- // wlacznik wyswietlacza
- bit on_flag = 0; // 1 -> wlaczony
- bit strona = 0; // 0 - lewa, 1 - prawa
- // --- OBSLUGA PRZYCISKOW --- //
- void wlacznik() interrupt 0
- {
- on_flag = on_flag ^ 1; // xorowanie wlacznika
- }
- void inkrementacja() interrupt 2
- {
- wyswietlany++;
- if (wyswietlany == 100)
- wyswietlany = 0;
- licznik = wyswietlany;
- }
- // --- TIMER --- //
- void timer() interrupt 1
- {
- if (on_flag)
- {
- if (strona)
- {
- P1 = liczba[wyswietlany % 10];
- P3 = 0x4C;
- }
- else
- {
- P1 = liczba[wyswietlany / 10];
- P3 = 0x8C;
- }
- P3 = 0xCC;
- }
- strona = strona ^ 1;
- }
- // --- OBSLUGA KLAWIATURY --- //
- void kolumna_1()
- {
- if (wiersz == 3)
- {
- licznik = 0;
- }
- else
- {
- licznik = (licznik * 10) % 100 + wiersz * 3 + 1;
- }
- while (!P2_1)
- ;
- }
- void kolumna_2()
- {
- if (wiersz == 3)
- {
- licznik = (licznik * 10) % 100;
- }
- else
- {
- licznik = (licznik * 10) % 100 + wiersz * 3 + 2;
- }
- while (!P2_2)
- ;
- }
- void kolumna_3()
- {
- if (wiersz == 3)
- {
- wyswietlany = licznik;
- }
- else
- {
- licznik = (licznik * 10) % 100 + wiersz * 3 + 3;
- }
- while (!P2_3)
- ;
- }
- void wiersze()
- {
- P2 = plywanie[wiersz];
- if (!P2_1)
- kolumna_1();
- else if (!P2_2)
- kolumna_2();
- else if (!P2_3)
- kolumna_3();
- wiersz = (wiersz + 1) % 4;
- }
- // --- INICJALIZACJA PRZERWAN --- //
- void setup()
- {
- EX0 = 1; // zewnetrzne przerwanie o numerze 0
- EX1 = 1; // zewnetrzne przerwanie o numerze 1
- ET0 = 1; // przerwania licznika
- IT0 = 1; // przerwanie na 0
- IT1 = 1; // przerwanie na 0
- TMOD = 0x20; // 8bit autoreload
- TR0 = 1; // start licznika
- EA = 1; // wlaczenie przerwan
- }
- /// --- MAIN --- ///
- int main()
- {
- setup();
- while (TRUE)
- {
- wiersze();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement