You are on page 1of 7

#include <plib.

h> ///
#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1
#pragma config POSCMOD = OFF, FNOSC = FRCPLL, FPBDIV = DIV_1, ICESEL = ICS_PGx2
#pragma config FWDTEN = ON, WDTPS = PS262144// 4minute
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable
//#pragma config FWDTEN = ON, WDTPS = PS16384// 16sec.
//#pragma config FWDTEN = ON, WDTPS = PS32768 //32sec.
//#pragma config FWDTEN = ON, WDTPS = PS131072 // 2 minute
//#pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock M
onitor
#define SYS_FREQ (80000000)
#define GetSystemClock() SYS_FREQ
#define GetPeripheralClock() (GetSystemClock()/(1 << OSCCONbits.PBDIV
))
#define GetInstructionClock() (GetSystemClock())
#define DESIRED_BAUDRATE (19200) //The desired BaudRate
#define PB_DIV 1
#define PRESCALE 256
#define TOGGLES_PER_SEC 10 // la 100ms
#define T1_TICK (SYS_FREQ/PB_DIV/PRESCALE/TOGGLES_PER_SEC)
#define const_wait 2
#define const_uart 4
#define LCD_RS LATEbits.LATE4
#define LCD_RW LATEbits.LATE6
#define LCD_EN LATEbits.LATE5
#define LCD_DATA LATE
#define LCD_STROBE() ((LCD_EN = 1), (LCD_EN=0))
#define CONFIG1 (CN_ON | CN_IDLE_CON)
#define PINS1 (CN0_ENABLE | CN1_ENABLE )
#define PULLUPS1 (CN0_PULLUP_ENABLE | CN0_PULLUP_ENABLE)
#define INTERRUPT1 (CHANGE_INT_ON | CHANGE_INT_PRI_2)
#define NVM_PROGRAM_PAGE 0xbd070000
#define adr_CMD NVM_PROGRAM_PAGE
void init_uC (void);
unsigned long tim1;
int main(void)
{
SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
init_uC();
WDTCONSET = 0x8000; // Enable WDT
ClearWDT(); // service the WDT
unsigned int i=0;
while(1)
{
while(i<6)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<5); // wait here
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<5);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<5);
mPORTDToggleBits( BIT_11 ); //
tim1=0; while(tim1<5);
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<5);
i++;
}
for(i=0;i<=7;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<4); // wait here
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<4);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<4);
mPORTDToggleBits( BIT_11 ); //
tim1=0; while(tim1<4);
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<4);
i++;
}
for(i=0;i<=8;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<3); // wait here
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<3);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<3);
mPORTDToggleBits( BIT_11 ); //
tim1=0; while(tim1<3);
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<3);
i++;
}
for(i=0;i<=9;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<2); // wait here
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<2);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<2);
mPORTDToggleBits( BIT_11 ); //
tim1=0; while(tim1<2);
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<2);
i++;
}
for(i=0;i<=10;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<1); // wait here
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<1);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<1);
mPORTDToggleBits( BIT_11 ); //
tim1=0; while(tim1<1);
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<1);
i++;
}
for(i=0;i<=10;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<8);
i++;
}
for(i=0;i<=10;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<7);
i++;
}
for(i=0;i<=11;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //

mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<6);
i++;
}
for(i=0;i<=12;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<5);
i++;
}
for(i=0;i<=13;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<4);
i++;
}
for(i=0;i<=14;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<3);
i++;
}
for(i=0;i<=15;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //

mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<2);
i++;
}
for(i=0;i<=30;i++)
{
ClearWDT(); // service the WDT
mPORTCToggleBits( BIT_1 ); //
mPORTEToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_3 ); //
mPORTDToggleBits( BIT_11 ); //
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<1);
i++;
}
for(i=0;i<=10;i++)
{
ClearWDT();
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<5);// service the WDT
mPORTDToggleBits( BIT_11 );
tim1=0; while(tim1<5);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<5);//
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<5);
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<5); // wait here

}
for(i=0;i<=14;i++)
{
ClearWDT();
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<4);// service the WDT
mPORTDToggleBits( BIT_11 );
tim1=0; while(tim1<4);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<4);//
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<4);
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<4); // wait here
}
for(i=0;i<=15;i++)
{
ClearWDT();
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<3);// service the WDT
mPORTDToggleBits( BIT_11 );
tim1=0; while(tim1<3);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<3);//
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<3);
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<3); // wait here
}
for(i=0;i<=20;i++)
{
ClearWDT();
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<2);// service the WDT
mPORTDToggleBits( BIT_11 );
tim1=0; while(tim1<2);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<2);//
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<2);
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<2); // wait here
}
for(i=0;i<=20;i++)
{
ClearWDT();
mPORTFToggleBits( BIT_5 ); //
tim1=0; while(tim1<1);// service the WDT
mPORTDToggleBits( BIT_11 );
tim1=0; while(tim1<1);
mPORTDToggleBits( BIT_3 ); //
tim1=0; while(tim1<1);//
mPORTEToggleBits( BIT_3 ); //
tim1=0; while(tim1<1);
mPORTCToggleBits( BIT_1 ); //
tim1=0; while(tim1<1); // wait here

}
}//while
}//main

void __ISR(_TIMER_1_VECTOR, IPL1SOFT) Timer1Handler(void) // interrupt eve


ry 100ms
{
mT1ClearIntFlag();
tim1++;
}

void init_uC (void)


{
unsigned int temp;
mJTAGPortEnable(DEBUG_JTAGPORT_OFF);
mPORTEClearBits( BIT_3 | BIT_0);
mPORTESetPinsDigitalOut(BIT_3 | BIT_0 );
mPORTDClearBits( BIT_3 | BIT_11 );
mPORTDSetPinsDigitalOut(BIT_3 | BIT_11 );
mPORTFClearBits( BIT_5);
mPORTFSetPinsDigitalOut(BIT_5);
mPORTCClearBits( BIT_1 );
mPORTCSetPinsDigitalOut(BIT_1 );

OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_256, T1_TICK); // la 100ms


ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_1);
INTEnableSystemMultiVectoredInt();
// configure for multi-vectored mode
INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);
// enable interrupts
INTEnableInterrupts();
}

You might also like