Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma config FOSC = INTIO67
- #pragma config WDTEN = OFF, LVP = OFF
- #pragma config MCLRE = ON, DEBUG = OFF
- #include "p18f26k20.h"
- #include "delays.h"
- #include "stdlib.h"
- #pragma udata
- //make array for tetris shapes
- unsigned char shapes[] = {0b11110000,0b01110100,0b01110001,0b01110010,0b00110110,0b01100011,0b00110011};
- //vars for various things
- unsigned char r; //stores random number
- unsigned char tstate; //timer activation status
- unsigned int tvalue; //time left in timer
- unsigned int tmax = 48000; //max amount of time in timer
- unsigned int i; //for loops
- #pragma code
- void generatePiece();
- void main (void)
- {
- TRISB = 0b00000000;
- TRISA = 0b00000011;
- ANSEL = 0;
- ` tstate = 0;
- tvalue = tmax;
- generatePiece();
- while (1)
- {
- LATAbits.LATA2 = tstate; //show timer state on LED
- Delay10TCYx(1);
- tvalue--;
- if(tvalue == 0) //if timer is done
- {
- tvalue = tmax; //reset timer
- if(tstate == 1) {generatePiece();} //display new piece
- }
- if(PORTAbits.RA0 == 1) //if "new piece" button is pressed
- {
- generatePiece(); //display new piece
- tvalue = tmax; //reset timer
- while(PORTAbits.RA0 == 1); //wait for button to be released
- }
- if(PORTAbits.RA1 == 1) //if "toggle timer" button is pressed
- {
- if(tstate == 1) {tstate = 0;} //toggle timer state
- else{tstate = 1;}
- tvalue = tmax; //reset timer
- while(PORTAbits.RA1 == 1); //wait for button to be released
- }
- }
- }
- void generatePiece()
- {
- r = rand() % 7; //generate random number
- for(i = 1; i <= 2; i++) //blink display
- {
- LATB = 0; //blank display
- Delay1KTCYx(35);
- LATB = shapes[r]; //display shape on LEDs
- Delay1KTCYx(35);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement