Psuedocode Main Module Game Module Game Interface

Code for C32 Microprocessor

Main Module - Runs Events and Services Framework

#include "stdio.h"
#include "ME218_C32.h"
#include "timers12.h"
#include "PWMS12.H"
#include "ADS12.H"
#include "GameControl.h"

static void InitializePortM(void);

static void InitializePortAD(void);
static void InitializePWM(void);

static void InitializePortT(void);
static void InitializeTimer(void);


void main(void){
    char eventCode;
    //Initialize Stuff

    InitializePortM();
    InitializePortAD();
    InitializePWM();
    InitializePortT();
    InitializeTimer();  
    printf("\n\rSuccessfully Initialized...");

//    printf("\n\rDDRM=%i  PTM=%i",DDRM,PTM); 
    while(1){
		// RUN THE EVENT/SERVICES FRAMEWORK
        eventCode = CheckGameEvents();   
        HandleGameEvents(eventCode);
    }
}

static void InitializePortM(){    
    // DIGITAL INPUTS
	// Set  bits to input
    DDRM &= BIT0LO; //Set M0 to input - COIN

    DDRM &= BIT1LO; //Set M1 to input - LASER BREAK
    DDRM &= BIT2LO; //Set M2 to input - TARGET

    DDRM &= BIT3LO; //Set M3 to input - DIFFICULTY
 
    // DIGITAL OUTPUTS
	// Set bits to output, define initial values
    DDRM |= BIT4HI; //Set M4 to output - LASER FIRE

    PTM &= BIT4LO;  //Set Laser to OFF to begin
    DDRM |= BIT5HI; //Set M5 to output - Vibrating Motor

    PTM &= BIT5LO;  //Set LED to OFF to begin     
}


static void InitializePortAD()
{

    //  Set Bits 0-2 to Analog Inputs
    if (ADS12_Init("OOOOOAAA") != ADS12_OK)
    {
        printf("\n\rERROR initializing port AD");    
    }
}

static void InitializePWM()
{
	// Initialize all three PWM ports: T0, T1, T2
    PWMS12_Init();
    if (PWMS12_SetPeriod(PWMS12_2000US,PWMS12_GRP0) != PWMS12_OK)
    {

        printf("\n\rERROR setting PWM group 0 period");
    }
    if (PWMS12_SetPeriod(PWMS12_2000US,PWMS12_GRP1) != PWMS12_OK)
    {

        printf("\n\rERROR setting PWM group 1 period");
    }    
}

static void InitializePortT()
{
	// Set bits to output, T3-T7
    DDRT |= BIT3HI; //Set T3 to output - SOLENOID #1

    DDRT |= BIT4HI; //Set T4 to output - SOLENOID #2
    DDRT |= BIT5HI; //Set T5 to output - COUNTDOWN CLOCK

    DDRT |= BIT6HI; //Set T6 to output - COUNTDOWN RESET
    DDRT |= BIT7HI; //Set T7 to output
    
	// Set initial values

    PTT &= BIT3LO; //Set Solenoids to LOW to begin with
    PTT &= BIT4LO;

    PTT &= BIT5LO; //Set the clock to some initial value
    PTT &= BIT6LO;

    PTT &= BIT7LO;
}

static void InitializeTimer()
{
	// Initialize the timer

    TMRS12_Init(TMRS12_RATE_1MS);
}