944,103 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 1632
  • C RSS
Jun 18th, 2007
0

how to detect push buttons

Expand Post »
Hi..
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
    
             while(btn_on != btn_off)        //wait for btn press
    
    if (btn_on = 1)  //btn on pressed
    on();
 
    if (btn_off = 1)    //btn off pressed
    off();
}
 
    void on(void)
    {
              while(!btn_on);        //wait for btn(RB4) released
              PORTAbits.RA0 = 0x0F;  //on LED
    }
    
    void off(void)
    {
             while(!btn_off);         //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.
Last edited by Narue; Jun 18th, 2007 at 11:13 am.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
laugh is offline Offline
2 posts
since Jun 2007
Jun 18th, 2007
0

Re: how to detect push buttons

>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
Ditto.
Last edited by Narue; Jun 18th, 2007 at 11:14 am.
Administrator
Reputation Points: 6442
Solved Threads: 1393
Bad Cop
Narue is offline Offline
11,807 posts
since Sep 2004
Jun 18th, 2007
0

Re: how to detect push buttons

  1. void main(void)
Should be
  1. int main( void )

Here's some reading about it.
Aia
Reputation Points: 2224
Solved Threads: 218
Nearly a Posting Maven
Aia is offline Offline
2,304 posts
since Dec 2006
Jun 18th, 2007
0

Re: how to detect push buttons

> 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.
http://c-faq.com/ansi/voidmain.html

There's unlikely to be anything in the environment waiting for the result.
Team Colleague
Reputation Points: 5862
Solved Threads: 950
Posting Sage
Salem is offline Offline
7,164 posts
since Dec 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: diference between breadth fisrtsearct and depth first search
Next Thread in C Forum Timeline: detecting pushbutton





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC