You know, I suppose that this is not a general 'C' programming site, and also that PellesC doesn't helps with PIC controllers.
Anyway and just for this time I wanna help you.
#include <p18f4620.h>
#pragma config OSC = HS //Are you using crystal or ceramic resonator for oscillator?
#pragma config WDT = OFF
#pragma config LVP = OFF
#define btn_on PORTBbits.RB4
#define btn_off PORTBbits.RB5
#define led PORTAbits.RA0
void press(void);
void on(void);
void off(void);
void Delay(void);
void main(void)
{
TRISA = 0; //set Port A(LED) as output
PORTAbits.RA0 = 0; //reset LED
Rpt:
if (btn_on || btn_off) //wait for btn press
{
if (btn_on == 1) //btn on pressed - NOTE: comparation operator is double equal!!!!!!!
{
Delay(); //This is the real trick, Debounce the input!!
if (!btn_on) //btn on still pressed?
goto Rpt; //No
on();
}
if (btn_off == 1) //btn off pressed
{
Delay(); //This is the real trick, Debounce the input!!
if (!btn_off) //btn off still pressed?
goto Rpt; //No
off();
}
}
goto Rpt;
}
void on(void)
{
Rpt_on:
while(btn_on); //wait for btn(RB4) released - NOTE:you have to stay here while buttorn is pressed!
Delay(); //debounce
if (btn_on) //btn on still released?
goto Rpt_on; //No
PORTAbits.RA0 = 0x0F; //on LED
}
void off(void)
{
Rpt_off:
while(btn_off); //wait for btn(RB5) released - See before!
Delay(); //debounce
if (btn_off) //btn off still released?
goto Rpt_off; //No
PORTAbits.RA0 = 0x00; //off LED
}
void Delay(void)
{
int i;
for(i=0; i<2048; i++);
}