DEFINE OSC 4
start:
'set loop vars
h var byte
h = 0
i var byte
i = 0
j VAR BYTE
j = 0
'light vars
k VAR BYTE
k = 0
l VAR BYTE
l = 0
m VAR BYTE
m = 0
n VAR BYTE
n = 0
o VAR BYTE
o = 0
p VAR BYTE
p = 0
q VAR BYTE
q = 0
r VAR BYTE
r = 0
'end light vars
s VAR BYTE
s = 0
num var byte
num = 8
dir var byte
state var byte
stateArray var word [3]
'create alias for pwm pins
lightZero var PORTB.7
lightOne var PORTB.2
lightTwo var PORTB.1
lightThree var PORTB.3
lightFour var PORTB.4
lightFive var PORTB.5
lightSix var PORTB.0
lightSeven var PORTB.6
'build array of states
for i = 0 to 13 step 1
stateArray[i] = i
next i
main:
for h = 0 to 13 step 1
state = stateArray[h]
select case state
case 0
for i = 0 to 255 step 21'stepsArray[j]
gosub subKup
next i
case 1
for i = 0 to 255 step 13'stepsArray[j]
gosub subLup
next i
case 2
for i = 0 to 255 step 8'stepsArray[j]
gosub subMup
next i
case 3
for i = 0 to 255 step 5'stepsArray[j]
gosub subNup
next i
case 4
for i = 0 to 255 step 3'stepsArray[j]
gosub subOup
next i
case 5
for i = 0 to 255 step 2'stepsArray[j]
gosub subPup
next i
case 6
for i = 0 to 255 step 1'stepsArray[j]
gosub subQup
next i
case 7
for i = 0 to 255 step 1'stepsArray[j]
gosub subRup
next i
case 8
for i = 0 to 255 step 1'stepsArray[j]
gosub subQup
next i
case 9
for i = 0 to 255 step 2'stepsArray[j]
gosub subPup
next i
case 10
for i = 0 to 255 step 3'stepsArray[j]
gosub subOup
next i
case 11
for i = 0 to 255 step 5'stepsArray[j]
gosub subNup
next i
case 12
for i = 0 to 255 step 8'stepsArray[j]
gosub subMup
next i
case 13
for i = 0 to 255 step 13'stepsArray[j]
gosub subLup
next i
end select
next h
goto main
subKup:
select case k
case is >= 250
k = 245
case is <=250
k=k+21'stepsArray[j]
end select
select case l
case is >= 9
l=l-21'stepsArray[j]
case is <=8
l = 2
end select
PWM lightZero,k,1'cycleArray[n]
PWM lightOne,l,1'cycleArray[n]
return
subLup:
select case k
case is >= 14
k=k-13'stepsArray[j]
case is <=13
k = 2
end select
select case l
case is >= 250
l = 245
case is <=250
l=l+13'tepsArray[j]
end select
select case m
case is >= 14
m=m-13'stepsArray[j]
case is <=13
m = 2
end select
PWM lightZero,k,1'cycleArray[n]
PWM lightOne,l,1'cycleArray[n]
PWM lightTwo,m,1'cycleArray[n]
return
subMup:
select case l
case is >= 11
l=l-8'stepsArray[j]
case is <=10
l = 2
end select
select case m
case is >= 250
m = 245
case is <=250
m=m+8'stepsArray[j]
end select
select case n
case is >= 11
n=n-8'stepsArray[j]
case is <=10
n = 2
end select
PWM lightOne,l,1'cycleArray[n]
PWM lightTwo,m,1'cycleArray[n]
PWM lightThree,n,1'cycleArray[n]
return
subNup:
select case m
case is >= 6
m=m-5'stepsArray[j]
case is <=5
m = 2
end select
select case n
case is >= 250
n = 245
case is <=250
n=n+5'stepsArray[j]
end select
select case o
case is >= 6
o=o-5'stepsArray[j]
case is <=5
o = o
end select
PWM lightTwo,m,1'cycleArray[n]
PWM lightThree,n,1'cycleArray[n]
PWM lightFour,o,1'cycleArray[n]
return
subOup:
select case n
case is >= 6
n=n-3'stepsArray[j]
case is <=5
n = 2
end select
select case o
case is >= 250
o = 245
case is <=250
o=o+3'stepsArray[j]
end select
select case p
case is >= 6
p=p-3'stepsArray[j]
case is <=5
p = 2
end select
PWM lightThree,n,1'cycleArray[n]
PWM lightFour,o,1'cycleArray[n]
PWM lightFive,p,1'cycleArray[n]
return
subPup:
select case o
case is >= 6
o=o-2'stepsArray[j]
case is <=5
o = o
end select
select case p
case is >= 250
p = 247
case is <=250
p=p+2'stepsArray[j]
end select
select case q
case is >= 6
q=q-2'stepsArray[j]
case is <=5
q = 2
end select
PWM lightFour,o,1'cycleArray[n]
PWM lightFive,p,1'cycleArray[n]
PWM lightsix,q,1'cycleArray[n]
return
subQup:
select case p
case is >= 6
p=p-1'stepsArray[j]
case is <=5
p = 2
end select
select case q
case is >= 250
q = 249
case is <=250
q=q+1'stepsArray[j]
end select
select case r
case is >= 6
r=r-1'stepsArray[j]
case is <=5
r = 2
end select
PWM lightFive,p,1'cycleArray[n]
PWM lightsix,q,1'cycleArray[n]
PWM lightSeven,r,1'cycleArray[n]
return
subRup:
select case q
case is >= 6
q=q-1'stepsArray[j]
case is <=5
q = 2
end select
select case r
case is >= 250
r = 249
case is <=250
r=r+1'stepsArray[j]
end select
PWM lightsix,q,1'cycleArray[n]
PWM lightSeven,r,1'cycleArray[n]
return