I'm pretty sure I've gone over this problem many times now and just can't figure out what's wrong. I can't get a simple input to register a button press.
I've got the button running straight from Vcc to the input with a 10k pull down on the output. I've put a scope probe right on the metal of the input pin itself and it's showing a very clean 5v on that pin when pressing the button so I know the circuit is good. The rest of the funtions (flash LED's) works fine also so I know the PIC is running.
I want the program to do something different when I startup with a button already pressed. Here's what I'm doing to test and no matter what I do, it's just not working.
The device is 16F684
Code:define OSC 20 'Set PBP Osc clock to 20Mhz CMCON0 = 0 'Turn off comparators, force set to 0 (off) ANSEL = 0 'Turn off analog input for ports, set digital I/O TRISA.0 = 1 'RA0 as Input TRISA.1 = 1 'RA1 as Input TRISA.2 = 1 'RA2 as Input TRISC.0 = 1 'RC0 as Input TRISC.1 = 0 'RC1 as Output TRISC.2 = 0 'RC2 as Output TRISC.3 = 0 'RC3 as Output TRISC.4 = 0 'RC4 as Output TRISC.5 = 0 'RC5 as Output bpower VAR PORTA.0 'Power button RA0 boption VAR PORTA.1 'Option button RA1 Startup: PAUSE 1000 IF PORTA.1=0 THEN HIGH powerled ENDIF IF PORTA.1=1 THEN HIGH linkled ENDIF
No matter what I do, the powerled comes on, but Can't ever make the linkled come on (again it does work, later in the code I have it strobe between them and that works fine).
I've tried the above code with PORTA.1, with extra spaces between the = sign, using "bpower" and "boption" instead of the actual port names.
I've got the ANSEL set to 0 so they should be in digital mode. I've gone over all the other registers in the data sheet (noted in the I/O port section) and all of them seem to be where they should be.
Very frustrating. Please help. It's always something dumb that cuases the biggest troubles.
Bookmarks