
/* 
 * File:   Test_Code.c
 * Author: Antimatter
 *
 * Created on February 26, 2021, 6:26 PM
 */
#pragma config FMIIEN = ON              // Ethernet RMII/MII Enable (MII Enabled)
#pragma config FETHIO = ON              // Ethernet I/O Pin Select (Default Ethernet I/O)
#pragma config FUSBIDIO = ON            // USB USID Selection (Controlled by the USB Module)
#pragma config FVBUSONIO = ON           // USB VBUS ON Selection (Controlled by USB Module)
#pragma config FNOSC = PRIPLL           // Oscillator Selection Bits 
#pragma config POSCMOD = EC             // Primary Oscillator Configuration
#pragma config FPLLIDIV = DIV_6         // PLL Input Divider
#pragma config FSOSCEN = OFF            // Secondary Oscillator Enable (Disabled)
#pragma config FPLLMUL = MUL_20         // PLL Multiplier (24x Multiplier)
#pragma config FPLLODIV = DIV_1         // System PLL Output Clock Divider (PLL Divide by 256)
#pragma config FPBDIV = DIV_1           // Peripheral Clock Divisor 
#pragma config UPLLIDIV = DIV_6         // USB PLL Input Divider (6x Divider)
#pragma config UPLLEN = ON              // USB PLL Enable (Enabled)
#pragma config IESO = ON                // Internal/External Switch Over (Enabled)
#pragma config OSCIOFNC = ON            // CLKO Output Signal Active on the OSCO Pin 
#pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
#pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled (SWDTEN Bit Controls))
#pragma config FCKSM = CSECME           // Clock Switching and Monitor Selection (Clock Switch Enable, FSCM Enabled)


#include <xc.h>
#include <plib.h>
/*
 * 
 */
int main()
{
    //System
    SYSTEMConfigPerformance(80000000);
    
    //USB
    OSCCONbits.UFRCEN = 0;              //USB clock = POSC
    
    TRISCbits.TRISC1 = 0;
    TRISCbits.TRISC2 = 0;
    TRISCbits.TRISC3 = 0;
    TRISCbits.TRISC4 = 0;
    
    //Display Data Bus Test    
    TRISEbits.TRISE0 = 0;               //D0
    PORTEbits.RE0 = 0;                  
    TRISEbits.TRISE1 = 0;               //D1
    PORTEbits.RE1 = 0;
    TRISEbits.TRISE2 = 0;               //D2
    PORTEbits.RE2 = 0;
    TRISEbits.TRISE3 = 0;               //D3
    PORTEbits.RE3 = 0;
    TRISEbits.TRISE4 = 0;               //D4
    PORTEbits.RE4 = 0;
    TRISEbits.TRISE5 = 0;               //D5
    PORTEbits.RE5 = 0;
    TRISEbits.TRISE6 = 0;               //D6
    PORTEbits.RE6 = 0;
    TRISEbits.TRISE7 = 0;               //D7
    PORTEbits.RE7 = 0;
    TRISGbits.TRISG0 = 0;               //D8
    PORTGbits.RG0 = 0;
    TRISGbits.TRISG1 = 0;               //D9
    PORTGbits.RG1 = 0;
    TRISFbits.TRISF1 = 0;               //D10
    PORTFbits.RF1 = 0;
    TRISFbits.TRISF0 = 0;               //D11
    PORTFbits.RF0 = 0;
    TRISDbits.TRISD12 = 0;              //D12
    PORTDbits.RD12 = 0;
    TRISDbits.TRISD13 = 0;              //D13
    PORTDbits.RD13 = 0;
    TRISDbits.TRISD6 = 0;               //D14
    PORTDbits.RD6 = 0;
    TRISDbits.TRISD7 = 0;               //D15
    PORTDbits.RD7 = 0;
    TRISDbits.TRISD5 = 0;               //RD
    PORTDbits.RD5 = 0;
    TRISDbits.TRISD4 = 0;               //WR
    PORTDbits.RD4 = 0;
    TRISDbits.TRISD10 = 0;              //D/C
    PORTDbits.RD10 = 0;
    TRISDbits.TRISD11 = 0;              //CS
    PORTDbits.RD11 = 1;
    
    
    TRISGbits.TRISG15 = 0;

    PORTCbits.RC1 = OSCCONbits.COSC0;
    PORTCbits.RC2 = OSCCONbits.COSC1;
    PORTCbits.RC3 = OSCCONbits.COSC2;
    
again: 
    PORTGbits.RG15 = 0;
    PORTGbits.RG15 = 1;
    goto again;

    return;
}
