how to detect push buttons

Please support our C advertiser: Programming Forums - DaniWeb Sister Site
Reply

Join Date: Jun 2007
Posts: 2
Reputation: laugh is an unknown quantity at this point 
Solved Threads: 0
laugh laugh is offline Offline
Newbie Poster

how to detect push buttons

 
0
  #1
Jun 18th, 2007
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.
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 7,730
Reputation: Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute 
Solved Threads: 737
Team Colleague
Narue's Avatar
Narue Narue is offline Offline
Code Goddess

Re: how to detect push buttons

 
0
  #2
Jun 18th, 2007
>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.
I'm here to prove you wrong.
Reply With Quote Quick reply to this message  
Join Date: Dec 2006
Posts: 2,033
Reputation: Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of Aia has much to be proud of 
Solved Threads: 177
Aia's Avatar
Aia Aia is offline Offline
Postaholic

Re: how to detect push buttons

 
0
  #3
Jun 18th, 2007
  1. void main(void)
Should be
  1. int main( void )

Here's some reading about it.
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 5,850
Reputation: Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute 
Solved Threads: 749
Team Colleague
Salem's Avatar
Salem Salem is offline Offline
Void main'ers are DOOMed

Re: how to detect push buttons

 
0
  #4
Jun 18th, 2007
> 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.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the C Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC