Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <REG51.H>
- #include <stdio.h>
- #include <stdlib.h>
- #include <mkd51sim.h>
- sfr16 DPTR = 0x82;
- xdata char diody _at_ 0x8009;
- xdata char klawisze _at_ 0x8008;
- xdata volatile unsigned char POT0 _at_ 0x8005 ;
- sbit P1_8= 0x96;
- void opoz(unsigned int n)
- { unsigned int i;
- for (i=0; i<n; i++);
- }
- short int spr=0;
- short int diodela;
- int i,j,f,k, op,l,a, licznik=0, klawisze1=0, odp=0, odp1=0, odp3=0, odp4=0;
- int poziomtrudnosci=8;
- int potstart=2;
- int tablicaliczb[8];
- short int checksum=0;
- unsigned char check=0xFF;
- unsigned char tablica_diod[8];
- unsigned char tablica_odpowiedzi[8];
- //unsigned char tablicamasek[7];
- unsigned char tablicaodpowiedzi[7];
- /*
- unsigned char zczytywanieklawiszy(unsigned char butt)
- {
- if(butt^0==1){return(0x00);}
- if(butt^1==1){return(0x01);}
- if(butt^2==1){return(0x02);}
- if(butt^3==1){return(0x04);}
- if(butt^4==1){return(0x10);}
- if(butt^5==1){return(0x20);}
- }
- */
- unsigned char losowanie(int a)//tworzenie sekwencji diod
- {
- tablicaliczb[0]=50%5;
- for(i=1; i<8; i++)
- {
- tablicaliczb[i]=((tablicaliczb[i-1]+3)%5); //tworzenie pseudolosowej konfiguracji
- }
- if(tablicaliczb[a]==0){return(0x01);}
- else if(tablicaliczb[a]==1){return(0x02);}
- else if(tablicaliczb[a]==2){return(0x04);}
- else if(tablicaliczb[a]==3){return(0x08);}
- else if(tablicaliczb[a]==4){return(0x10);}
- else if(tablicaliczb[a]==5){return(0x20);}
- else if(tablicaliczb[a]!=0&&tablicaliczb[f]!=1&&tablicaliczb[f]!=2&&tablicaliczb[f]!=3&&tablicaliczb[f]!=4&&tablicaliczb[f]!=5){return(0x00);}
- }
- void main()
- {
- diody=0x00;
- checksum=0;
- check=klawisze;
- for(diodela=0; diodela<8;diodela++)//tworzenie tablicy z diodami ktora pozniej porownamy
- {
- tablica_diod[diodela]=losowanie(diodela);
- }
- for(l=0; l<8;l++)
- {
- diody=tablica_diod[l];
- opoz(40000);
- opoz(40000);
- opoz(40000);
- opoz(40000);
- diody=0x00;
- opoz(20000);
- }
- {opoz(40000); // kontrolne miganie na start
- diody=check;
- opoz(40000);
- diody=0x00;
- opoz(40000);
- diody=klawisze;
- opoz(40000);
- diody=0x00;}
- check=klawisze&0x3F; //maskowanie checka
- while(1)
- {
- if(licznik==8){goto koniec;}
- klawisze1=klawisze&0x3F;// maskowanie klawiszy
- if(klawisze1==0x3F) // sprawdzanie - nic nie wcisniete
- {
- diody=0x01;
- }
- else
- {
- if(check==klawisze1) // sprawdzanie ktorys przycisk wcisniety
- {diody=0x02;}
- else
- {
- if(licznik<8){ //zliczanie klikniec
- tablicaodpowiedzi[licznik]=(~klawisze1&0x3F);//zapisywanie klikniec do tablicy
- licznik++;
- }
- else{goto koniec;} //wyjscie z petli
- }
- }
- check=klawisze1; //ustawienie check na wejscie
- koniec:
- if(licznik==7){
- for(odp4=0;odp4<8;odp4++){
- if(tablicaodpowiedzi[odp4]==tablica_diod[odp4+1]){odp3++;}
- }
- if(odp3>=6)
- {
- diody=0xF0;
- }
- else{diody=0x0F;}
- }
- }
- /*koniec:
- for(odp=0;odp<8;odp++){// ogladanie tablicy odpowiedzi
- diody=tablicaodpowiedzi[odp];
- opoz(100000);
- opoz(60000);
- opoz(60000);
- opoz(60000);}
- diody=0xFF;
- opoz(60000);
- diody=0x00;
- opoz(60000);
- diody=0xFF;
- opoz(60000);
- diody=0x00;
- for(odp1=0;odp1<8;odp1++){// ogladanie tablicy diod
- diody=tablica_diod[odp1];
- opoz(600000);
- opoz(600000);
- opoz(600000);
- }
- goto koniec2;
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement