Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. #include <REGX52.H>
  2.  
  3. #define F_CLK 18432000
  4. #define F_INT 1000
  5.  
  6.  
  7. typedef unsigned char byte;
  8.  
  9.  
  10. byte xdata CRVENE _at_ 0x8000;
  11. byte xdata ZELENE _at_ 0x8001;
  12. byte xdata ZUTE _at_ 0x8002;
  13. byte xdata PLAVE _at_ 0x8003;
  14.  
  15. byte LEDS;
  16.  
  17. unsigned long sys_time = 0;
  18.  
  19. void timer2_ISR() interrupt 5
  20. {
  21. sys_time++;
  22. TF2 = EXF2 = 0;
  23. }
  24.  
  25. unsigned long millis()
  26. {
  27. unsigned long tmp;
  28.  
  29. EA = 0; //zabrana prekida
  30. tmp = sys_time; //ocitavanje vremena
  31. EA = 1; //dozvola prekida
  32.  
  33. return tmp;
  34. }
  35.  
  36. void delay_ms()
  37. {
  38.  
  39. unsigned char SW1;
  40.  
  41. unsigned long t0 = millis();
  42.  
  43. SW1=~CRVENE & 0x03;
  44.  
  45. switch(SW1)
  46. {
  47. case 0x00:
  48. while(millis() - t0 < 36);
  49. break;
  50. case 0x01:
  51. while(millis() - t0 < 72);
  52. break;
  53. case 0x02:
  54. while(millis() - t0 < 143);
  55. break;
  56. case 0x03:
  57. while(millis() - t0 < 289);
  58. break;
  59. }
  60.  
  61.  
  62.  
  63. }
  64. void koja_boja(unsigned char boja)
  65. {
  66. unsigned char dozvola = 1;
  67.  
  68. if(dozvola == 1)
  69. {
  70. LEDS=~(~LEDS >> 1);
  71. boja = LEDS;
  72.  
  73. if(~LEDS & 0x01) dozvola = 0;
  74. }
  75. else
  76. {
  77. LEDS=~(~LEDS << 1);
  78. boja = LEDS;
  79. if(~LEDS & 0x80) dozvola = 1;
  80.  
  81.  
  82. }
  83.  
  84.  
  85. void main()
  86. {
  87.  
  88. unsigned char SW2;
  89.  
  90. //inicijalizacija tajmera 2:
  91. RCAP2H = (-(F_CLK / (12 * F_INT))) >> 8;
  92. RCAP2L = (-(F_CLK / (12 * F_INT))) & 0xff;
  93. T2CON = 0x00; //tajmer 2 -> 16-bitni auto-reload
  94. ET2 = 1; //dozvola prekida tajmera 2
  95. TR2 = 1; //tajmer 2 ON
  96.  
  97. EA = 1; //dozvola prekida
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. while(1)
  106. {
  107. delay_ms();
  108.  
  109.  
  110. SW2=~CRVENE & 0xC0;
  111.  
  112. switch(SW2) {
  113. case 0x00:
  114. if(CRVENE != prethodna_vr) {
  115. delay_ms();
  116. CRVENE = 0x7F;
  117. ZUTE=0xFF;
  118. ZELENE=0xFF;
  119. PLAVE=0xFF;
  120. LEDS=0x7F;
  121. prethodna_vr = 0x00;
  122. }
  123. delay_ms();
  124. koja_boja(CRVENE);
  125. break;
  126. case 0x01:
  127. if(CRVENE != prethodna_vr) {
  128. delay_ms();
  129. CRVENE = 0xFF;
  130. ZUTE=0x7F;
  131. ZELENE=0xFF;
  132. PLAVE=0xFF;
  133. LEDS=0x7F;
  134. prethodna_vr = 0x01;
  135. }
  136. delay_ms();
  137. koja_boja(ZUTE);
  138. break;
  139. case 0x02:
  140. if(CRVENE != prethodna_vr) {
  141. delay_ms();
  142. CRVENE = 0xFF;
  143. ZUTE=0xFF;
  144. ZELENE=0x7F;
  145. PLAVE=0xFF;
  146. LEDS=0x7F;
  147. prethodna_vr = 0x02;
  148. }
  149. delay_ms();
  150. koja_boja(ZELENE);
  151. break;
  152. case 0x03:
  153. if(CRVENE != prethodna_vr) {
  154. delay_ms();
  155. CRVENE = 0xFF;
  156. ZUTE=0xFF;
  157. ZELENE=0xFF;
  158. PLAVE=0x7F;
  159. LEDS=0x7F;
  160. prethodna_vr = 0x03;
  161. }
  162. delay_ms();
  163. koja_boja(PLAVE);
  164. break;
  165. }
  166.  
  167. /*if(dozvola == 1)
  168. {
  169. LEDS=~(~LEDS >> 1);
  170. CRVENE = LEDS;
  171.  
  172. if(~LEDS & 0x01) dozvola = 0;
  173. }
  174. else
  175. {
  176. LEDS=~(~LEDS << 1);
  177. CRVENE = LEDS;
  178. if(~LEDS & 0x80) dozvola = 1;*/
  179. }
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement