I believe it wasn't working properly due to the Interrupt settings which i have now disabled on PortB.0.
I have it working the way i want apart from one thing.
It recognises the push switch, displays the appropriate PWM and then if it reaches 9 goes to 1 again. Also, if no input for 5 seconds it starts the flashing sequence (just to signal the end of the 5 seconds).
How does one get the LEDs to stay in their PWM routine until the switch is pressed again, without using Interrupts. When the swicth is pushed it goes to the appropriate PWM routine but after the PWM cycle, the LED goes off.
Here is the code.
Many thanks,Code:MyNumber VAR Byte ' Variable 1-9 MyTimeOut VAR Byte ' 5 second Timeout (100 loops of 50mS) Red VAR PORTB.1 ' All LEDs Green VAR PORTB.2 ' Connected between Blue VAR PORTB.3 ' RC pins and ground Orange VAR PORTB.4 DISABLE INTERRUPT MyButton VAR PORTB.0 ' Pin goes LOW when Button pressed MyNumber=1 ' Power-On with this starting value MyTimeOut=0 ' TimeOut starts from zero at Power-Up While MyTimeOut<100 If MyButton=0 then gosub mynumberpwm MyNumber=MyNumber+1 If MyNumber>9 then MyNumber=1 MyTimeOut=0 Pause 50 ' This Pause DEBOUNCES Button - do not remove it While MyButton=0:Wend ' Wait here if Button held down else MyTimeOut=MyTimeOut+1 Pause 50 ' This Pause is the Timeout Pause endif Wend main: high Orange pause 500 low Orange pause 500 goto main MynumberPWM: If Mynumber = 1 then PWM Red,1,255 If Mynumber = 2 then PWM Red,25,255 If Mynumber = 3 then PWM Red,255,255 If Mynumber = 4 then PWM green,1,255 If Mynumber = 5 then PWM green,25,255 If Mynumber = 6 then PWM green,255,255 If Mynumber = 7 then PWM BLUE,1,255 If Mynumber = 8 then PWM BLUE,25,255 If Mynumber = 9 then PWM BLUE,255,255 Return
Steve




Bookmarks