Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <c8051f340.h>
- #include "time.h"
- #include <stdlib.h>
- #include "TFT.h"
- #include "joy.h"
- void OSCILLATOR_Init (void);
- void PORT_Init (void);
- #define OBST_NUM 3
- #define KORAK 5
- typedef struct obstacles {
- char x1;
- char y1;
- char visible;
- char length;
- } PREPREKE;
- void generisi_prepreke(PREPREKE *prepreke){
- int i = 0;
- for(i = 0; i < OBST_NUM; i++) {
- (prepreke+i)->x1 = rand() % 100;
- (prepreke+i)->y1 = 0;
- (prepreke+i)->length = 3*KORAK + (rand() % 5) * KORAK;
- }
- }
- void pomjeri_prepreke(PREPREKE *prepreke, int korak) {
- int i = 0;
- for(i = 0; i < OBST_NUM; i++) {
- //(prepreke+i)->x1 = rand() % 100;
- (prepreke+i)->y1 += korak;
- (prepreke+i)->length = 10 + rand() % 20;
- }
- }
- void main(void)
- {
- int joyX, joyY, prevX, prevY;
- bit fire, prevFire;
- PREPREKE prepreke[OBST_NUM];
- PCA0MD &= ~0x40; // Watchdog tajmer iskljucen
- OSCILLATOR_Init(); // Inicijalizacija oscilatora (Fosc = 22.1184 MHz)
- TIME_Init(); // Inicijalizacija sistemskog vremena (koristi se prekid tajmera 2)
- PORT_Init(); // Inicijalizacija portova
- TFT_Init(); // Inicijalizacija displeja
- JOY_Init(); // Inicijalizacija dzojstika
- TFT_clrScr();
- //target();
- generisi_prepreke(&prepreke);
- //test aplikacija:
- while (1)
- {
- //citanje X pozicije
- prevX = joyX;
- joyX = JOY_ReadX();
- //citanje Y pozicije
- prevY = joyY;
- joyY = JOY_ReadY();
- //citanje stanja tastera
- prevFire = fire;
- fire = JOY_ReadTrigger();
- TFT_setColor(255, 0, 0);
- TFT_drawLine(prepreke[0].x1, prepreke[0].y1, prepreke[0].x1, prepreke[0].y1 + prepreke[0].length);
- TFT_drawLine(prepreke[1].x1, prepreke[1].y1, prepreke[1].x1, prepreke[1].y1 + prepreke[1].length);
- TFT_drawLine(prepreke[2].x1, prepreke[2].y1, prepreke[2].x1, prepreke[2].y1 + prepreke[2].length);
- //move_obstacles();
- if (prevX != joyX || prevY != joyY || fire != prevFire) //doslo je do promene?
- {
- /*TFT_setColor(0, 0, 0); //crno
- TFT_fillCircle(prevX, prevY, 4); //izbrisi krug sa trenutne pozicije
- if (fire)
- TFT_setColor(255, 255, 0); //zuto
- else
- TFT_setColor(255, 0, 0); //crveno
- TFT_fillCircle(joyX, joyY, 4); //nacrtaj krug na novoj poziciji
- target(); //ponovo nacrtaj metu
- if (fire)
- TFT_setColor(255, 255, 0); //zuto
- else
- TFT_setColor(255, 0, 0); //crveno
- TFT_fillCircle(joyX, joyY, 4); //nacrtaj krug na novoj poziciji */
- }
- }
- }
- void PORT_Init (void)
- {
- P2MDIN |= 0x0F; // 4 najniza bita porta P2 -> digitalni
- P2MDOUT = 0x0C; // Pinovi za LED -> push-pull izlazi
- // Crossbar inicijalizacija
- XBR1 = 0x40; // Dozvola crossbar-a i slabih pull-up otpornika
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement