Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.80 KB | None | 0 0
  1. #include <p24fj128ga010.h>
  2.  
  3. _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
  4. _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
  5.  
  6. #define SCALE 308L
  7.  
  8. /* numer ktĂłrym dostajemy siÄ? do potencjometru */
  9. #define TVOLT 5
  10. #define AINPUTS 0xffcf
  11.  
  12. void ADCinit(int amask)
  13. {
  14. AD1PCFG = amask;
  15. AD1CON1 = 0x00e0;
  16. AD1CSSL = 0;
  17. AD1CON2 = 0;
  18. AD1CON3 = 0x1f02;
  19. AD1CON1bits.ADON = 1;
  20. }
  21.  
  22. int readADC(int ch)
  23. {
  24. AD1CHS = ch;
  25. AD1CON1bits.SAMP = 1;
  26. while (!AD1CON1bits.DONE);
  27. return ADC1BUF0;
  28. }
  29.  
  30. int main(void)
  31. {
  32. unsigned long i;
  33. unsigned char display = 0;
  34.  
  35. int volt;
  36. int speed;
  37. //maksymalna wartoĹ?Ä? jakÄ? moĹźna odczytaÄ? to ok 1123. na jej
  38. //podstawie przeskalujemy wynik
  39. int maxOdczyt = 1123;
  40. int scale = maxOdczyt / 5;
  41. int program = 1, start = 1, stan = 0, lewa, prawa, pileczka, zmianaprogramu = 10, zatrzymajprogram = 1;
  42. int licznik = 0;
  43.  
  44.  
  45. //inicjalizacja
  46. PORTA = 0x0000;
  47. TRISA=0xFF00;
  48. TRISD=0xFFFF;
  49. ADCinit(AINPUTS); //inicjalizacja konwertera AD
  50.  
  51.  
  52. while (1) {
  53. PORTA=(unsigned int) display;
  54. Nop();
  55.  
  56. for (i = 500 * SCALE; i > 0; i--) Nop();
  57.  
  58. volt = readADC(TVOLT); //Odczytanie potencjometru
  59.  
  60. if(volt < scale)
  61. speed = 0.01;
  62. if(volt >= scale && (volt < scale * 2))
  63. speed = 10;
  64. if((volt >= scale * 2) && (volt < scale * 3))
  65. speed = 300;
  66. if((volt >= scale * 3) && (volt < scale * 4))
  67. speed = 1000;
  68. if((volt >= scale * 4) && (volt <= maxOdczyt))
  69. speed = 5000;
  70.  
  71. for (i = SCALE * speed; i > 0; i--) Nop();
  72.  
  73.  
  74. if(zmianaprogramu == 0){
  75. program++;
  76. start = 1;
  77. zmianaprogramu = 10;
  78. }
  79. else if(zatrzymajprogram == 0) zmianaprogramu = 10;
  80. else zmianaprogramu--;
  81. if (PORTDbits.RD13 == 0){
  82. program++;
  83. start = 1;
  84. zatrzymajprogram = 1;
  85. }
  86. else if(PORTDbits.RD6 == 0) {
  87. program--;
  88. start = 1;
  89. zatrzymajprogram = 1;
  90. }
  91. else if(PORTDbits.RD7 == 0) {
  92. if(zatrzymajprogram == 1) zatrzymajprogram = 0;
  93. else zatrzymajprogram = 1;
  94. }
  95.  
  96. if(program == 1)
  97. {
  98. if(start == 1)
  99. {
  100. display = 0;
  101. start = 0;
  102. }
  103. else
  104. {
  105. if(display != 85)
  106. {
  107. display = 85;
  108. stan = 1;
  109. }
  110. else
  111. {
  112. display = display << 1;
  113. }
  114. }
  115. }
  116.  
  117. if(program == 2)
  118. {
  119. if(start == 1)
  120. {
  121. display = 24;
  122. licznik = 0;
  123. start = 0;
  124. lewa = 8;
  125. prawa = 16;
  126. }
  127. else
  128. {
  129. if(licznik == 0)
  130. {
  131. if(display != 129)
  132. {
  133. lewa = lewa >> 1;
  134. prawa = prawa << 1;
  135. display = lewa | prawa;
  136. }
  137. else licznik = 1;
  138. }
  139.  
  140. else
  141. {
  142. if(display != 24)
  143. {
  144. lewa = lewa << 1;
  145. prawa = prawa >> 1;
  146. display = lewa | prawa;
  147. }
  148. else
  149. {
  150. licznik = 0;
  151. display = 24;
  152. }
  153. }
  154. }
  155. }
  156.  
  157. if(program == 3)
  158. {
  159. if(start == 1)
  160. {
  161. display = 24;
  162. licznik = 0;
  163. start = 0;
  164. }
  165. else
  166. {
  167. if(licznik == 0)
  168. {
  169. if(display < 255)
  170. {
  171. display = ((display << 1) | (display >> 1));
  172. }
  173. else licznik = 1;
  174. }
  175.  
  176. else
  177. {
  178. if(display != 60)
  179. display = (display << 1) & (display >> 1);
  180. else
  181. {
  182. licznik = 0;
  183. display = 24;
  184. }
  185. }
  186. }
  187. }
  188.  
  189.  
  190. if(program == 4)
  191. {
  192. if(start == 1)
  193. {
  194. display = 129;
  195. start = 0;
  196. prawa = 1;
  197. lewa = 128;
  198. licznik = 0;
  199. pileczka = 1;
  200. }
  201. else
  202. {
  203. if(licznik == 0)
  204. {
  205. if(pileczka < 64)
  206. {
  207. pileczka = pileczka << 1;
  208. display = prawa | lewa | pileczka;
  209. }
  210. else licznik = 1;
  211. }
  212.  
  213. else
  214. {
  215. if(pileczka > 2)
  216. {
  217. pileczka = pileczka >> 1;
  218. display = prawa | lewa | pileczka;
  219. }
  220. else
  221. {
  222. licznik = 0;
  223. }
  224. }
  225.  
  226. }
  227. }
  228.  
  229. if(program == 5)
  230. {
  231. if(start == 1)
  232. {
  233. display = 21;
  234. start = 0;
  235. }
  236. else
  237. {
  238. if(stan == 0)
  239. if(display < 84)
  240. {
  241. display = display << 1;
  242. }
  243. else
  244. {
  245. display = 168;
  246. stan = 1;
  247. }
  248. else
  249. if(display > 42)
  250. {
  251. display = display >> 1;
  252. }
  253. else
  254. {
  255. display = 21;
  256. stan = 0;
  257. }
  258. }
  259. }
  260.  
  261. if(program == 6)
  262. {
  263. if(start == 1)
  264. {
  265. stan = 0;
  266. pileczka = 165;
  267. lewa = 8;
  268. prawa = 16;
  269. display = 0;
  270. start = 0;
  271. }
  272. else
  273. {
  274. if(stan == 0)
  275. {
  276. display = pileczka | prawa | lewa;
  277. prawa = prawa << 2;
  278. lewa = lewa >> 2;
  279. stan = 1;
  280. }
  281. else
  282. {
  283. display = pileczka | prawa | lewa;
  284. prawa = prawa >> 2;
  285. lewa = lewa << 2;
  286. stan = 0;
  287. }
  288. }
  289. }
  290.  
  291.  
  292.  
  293. if (program > 6) {
  294. program = 1;
  295. }
  296. if (program < 1) {
  297. program = 6;
  298. }
  299. }
  300.  
  301.  
  302. return 0;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement