Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <REGX51.H>
- #include <absacc.h>
- #define CSDS 0xF030
- #define CSDB 0xF038
- #define CSKB0 0xF021
- #define CSKB1 0xF022
- unsigned char j,k;
- unsigned char tablica[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};// od 0 do 9
- unsigned char wskaznik=1;
- unsigned char index=0;
- unsigned int second=00;
- unsigned int minute=00;
- unsigned int hour=00;
- int dot=128;
- int i;
- char w;
- int g;
- int pomocnicza;
- int msec_50;
- //sprawdzile funkcje odpowiedzialna za wybor miejsca i liczby - dziala OK. MJ
- //mechanizm dzialania zegarka powinien byc ok MJ
- //DO ZROBIENIA
- //plik naglowkowy *.c, wywalic jakas funkcje do niego i zaimportowac go
- //zrobic nastawienie zegarka
- //dobrac odpowiedni czas
- //poprawic ewentualne bledy
- char choice(int i); //zasygnalizowanie, ze w programie uzywamy takie funkcje/procedury MJ
- char wybormiejsca(char w);
- void wyswietl(int i, char w);
- void wyswietl2(int i, char w);
- void nastaw(void);
- void zegar(void)
- {
- //second++;
- if(second==60)
- {
- minute++;
- second=00;
- }
- if(minute==60)
- {
- hour++;
- minute=00;
- }
- if(hour==24)
- {
- hour=00;
- minute=00;
- second=00;
- }
- i=second%10;
- pomocnicza = second/10;
- wyswietl(i,1);
- wyswietl(pomocnicza,2);
- i=minute%10;
- pomocnicza = minute/10;
- if ((second%2)==0)
- wyswietl2(i,3); else wyswietl(i,3);
- wyswietl(pomocnicza,4);
- i=hour%10;
- pomocnicza = hour/10;
- if ((second%2)==0)
- wyswietl2(i,5); else wyswietl(i,5);
- wyswietl(pomocnicza,6);
- }
- void timer0() interrupt 1
- {
- msec_50-=1;
- if (!msec_50)
- {
- TH0=256-180;
- msec_50=20;
- P1=P1^0x80; // co 20 przerwan zmien stan diody
- second++;
- }
- }
- void timer1() interrupt 3
- {
- TH1=0xF8;
- TL1=0x30;
- zegar();
- }
- void main(void)
- { nastaw();
- msec_50=20;
- TMOD=0x01; //16bitowy tryb timera
- //TH0=0x3C; //odpowiedzialne za odpowidnie zliczanie 50 ms
- //TL0=0xB0; //odpowiedzialne za odpowidnie zliczanie 50 ms
- EA=1; //zezwolenie globalne na przerwania
- ET0=1; //zezwolenie na przerwania timera0
- TR0=1; //start timera
- ET1=1; //zezwolenie na przerwania timera1
- TR1=1; //start timera
- while(1);
- }
- void wyswietl(int i, char w) //zmienna w uzywana przy wyborze miejsca wyswietlania, zmienna i uzywana przy wyborze liczby wyswietlanej MJ
- {
- P1_6=1;
- XBYTE[CSDS] = wybormiejsca(w);
- XBYTE[CSDB] = choice(i);
- P1_6=0;
- }
- void wyswietl2(int i, char w) //zmienna w uzywana przy wyborze miejsca wyswietlania, zmienna i uzywana przy wyborze liczby wyswietlanej MJ
- {
- P1_6=1;
- XBYTE[CSDS] = wybormiejsca(w);
- XBYTE[CSDB] = (choice(i))|dot;
- P1_6=0;
- }
- void nastaw(void)
- {
- while(k!=127)
- {
- while(1)
- {
- if ((XBYTE[CSKB1] < 255) || (XBYTE[CSKB0]<255))
- {
- j=XBYTE[CSKB0];
- k=XBYTE[CSKB1];
- // if (k==191) {dioda = 1; ET0=0;} // gdy naciskamy Esc dioda gasnie || ESC 10111111
- // if (k==127) {dioda = 0; ET1=1;} // gdy naciskamy Enter dioda sie wlacza || ENTER 01111111
- if (j==253){second++;} // nacisnieto 1
- if (j==251){minute++;} // nacisnieto 2
- if (j==247){hour++;} // nacisnieto 3
- /*if (j==239){klawisz=4;} // nacisnieto 4
- if (j==223){klawisz=5;} // nacisnieto 5
- if (j==191){klawisz=6;} // nacisnieto 6
- if (j==127){klawisz=7;} // nacisnieto 7
- if (k==254){klawisz=8;} // nacisnieto 8
- if (k==253) {klawisz=9;} // nacisnieto 9 */
- }
- if(second==60)
- {
- minute++;
- second=00;
- }
- if(minute==60)
- {
- hour++;
- minute=00;
- }
- if(hour==24)
- {
- hour=00;
- minute=00;
- second=00;
- }
- i=second%10;
- pomocnicza = second/10;
- wyswietl(i,1);
- wyswietl(pomocnicza,2);
- i=minute%10;
- pomocnicza = minute/10;
- if ((second%2)==0)
- wyswietl2(i,3); else wyswietl(i,3);
- wyswietl(pomocnicza,4);
- i=hour%10;
- pomocnicza = hour/10;
- if ((second%2)==0)
- wyswietl2(i,5); else wyswietl(i,5);
- wyswietl(pomocnicza,6);
- }
- }
- }
- char wybormiejsca(char w)
- {
- switch(w)
- {
- case 1:
- wskaznik=1;
- return wskaznik;
- break;
- case 2:
- wskaznik=1;
- wskaznik=wskaznik<<1;
- return wskaznik;
- break;
- case 3:
- wskaznik=1;
- wskaznik=wskaznik<<2;
- return wskaznik;
- break;
- case 4:
- wskaznik=1;
- wskaznik=wskaznik<<3;
- return wskaznik;
- break;
- case 5:
- wskaznik=1;
- wskaznik=wskaznik<<4;
- return wskaznik;
- break;
- case 6:
- wskaznik=1;
- wskaznik=wskaznik<<5;
- return wskaznik;
- break;
- default:
- break;
- }
- }
- char choice(int i)
- {
- switch(i)
- {
- case 1:
- return tablica[1];
- break;
- case 2:
- return tablica[2];
- break;
- case 3:
- return tablica[3];
- break;
- case 4:
- return tablica[4];
- break;
- case 5:
- return tablica[5];
- break;
- case 6:
- return tablica[6];
- break;
- case 7:
- return tablica[7];
- break;
- case 8:
- return tablica[8];
- break;
- case 9:
- return tablica[9];
- break;
- case 0:
- return tablica[0];
- break;
- default:
- break;
- }
- }
Add Comment
Please, Sign In to add comment