I'm new in programming microcontroller in c. And I was given an assignment to write a simple program to turn 'ON' and "OFF' the LED by pressing push buttons. The microcontroller i'm using is PIC18F4620. And i'll need 1 LED and 2 push buttons to program this. I have already tried to write the program but it doesnt work. Here is my program:

#include <p18f4620.h>
#pragma config OSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#define btn_on    PORTBbits.RB4
#define btn_off  PORTBbits.RB5
#define led        PORTAbits.RA0
void on(void);
void off(void);
void main(void)
             TRISA = 0;                  //set Port A(LED) as output
             PORTAbits.RA0 = 0;  //reset LED
             [U]while(btn_on != btn_off)[/U]        //wait for btn press
    if (btn_on = 1)  //btn on pressed
    if (btn_off = 1)    //btn off pressed
    void on(void)
              [U]while(!btn_on);[/U]        //wait for btn(RB4) released
              PORTAbits.RA0 = 0x0F;  //on LED
    void off(void)
             [U]while(!btn_off);[/U]         //wait for btn(RB5) released
              PORTAbits.RA0 = 0x00;  //off LED

the underline statement is the one i not sure whether is correct or not. I have being working on this for a week. But still cant get the program run correctly. Hope to get some guide. Thank.

10 Years
Discussion Span
Last Post by Salem

>while(btn_on != btn_off) //wait for btn press
I get this tingly sensation that you should be using braces for this loop. That is, of course, if you want both conditional statements to be a part of the loop. If you only care about the first conditional, you're okay.

>if (btn_on = 1) //btn on pressed
Are you really sure you want to assign 1 to btn_on here? This is usually a bug where people mean to use == for comparison.

>if (btn_off = 1) //btn off pressed


> void main(void)
Actually, it may be just fine as it is.

> The microcontroller i'm using is PIC18F4620.
This qualifies as a "freestanding" implementation. So long as main, or whatever the documented entry point is, is declared in a manner consistent with that implementation, then it should be good.

There's unlikely to be anything in the environment waiting for the result.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.