The code below blinks an LED on and off at two different rates. It switches between the two rates when a button is pressed. The button is connected to GPIO.1 of a PIC12F609.
The code works fine, or I should say, it works exactly as I expect it to. The problem is that I would like the program to jump to the "buttonpress" subroutine as soon as the as the button makes GPIO.1 go low. As it is now, it needs to wait for the LED to finish its blink loop before it will recognize the button.
Is an ON INTERRUPT statement what I want to use here? I've tried using it, but I don't think I'm setting it up correctly.
Code:length var word LED var GPIO.0 pushbutton var GPIO.1 ANSEL = 0 ' Set all digital CMCON0 = 0 ' Analog comparators off TRISIO = %00000010 length = 100 main: do LED = 1 pause length LED = 0 pause length if pushbutton = 0 then goto buttonpress endif loop goto main end buttonpress: pause 10 'debounce switch press if length = 100 then length = 500 elseif length = 500 then length = 100 endif do while pushbutton = 0 'wait for switch to be released pause 5 loop pause 10 'debounce switch release goto main




Bookmarks