well several cups of coffee later I have something that works.. to a fashion. The only thing with the code at the moment is that it seems to randomly revert back to the default pattern 1, so something is causing SWcount to loose / reset. I'm assuming that the audio filter is causing interfearance, even though the PIN on the PIC is tied low via a 10K resistor.
Anyway, here is the main section of the code:
Code:;************* main program **************** counts = 0 Main: Pot PORTA.1,scale,D ;used to read value from 10k pot if sw1=0 then swcount=swcount+1 ;check to see if up button pressed, if so add 1 to SWcount if sw2=0 then goto music ;check to see if down button pressed and if so go to music pause 60 ;debounce delay If swcount>7 then swcount=1 ;error trap for exceeding max patterns gosub sel1 ;go to subroutine to select pattern FOR counts = 1 TO steps ;advance to through the entries gosub sel2 ;go to subroutine to advance through sequence PAUSE D ;pause period set by varible D NEXT counts ;advance through loop to next position goto main: ;go back to the main program and run again music: Pot PORTA.1,scale,D ;used to read value from 10k pot if sw1=0 then swcount=swcount+1 ;cycles through the patterns by adding 1 to SWcount if sw2=0 then goto main ;check to see if down button pressed and if so go to main pause 60 ;debounce delay If swcount>7 then swcount=1 ;error trap for exceeding max patterns gosub sel1 If mus = 1 then counts = counts + 1 ;if bass or beat present move to the next step in pattern gosub sel2 ;go to subroutine to display pattern in current step PAUSE D ;pause period set by varible D If counts = steps then counts = 0 ;if counts then reset counts to 1 goto music: ;go back to the main program and run again ;************* Subroutines ***************** Sel1: if swcount = 1 then read Patt1, steps if swcount = 2 then read Patt2, steps If swcount = 3 then read Patt3, steps if swcount = 4 then read Patt4, steps if swcount = 5 then read Patt5, steps If swcount = 6 then read Patt6, steps If swcount = 7 then Read patt7, steps return Sel2: if swcount = 1 then READ (Patt1+counts), PORTB if swcount = 2 then READ (Patt2+counts), PORTB if swcount = 3 then READ (Patt3+counts), PORTB if swcount = 4 then READ (Patt4+counts), PORTB if swcount = 5 then READ (Patt5+counts), PORTB if swcount = 6 then READ (Patt6+counts), PORTB if swcount = 7 then READ (Patt7+counts), PORTB RETURN




Bookmarks