Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.39 KB | None | 0 0
  1. #include<msp430x14x.h>
  2. #include "lcd.h"
  3. #include "portyLcd.h"
  4.  
  5. #define klocek1 SEND_CMD(0x40);
  6. #define adrpaletka1 SEND_CMD(0x48);
  7. #define adrpaletka2 SEND_CMD(0x50);
  8. #define UP P4IN&BIT4
  9. #define DOWN P4IN&BIT5
  10.  
  11.  
  12. int blok1=1;
  13. int blok2=1;
  14. int blok3=1;
  15. int blok4=1;
  16. int kierunek=0; // dol czy gora
  17. int kierunek2=0; // prawo czy lewo
  18.  
  19.  
  20. int pozycjapal=2;
  21.  
  22. int pilka_pozycja_poziom;
  23. int pilka_pozycja_pion;
  24. unsigned char pilka_adres;
  25.  
  26. char paletka1[8] = {0,0,0,0,3,3,3,3};
  27. char paletka2[8] = {3,3,3,3,0,0,0,0};
  28.  
  29. void bloczki(){
  30. if(blok1){
  31. SEND_CMD(DD_RAM_ADDR+14);
  32. SEND_CHAR(0xFF);
  33.  
  34. }
  35. if(blok2){
  36. SEND_CMD(DD_RAM_ADDR+15);
  37. SEND_CHAR(0xFF);
  38. }
  39. if(blok3){
  40. SEND_CMD(DD_RAM_ADDR2+14);
  41. SEND_CHAR(0xFF);
  42.  
  43. }
  44. if(blok4){
  45. SEND_CMD(DD_RAM_ADDR2+15);
  46. SEND_CHAR(0xFF);
  47.  
  48. }
  49. }
  50.  
  51. void pal()
  52. {
  53. switch(pozycjapal)
  54. {
  55. case 1:
  56. if((DOWN)==0)
  57. {
  58. pozycjapal++;
  59. Delayx100us(100);
  60. }
  61. break;
  62.  
  63. case 2:
  64. if((UP)==0)
  65. {
  66. pozycjapal--;
  67. Delayx100us(100);
  68. }
  69. if((DOWN)==0)
  70. {
  71. pozycjapal++;
  72. Delayx100us(100);
  73. }
  74. break;
  75.  
  76. case 3:
  77. if((UP)==0)
  78. {
  79. pozycjapal--;
  80. Delayx100us(100);
  81. }
  82. if((DOWN)==0)
  83. {
  84. pozycjapal++;
  85. Delayx100us(100);
  86. }
  87. break;
  88.  
  89. case 4:
  90. if((UP)==0)
  91. {
  92. pozycjapal--;
  93. Delayx100us(100);
  94. }
  95. break;
  96.  
  97.  
  98. }
  99.  
  100. }
  101.  
  102. void rysujpal()
  103. {
  104. switch(pozycjapal)
  105. {
  106. case 1:
  107. SEND_CMD(0x80);
  108. SEND_CHAR(0x02);
  109. SEND_CMD(0xc0);
  110. SEND_CHAR(' ');
  111.  
  112. break;
  113.  
  114. case 2:
  115.  
  116. SEND_CMD(0x80);
  117. SEND_CHAR(0x01);
  118. SEND_CMD(0xc0);
  119. SEND_CHAR(' ');
  120. break;
  121.  
  122. case 3:
  123. SEND_CMD(0x80);
  124. SEND_CHAR(' ');
  125. SEND_CMD(0xc0);
  126. SEND_CHAR(0x02);
  127. break;
  128.  
  129. case 4:
  130. SEND_CMD(0x80);
  131. SEND_CHAR(' ');
  132. SEND_CMD(0xc0);
  133. SEND_CHAR(0x01);
  134. break;
  135.  
  136. }
  137. }
  138.  
  139. void zbicie(){
  140.  
  141. if((DD_RAM_ADDR+14)==pilka_adres){
  142. kierunek=1;
  143. kierunek2=1;
  144. blok1=0;
  145. pilka_pozycja_pion-=2;
  146.  
  147. }
  148.  
  149. if((DD_RAM_ADDR+15)==pilka_adres){
  150. blok2=0;
  151. kierunek=1;
  152. kierunek2=1;
  153. pilka_pozycja_pion-=2;
  154. }
  155.  
  156. if(DD_RAM_ADDR2+14==pilka_adres){
  157. blok3=0;
  158. kierunek=1;
  159. kierunek2=1;
  160. pilka_pozycja_pion-=2;
  161. }
  162.  
  163. if(DD_RAM_ADDR2+15==pilka_adres)
  164. {
  165. blok4=0;
  166. kierunek=1;
  167. kierunek2=1;
  168. pilka_pozycja_pion-=2;
  169. }
  170.  
  171.  
  172. }
  173.  
  174.  
  175. void pilka(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8){
  176. int znaczek[8] = {a1,a2,a3,a4,a5,a6,a7,a8};
  177. SEND_CMD(0x58);
  178. for (int i = 0;i<8;i++)
  179. {
  180. SEND_CHAR(znaczek[i]);
  181. }
  182. }
  183.  
  184. void odbij_pilke_dol(int kierunek){
  185.  
  186.  
  187. if(kierunek==0){
  188. if(pilka_pozycja_poziom!=1){
  189. pilka_pozycja_poziom/=2;
  190. }else{
  191. SEND_CMD(pilka_adres);
  192. SEND_CHAR(' ');
  193. pilka_adres++;
  194.  
  195.  
  196. pilka_pozycja_poziom=16;
  197. }
  198. }
  199.  
  200. if(kierunek==1){
  201. if(pilka_pozycja_poziom!=16){
  202. pilka_pozycja_poziom*=2;
  203. }else{
  204. SEND_CMD(pilka_adres);
  205. SEND_CHAR(' ');
  206. pilka_adres--;
  207.  
  208.  
  209. pilka_pozycja_poziom=1;
  210. }
  211. }
  212.  
  213. int tmp=pilka_pozycja_pion%8;
  214. switch(tmp){
  215. case 0:
  216. SEND_CMD(pilka_adres);
  217. SEND_CHAR(' ');
  218.  
  219. pilka_adres+=0x40;
  220.  
  221. pilka(pilka_pozycja_poziom,0,0,0,0,0,0,0);
  222. pilka_pozycja_pion++;
  223. break;
  224. case 1:
  225. pilka(0,pilka_pozycja_poziom,0,0,0,0,0,0);
  226. pilka_pozycja_pion++;
  227. break;
  228. case 2:
  229. pilka(0,0,pilka_pozycja_poziom,0,0,0,0,0);
  230. pilka_pozycja_pion++;
  231. break;
  232. case 3:
  233. pilka(0,0,0,pilka_pozycja_poziom,0,0,0,0);
  234. pilka_pozycja_pion++;
  235. break;
  236. case 4:
  237. pilka(0,0,0,0,pilka_pozycja_poziom,0,0,0);
  238. pilka_pozycja_pion++;
  239. break;
  240. case 5:
  241. pilka(0,0,0,0,0,pilka_pozycja_poziom,0,0);
  242. pilka_pozycja_pion++;
  243. break;
  244. case 6:
  245. pilka(0,0,0,0,0,0,pilka_pozycja_poziom,0);
  246. pilka_pozycja_pion++;
  247. break;
  248. case 7:
  249. pilka(0,0,0,0,0,0,0,pilka_pozycja_poziom);
  250. pilka_pozycja_pion++;
  251. break;
  252.  
  253. }
  254.  
  255. SEND_CMD(pilka_adres);
  256. SEND_CHAR(0x03);
  257.  
  258. }
  259.  
  260. void odbij_pilke_gora(int kierunek){
  261.  
  262.  
  263. if(kierunek==0){
  264. if(pilka_pozycja_poziom!=1){
  265. pilka_pozycja_poziom/=2;
  266. }else{
  267.  
  268. SEND_CMD(pilka_adres);
  269. SEND_CHAR(' ');
  270. pilka_adres++;
  271. pilka_pozycja_poziom=16;
  272. }
  273. }
  274.  
  275. if(kierunek==1){
  276. if(pilka_pozycja_poziom!=16){
  277. pilka_pozycja_poziom*=2;
  278. }else{
  279.  
  280. SEND_CMD(pilka_adres);
  281. SEND_CHAR(' ');
  282. pilka_adres--;
  283.  
  284. pilka_pozycja_poziom=1;
  285. }
  286. }
  287.  
  288. int tmp=pilka_pozycja_pion%8;
  289. switch(tmp){
  290. case 0:
  291.  
  292. pilka(pilka_pozycja_poziom,0,0,0,0,0,0,0);
  293. pilka_pozycja_pion--;
  294. break;
  295. case 1:
  296. pilka(0,pilka_pozycja_poziom,0,0,0,0,0,0);
  297. pilka_pozycja_pion--;
  298. break;
  299. case 2:
  300. pilka(0,0,pilka_pozycja_poziom,0,0,0,0,0);
  301. pilka_pozycja_pion--;
  302. break;
  303. case 3:
  304. pilka(0,0,0,pilka_pozycja_poziom,0,0,0,0);
  305. pilka_pozycja_pion--;
  306. break;
  307. case 4:
  308. pilka(0,0,0,0,pilka_pozycja_poziom,0,0,0);
  309. pilka_pozycja_pion--;
  310. break;
  311. case 5:
  312. pilka(0,0,0,0,0,pilka_pozycja_poziom,0,0);
  313. pilka_pozycja_pion--;
  314. break;
  315. case 6:
  316. pilka(0,0,0,0,0,0,pilka_pozycja_poziom,0);
  317. pilka_pozycja_pion--;
  318. break;
  319. case 7:
  320. SEND_CMD(pilka_adres);
  321. SEND_CHAR(' ');
  322.  
  323. pilka_adres-=0x40;
  324.  
  325. pilka(0,0,0,0,0,0,0,pilka_pozycja_poziom);
  326. pilka_pozycja_pion--;
  327. break;
  328.  
  329. }
  330.  
  331. SEND_CMD(pilka_adres);
  332. SEND_CHAR(0x03);
  333.  
  334. }
  335.  
  336.  
  337. int main( void )
  338. {
  339.  
  340. WDTCTL=WDTPW+ WDTHOLD;
  341. P4DIR &= ~0x10;
  342. P4DIR &= ~0x20;
  343.  
  344. InitPortsLcd();
  345. InitLCD();
  346. clearDisplay();
  347.  
  348.  
  349.  
  350. adrpaletka1;
  351. for (int i=0;i<8;i++)
  352. {SEND_CHAR(paletka1[i]);}
  353.  
  354. adrpaletka2;
  355. for (int i=0;i<8;i++)
  356. {SEND_CHAR(paletka2[i]);}
  357.  
  358. pilka_pozycja_poziom = 16;
  359. pilka_pozycja_pion=3;
  360. pilka_adres =0x81;
  361.  
  362.  
  363. while(1)
  364. {
  365. pal();
  366. rysujpal();
  367. bloczki();
  368. zbicie();
  369.  
  370.  
  371.  
  372.  
  373. if(pilka_pozycja_pion==16){
  374. pilka_pozycja_pion-=2;
  375. kierunek=1;
  376. }else if((pilka_adres==0xCD||pilka_adres==0x8D)&& pilka_pozycja_poziom==1){
  377. pilka_pozycja_pion-=2;
  378. //TU USTAWIC KAT
  379. kierunek2=1;
  380. kierunek=1;
  381. }else if((pilka_adres==0x81||pilka_adres==0xC1)&& pilka_pozycja_poziom==16){
  382. pilka_pozycja_pion+=2;
  383. //TU TEZ
  384. kierunek2=0;
  385. kierunek=0;
  386. }
  387.  
  388.  
  389.  
  390. switch(kierunek){
  391. case 0:
  392. odbij_pilke_dol(kierunek2);
  393. break;
  394. case 1:
  395. odbij_pilke_gora(kierunek2);
  396. break;
  397. }
  398.  
  399. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement