Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2014
625
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.65 KB | None | 0 0
  1. #pragma config FOSC = INTIO67
  2. #pragma config WDTEN = OFF, LVP = OFF
  3. #pragma config MCLRE = ON, DEBUG = OFF
  4.  
  5. #include "p18f26k20.h"
  6. #include "delays.h"
  7. #include "stdlib.h"
  8.  
  9. #pragma udata
  10. //make array for tetris shapes
  11. unsigned char shapes[] = {0b11110000,0b01110100,0b01110001,0b01110010,0b00110110,0b01100011,0b00110011};
  12. //vars for various things
  13. unsigned char r; //stores random number
  14. unsigned char tstate; //timer activation status
  15. unsigned int tvalue; //time left in timer
  16. unsigned int tmax = 48000; //max amount of time in timer
  17. unsigned int i; //for loops
  18.  
  19. #pragma code
  20. void generatePiece();
  21. void main (void)
  22. {
  23.     TRISB = 0b00000000;
  24.     TRISA = 0b00000011;
  25.     ANSEL = 0;
  26. `   tstate = 0;
  27.     tvalue = tmax;
  28.     generatePiece();
  29.     while (1)
  30.     {
  31.         LATAbits.LATA2 = tstate; //show timer state on LED
  32.         Delay10TCYx(1);
  33.         tvalue--;
  34.         if(tvalue == 0) //if timer is done
  35.         {
  36.             tvalue = tmax; //reset timer
  37.             if(tstate == 1) {generatePiece();} //display new piece
  38.         }
  39.         if(PORTAbits.RA0 == 1) //if "new piece" button is pressed
  40.         {
  41.             generatePiece(); //display new piece
  42.             tvalue = tmax; //reset timer
  43.             while(PORTAbits.RA0 == 1); //wait for button to be released
  44.         }
  45.         if(PORTAbits.RA1 == 1) //if "toggle timer" button is pressed
  46.         {
  47.             if(tstate == 1) {tstate = 0;} //toggle timer state
  48.             else{tstate = 1;}
  49.             tvalue = tmax; //reset timer
  50.             while(PORTAbits.RA1 == 1); //wait for button to be released
  51.         }
  52.     }
  53. }
  54.  
  55. void generatePiece()
  56. {
  57.     r = rand() % 7; //generate random number
  58.     for(i = 1; i <= 2; i++) //blink display
  59.     {
  60.         LATB = 0; //blank display
  61.         Delay1KTCYx(35);
  62.         LATB = shapes[r]; //display shape on LEDs
  63.         Delay1KTCYx(35);
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement