Check the data sheet and see what that pin can do. If it has ADC then with some imagination you could do an ADC interrupt.
But just change things around to use an interrupt pin. That is what they are for.
Check the data sheet and see what that pin can do. If it has ADC then with some imagination you could do an ADC interrupt.
But just change things around to use an interrupt pin. That is what they are for.
Dave
Always wear safety glasses while programming.
Hi,
My crystal ball says ...
" Pickit2 with a ready made demo card means a 16F690 " ...
RA.3 shows an Interrupt on change feature ...
soooo ... just use it !!!
Alain
PS: try to give SOME MORE INFOS if you have further questions ...
************************************************** ***********************
Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
************************************************** ***********************
IF there is the word "Problem" in your question ...
certainly the answer is " RTFM " or " RTFDataSheet " !!!
*****************************************
An interrupt is overkill for this, and not the typical way to handle the problem at all.
I'd use a counter to have your button checked every 10ms, and LED routine run every 500ms like this.
and you get to save the interrupt for when it's actually needed.
Code:x var byte direction var bit timerbyte var byte TRISA = 1 TRISC = 0 x = 1 loop: PORTC = x pause 10 timerbyte = timerbyte + 1 IF PORTA.3 = 0 then IF direction = 0 THEN direction = 1 ELSE direction = 0 ENDIF ' direction ENDIF ' button IF timerbyte = 50 THEN timerbyte = 0 ' 500ms has passed if timerbyte = 0 IF timerbyte = 0 THEN IF direction = 0 THEN IF x = 8 THEN x = 1 x = x << 1 ELSE IF x = 1 THEN x = 8 x = x >> 1 ENDIF ' direction ENDIF ' timerbyte goto loop
Last edited by Art; - 30th December 2009 at 23:24.
Overkill????
Please explain.
Dave
Always wear safety glasses while programming.
Thought I already did.
It's using hardware to do what should and can be done in software.
Like wiring a circuit to turn the pic's power off to turn an LED off.
and developing bad habit at the same time, and not learning anything.
Well after you made an edit to your post you have some explanation.
Looping back through the code every so often to check on a button smells like some sort of pasta to me.
Maybe the OP should learn to use the hardware. Then when the code grow to more than a few lines......
Wait a minute. Your joking, right?
Using an interrupt is forming bad habits.
Now I get it.
NOT!
Dave
Always wear safety glasses while programming.
When it's not needed, I think it is.
What if the platform didn't support interrupts?
I think using an interrupt when it isn't needed is forming a bad habit.
The loop is happening anyway, and I have one less label in my code.
It's less spaghetti than the original which doesn't run in one single loop.
An interrupt would add more spaghetti in the generated asm to goto 0x04.
This is a simple program, but as it grew, you might need an interrupt for something else.
EDIT; ps I edited to edit the program, but haven't actually run it.
if it has any issue, it still offers a solution.
Last edited by Art; - 31st December 2009 at 00:25.
I would say you're definitely doing good for someone just getting started.I've been learning this for less than a week
It's nice here since you find so many various ways of doing something, which really
helps one to think outside-the-box. Embedded programming is just creative problem
solving, and you'll find a lot of different creative approaches around here for
sure.
Which one is best for your application is totally up to you.
Thanks Bruce, you just pointed out the reason why I love programming and why I love programming a micro controller is because you can see the results in real life, not only digitally.
Thanks, really
Bookmarks