Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 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;
  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. diody=0x00;
  80. }
  81. {opoz(40000); // kontrolne miganie na start
  82. diody=check;
  83. opoz(40000);
  84. diody=0x00;
  85. opoz(40000);
  86. diody=klawisze;
  87. opoz(40000);
  88. diody=0x00;}
  89.  
  90. while(1)
  91. {
  92.  
  93.  
  94.  
  95. check=klawisze&0x3F; //maskowanie checka
  96. while(1)
  97. {
  98. klawisze1=klawisze&0x3F;// maskowanie klawiszy
  99. if(klawisze1==0x3F) // sprawdzanie - nic nie wcisniete
  100. {
  101. diody=0x01;
  102. }
  103. else
  104. {
  105.  
  106. if(check==klawisze1) // sprawdzanie ktorys przycisk wcisniety
  107. {diody=0x02;}
  108. else
  109. {
  110. if(licznik<8){ //zliczanie klikniec
  111.  
  112. tablicaodpowiedzi[licznik]=klawisze1;//zapisywanie klikniec do tablicy
  113. licznik++;
  114. }
  115. else{goto koniec;} //wyjscie z petli
  116. }
  117. }
  118. check=klawisze1; //ustawienie check na wejscie
  119. }
  120.  
  121.  
  122.  
  123. }
  124. koniec:
  125. /*for(odp=0;odp<8;odp++){// ogladanie tablicy odpowiedzi
  126. diody=tablicaodpowiedzi[odp];
  127. opoz(60000);*/
  128.  
  129.  
  130. if(tablicaodpowiedzi==tablica_diod)
  131. {
  132. diody=0xF0;
  133. }
  134. else{diody=0x0F;}
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement