Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1.  
  2. #include <REG51.H>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <mkd51sim.h>
  6. sfr16 DPTR = 0x82;
  7. xdata char diody _at_ 0x8009;
  8. xdata char klawisze _at_ 0x8008;
  9. xdata volatile unsigned char POT0 _at_ 0x8005 ;
  10. sbit P1_8= 0x96;
  11. void opoz(unsigned int n)
  12. { unsigned int i;
  13. for (i=0; i<n; i++);
  14. }
  15. short int spr=0;
  16. short int diodela;
  17. int i,j,f,k, op,l,a, licznik=0, klawisze1=0, odp=0, odp1=0, odp3=0, odp4=0;
  18. int poziomtrudnosci=8;
  19. int potstart=2;
  20. int tablicaliczb[8];
  21. short int checksum=0;
  22. unsigned char check=0xFF;
  23. unsigned char tablica_diod[8];
  24. unsigned char tablica_odpowiedzi[8];
  25. //unsigned char tablicamasek[7];
  26. unsigned char tablicaodpowiedzi[7];
  27. /*
  28. unsigned char zczytywanieklawiszy(unsigned char butt)
  29. {
  30.  
  31.  
  32. if(butt^0==1){return(0x00);}
  33. if(butt^1==1){return(0x01);}
  34. if(butt^2==1){return(0x02);}
  35. if(butt^3==1){return(0x04);}
  36. if(butt^4==1){return(0x10);}
  37. if(butt^5==1){return(0x20);}
  38.  
  39.  
  40. }
  41. */
  42. unsigned char losowanie(int a)//tworzenie sekwencji diod
  43. {
  44. tablicaliczb[0]=50%5;
  45. for(i=1; i<8; i++)
  46. {
  47. tablicaliczb[i]=((tablicaliczb[i-1]+3)%5); //tworzenie pseudolosowej konfiguracji
  48.  
  49. }
  50.  
  51.  
  52. if(tablicaliczb[a]==0){return(0x01);}
  53. else if(tablicaliczb[a]==1){return(0x02);}
  54. else if(tablicaliczb[a]==2){return(0x04);}
  55. else if(tablicaliczb[a]==3){return(0x08);}
  56. else if(tablicaliczb[a]==4){return(0x10);}
  57. else if(tablicaliczb[a]==5){return(0x20);}
  58. else if(tablicaliczb[a]!=0&&tablicaliczb[f]!=1&&tablicaliczb[f]!=2&&tablicaliczb[f]!=3&&tablicaliczb[f]!=4&&tablicaliczb[f]!=5){return(0x00);}
  59.  
  60. }
  61.  
  62. void main()
  63. {
  64.  
  65. diody=0x00;
  66. checksum=0;
  67. check=klawisze;
  68. for(diodela=0; diodela<8;diodela++)//tworzenie tablicy z diodami ktora pozniej porownamy
  69. {
  70. tablica_diod[diodela]=losowanie(diodela);
  71. }
  72.  
  73. for(l=0; l<8;l++)
  74. {
  75.  
  76. diody=tablica_diod[l];
  77. opoz(40000);
  78. opoz(40000);
  79. opoz(40000);
  80. opoz(40000);
  81. diody=0x00;
  82. opoz(20000);
  83. }
  84. {opoz(40000); // kontrolne miganie na start
  85. diody=check;
  86. opoz(40000);
  87. diody=0x00;
  88. opoz(40000);
  89. diody=klawisze;
  90. opoz(40000);
  91. diody=0x00;}
  92.  
  93.  
  94.  
  95.  
  96.  
  97. check=klawisze&0x3F; //maskowanie checka
  98. while(1)
  99. {
  100. if(licznik==8){goto koniec;}
  101. klawisze1=klawisze&0x3F;// maskowanie klawiszy
  102. if(klawisze1==0x3F) // sprawdzanie - nic nie wcisniete
  103. {
  104. diody=0x01;
  105. }
  106. else
  107. {
  108.  
  109. if(check==klawisze1) // sprawdzanie ktorys przycisk wcisniety
  110. {diody=0x02;}
  111. else
  112. {
  113. if(licznik<8){ //zliczanie klikniec
  114.  
  115. tablicaodpowiedzi[licznik]=(~klawisze1&0x3F);//zapisywanie klikniec do tablicy
  116. licznik++;
  117. }
  118. else{goto koniec;} //wyjscie z petli
  119. }
  120. }
  121. check=klawisze1; //ustawienie check na wejscie
  122. koniec:
  123. if(licznik==7){
  124. for(odp4=0;odp4<8;odp4++){
  125. if(tablicaodpowiedzi[odp4]==tablica_diod[odp4+1]){odp3++;}
  126. }
  127. if(odp3>=6)
  128. {
  129. diody=0xF0;
  130. }
  131. else{diody=0x0F;}
  132.  
  133. }
  134. }
  135. /*koniec:
  136. for(odp=0;odp<8;odp++){// ogladanie tablicy odpowiedzi
  137. diody=tablicaodpowiedzi[odp];
  138. opoz(100000);
  139. opoz(60000);
  140. opoz(60000);
  141. opoz(60000);}
  142. diody=0xFF;
  143. opoz(60000);
  144. diody=0x00;
  145. opoz(60000);
  146. diody=0xFF;
  147. opoz(60000);
  148. diody=0x00;
  149.  
  150.  
  151. for(odp1=0;odp1<8;odp1++){// ogladanie tablicy diod
  152. diody=tablica_diod[odp1];
  153. opoz(600000);
  154. opoz(600000);
  155. opoz(600000);
  156. }
  157. goto koniec2;
  158. */
  159.  
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement