Code:
'***************************************************************************
'* Name : Tattoosign.pbp *
'* Author : Antoine Bercovici *
'* Date : 08/08/2011 *
'* Version : 1.0 *
'***************************************************************************
ASM
__config _HS_OSC & _WDT_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CP_ON
ENDASM
DEFINE OSC 20
DEFINE LOADER_USED 1
clear
'*******************************************************
'Init for PIC16F648A
'*******************************************************
CMCON = %00000111 'Disable comparator module
TRISA = %00000000 'All PortA is output
TRISB = %00000001 'All PortB is output, PortB.0 is input
INTCON = %00010000 'Enable Interrupt on PortB.0
OPTION_REG.6 = 0 'Interrupt on falling edge 1->0 transition
'*******************************************************
'I/O port declaration
'*******************************************************
DATShift VAR PORTA.2
CLKShift VAR PortB.1
STRShift VAR PortB.3
PushButton VAR PortB.0
'*******************************************************
'Variable declaration
'*******************************************************
ShiftCounter VAR BYTE
PWMCounter VAR Byte
AnimationCounter VAR BYTE
AnimationSpeed VAR WORD
AnimationStyle VAR BYTE
AnimationNumber VAR BYTE
StoredAnimationSpeed VAR BYTE
SpeedCounter VAR WORD
ButtonCounter VAR BYTE
PhaseCounter VAR BYTE
Buffer VAR BYTE
DemoMode VAR BIT
DemoCounter VAR WORD
LEDPattern VAR BYTE[76]
Phase VAR BYTE[16]
RedSegment1 VAR LEDPattern[23]
RedSegment2 VAR LEDPattern[21]
RedSegment3 VAR LEDPattern[15]
RedSegment4 VAR LEDPattern[12]
RedSegment5 VAR LEDPattern[6]
RedSegment6 VAR LEDPattern[4]
RedSegment7 VAR LEDPattern[26]
RedSegment8 VAR LEDPattern[17]
RedSegment9 VAR LEDPattern[19]
RedSegment10 VAR LEDPattern[10]
RedSegment11 VAR LEDPattern[8]
RedSegment12 VAR LEDPattern[2]
RedSegment13 VAR LEDPattern[0]
RedSegment14 VAR LEDPattern[30]
RedSegment15 VAR LEDPattern[28]
RedSegment16 VAR LEDPattern[35]
RedSegment17 VAR LEDPattern[38]
RedSegment18 VAR LEDPattern[36]
RedSegment19 VAR LEDPattern[33]
RedSegment20 VAR LEDPattern[55]
RedSegment21 VAR LEDPattern[53]
RedSegment22 VAR LEDPattern[43]
RedSegment23 VAR LEDPattern[46]
RedSegment24 VAR LEDPattern[44]
RedSegment25 VAR LEDPattern[41]
RedSegment26 VAR LEDPattern[48]
RedSegment27 VAR LEDPattern[56]
RedSegment28 VAR LEDPattern[58]
RedSegment29 VAR LEDPattern[62]
RedSegment30 VAR LEDPattern[60]
RedSegment31 VAR LEDPattern[74]
RedSegment32 VAR LEDPattern[64]
RedSegment33 VAR LEDPattern[66]
RedSegment34 VAR LEDPattern[70]
RedSegment35 VAR LEDPattern[68]
GreenSegment1 VAR LEDPattern[24]
GreenSegment2 VAR LEDPattern[22]
GreenSegment3 VAR LEDPattern[20]
GreenSegment4 VAR LEDPattern[13]
GreenSegment5 VAR LEDPattern[7]
GreenSegment6 VAR LEDPattern[5]
GreenSegment7 VAR LEDPattern[27]
GreenSegment8 VAR LEDPattern[25]
GreenSegment9 VAR LEDPattern[18]
GreenSegment10 VAR LEDPattern[11]
GreenSegment11 VAR LEDPattern[9]
GreenSegment12 VAR LEDPattern[3]
GreenSegment13 VAR LEDPattern[1]
GreenSegment14 VAR LEDPattern[31]
GreenSegment15 VAR LEDPattern[29]
GreenSegment16 VAR LEDPattern[51]
GreenSegment17 VAR LEDPattern[39]
GreenSegment18 VAR LEDPattern[37]
GreenSegment19 VAR LEDPattern[32]
GreenSegment20 VAR LEDPattern[50]
GreenSegment21 VAR LEDPattern[54]
GreenSegment22 VAR LEDPattern[52]
GreenSegment23 VAR LEDPattern[47]
GreenSegment24 VAR LEDPattern[45]
GreenSegment25 VAR LEDPattern[40]
GreenSegment26 VAR LEDPattern[49]
GreenSegment27 VAR LEDPattern[72]
GreenSegment28 VAR LEDPattern[59]
GreenSegment29 VAR LEDPattern[63]
GreenSegment30 VAR LEDPattern[61]
GreenSegment31 VAR LEDPattern[75]
GreenSegment32 VAR LEDPattern[73]
GreenSegment33 VAR LEDPattern[67]
GreenSegment34 VAR LEDPattern[71]
GreenSegment35 VAR LEDPattern[69]
TattooSegment1 VAR LEDPattern[14]
TattooSegment2 VAR LEDPattern[16]
TattooSegment3 VAR LEDPattern[34]
TattooSegment4 VAR LEDPattern[42]
TattooSegment5 VAR LEDPattern[57]
TattooSegment6 VAR LEDPattern[65]
Phase1 VAR Phase[1]
Phase2 VAR Phase[2]
Phase3 VAR Phase[3]
Phase4 VAR Phase[4]
Phase5 VAR Phase[5]
Phase6 VAR Phase[6]
Phase7 VAR Phase[7]
Phase8 VAR Phase[8]
Phase9 VAR Phase[9]
Phase10 VAR Phase[10]
Phase11 VAR Phase[11]
Phase12 VAR Phase[12]
Phase13 VAR Phase[13]
Phase14 VAR Phase[14]
Phase15 VAR Phase[15]
Phase16 VAR Phase[16]
'*******************************************************
'Init the interrupt handling system
'*******************************************************
INCLUDE "DT_INTS-14.bas" 'Base Interrupt System
INCLUDE "ReEnterPBP.bas" 'Include if using PBP interrupts
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler INT_INT, _ButtonInterrupt, PBP, Yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
wsave VAR BYTE $70 SYSTEM 'alternate save location for W, for DT_INTS use
'*******************************************************
'Program start
'*******************************************************
ShiftCounter = 0
AnimationCounter = 0
SpeedCounter = 255
ButtonCounter = 0
DemoMode = 0
DemoCounter = 0
AnimationNumber = 51
READ 0, AnimationStyle
READ 1, StoredAnimationSpeed
IF PushButton = 0 THEN
DemoMode = 1
AnimationStyle = 0
StoredAnimationSpeed = 5
ENDIF
@ INT_ENABLE INT_INT ; enable Button interrupt
'*******************************************************
'Main program loop
'*******************************************************
MainLoop:
Gosub AnimationUpdate
GOSUB DisplayLoop
GOTO MainLoop
'*******************************************************
'Do one display loop
'*******************************************************
DisplayLoop:
FOR PWMCounter = 0 TO 8 'There are 9 PWM shades from 0 (all off) to 8 (all on)
FOR ShiftCounter = 79 TO 0 STEP - 1
IF LedPattern[ShiftCounter] > PWMCounter THEN
LOW DATShift
ELSE
HIGH DATShift
ENDIF
HIGH CLKShift
LOW CLKShift
Next ShiftCounter
HIGH STRShift
LOW STRShift
NEXT PWMCounter
RETURN
'*******************************************************
'Update one step for animation status
'*******************************************************
AnimationUpdate:
IF DemoMode = 1 THEN
DemoCounter = DemoCounter + 1
IF DemoCounter >= 1200 THEN
DemoCounter = 0
AnimationStyle = AnimationStyle + 1
IF AnimationStyle > AnimationNumber THEN AnimationStyle = 0
ENDIF
ENDIF
LOOKUP StoredAnimationSpeed, [6, 8, 10, 12, 14, 17, 21, 27, 33, 50, 80, 160, 0], AnimationSpeed
IF AnimationStyle > 31 THEN AnimationSpeed = AnimationSpeed * 2
IF SpeedCounter >= AnimationSpeed THEN
SpeedCounter = 0
IF AnimationSpeed > 0 THEN AnimationCounter = AnimationCounter + 1
IF AnimationCounter >= 16 THEN AnimationCounter = 0 'There are 16 steps for an animation loop
ENDIF
SpeedCounter = SpeedCounter + 1
IF AnimationStyle <= 27 THEN GOSUB MonoGradient
IF AnimationStyle >= 28 AND AnimationStyle <= 31 THEN GOSUB PolyGradient
IF AnimationStyle >= 32 AND AnimationStyle <= 37 THEN GOSUB NarrowColorBanding
IF AnimationStyle >= 38 THEN GOSUB MediumColorBanding
GOSUB TurnAllOff
Select CASE AnimationStyle
CASE 1
GOSUB TurnRedON
Case 2
GOSUB TurnGreenON
CASE 3
GOSUB TurnRedON
GOSUB TurnGreenON
CASE 4, 5
GOSUB RedGradient
CASE 6, 7
GOSUB GreenGradient
CASE 8, 9
GOSUB RedGradient
GOSUB GreenGradient
CAsE 10, 11
GOSUB TurnGreenON
GOSUB RedGradient
CASE 12, 13
GOSUB TurnRedON
GOSUB GreenGradient
CASE 14, 15
GOSUB VerticalRedGradient
CASE 16, 17
GOSUB VerticalGreenGradient
CASE 18, 19
GOSUB VerticalRedGradient
GOSUB VerticalGreenGradient
CASE 20, 21
GOSUB TurnGreenON
GOSUB VerticalRedGradient
CASE 22, 23
GOSUB TurnRedON
GOSUB VerticalGreenGradient
CASE 24
GOSUB MonoRedGradient
CASE 25
GOSUB MonoGreenGradient
CASE 26
GOSUB MonoRedGradient
GOSUB MonoGreenGradient
CASE 27
GOSUB MonoGreenGradient
GOSUB MonoRedAntiGradient
Case 28, 29
GOSUB GreenGradient
GOSUB RedAntiGradient
CASE 30, 31
GOSUB VerticalGreenGradient
GOSUB VerticalRedAntiGradient
CASE 32
GOSUB RedGradient
CASE 33
GOSUB GreenGradient
CASE 34
GOSUB RedGradient
GOSUB GreenGradient
CASE 35
GOSUB TurnGreenON
GOSUB RedGradient
CASE 36
GOSUB TurnRedON
GOSUB GreenGradient
CASE 37, 38, 39
GOSUB GreenGradient
GOSUB RedShortAntiGradient
CASE 40, 41
GOSUB RedGradient
CASE 42, 43
GOSUB GreenGradient
CASE 44, 45
GOSUB RedGradient
GOSUB GreenGradient
CASE 46, 47
GOSUB TurnGreenON
GOSUB RedGradient
CASE 48, 49
GOSUB TurnRedON
GOSUB GreenGradient
CASE 50, 51
GOSUB GreenGradient
GOSUB RedMediumAntiGradient
END SELECT
GOSUB TurnTATTOOon
RETURN
'*******************************************************
'Monochromatic gradient Right
'*******************************************************
MonoGradient:
FOR PhaseCounter = 0 TO 15
LOOKUP AnimationCounter + PhaseCounter, [0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1], Buffer
GOSUB GradientDirection
NEXT PhaseCounter
RETURN
'*******************************************************
'Polychromatic gradient
'*******************************************************
PolyGradient:
FOR PhaseCounter = 0 TO 15
LOOKUP AnimationCounter + PhaseCounter, [0, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 2, 0, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 2], Buffer
GOSUB GradientDirection
NEXT PhaseCounter
RETURN
'*******************************************************
'Narrow color banding
'*******************************************************
NarrowColorBanding:
FOR PhaseCounter = 0 TO 15
Buffer = AnimationCounter + PhaseCounter
IF Buffer.0 = 0 THEN
Buffer = 0
ELSE
Buffer = 8
ENDIF
Phase[PhaseCounter + 1] = Buffer
NEXT PhaseCounter
RETURN
'*******************************************************
'Medium color banding
'*******************************************************
MediumColorBanding:
FOR PhaseCounter = 0 TO 15
Buffer = AnimationCounter + PhaseCounter
IF Buffer.1 = 0 THEN
Buffer = 0
ELSE
Buffer = 8
ENDIF
GOSUB GradientDirection
NEXT PhaseCounter
RETURN
'*******************************************************
'Gradient Direction is left or right
'*******************************************************
GradientDirection:
IF AnimationStyle.0 = 0 THEN
Phase[PhaseCounter + 1] = Buffer
ELSE
Phase[16 - PhaseCounter] = Buffer
ENDIF
RETURN
'*******************************************************
'Turn all LEDs off
'*******************************************************
TurnAllOff:
FOR ShiftCounter = 0 TO 75
LedPattern[ShiftCounter] = 0
Next ShiftCounter
RETURN
'*******************************************************
'Turn TATTOO on
'*******************************************************
TurnTATTOOon:
TattooSegment1 = 8
TattooSegment2 = 8
TattooSegment3 = 8
TattooSegment4 = 8
TattooSegment5 = 8
TattooSegment6 = 8
RETURN
'*******************************************************
'TATTOO Gradient
'*******************************************************
'TATTOOGradient:
'TattooSegment1 = Phase1
'TattooSegment2 = Phase1
'TattooSegment3 = Phase1
'TattooSegment4 = Phase1
'TattooSegment5 = Phase1
'TattooSegment6 = Phase1
RETURN
'*******************************************************
'TATTOO shift
'*******************************************************
'TATTOOShift:
'TattooSegment1 = Phase1
'TattooSegment2 = Phase2
'TattooSegment3 = Phase3
'TattooSegment4 = Phase4
'TattooSegment5 = Phase5
'TattooSegment6 = Phase6
'RETURN
'*******************************************************
'Turn Green segments on
'*******************************************************
TurnGreenOn:
GreenSegment1 = 8
GreenSegment2 = 8
GreenSegment3 = 8
GreenSegment4 = 8
GreenSegment5 = 8
GreenSegment6 = 8
GreenSegment7 = 8
GreenSegment8 = 8
GreenSegment9 = 8
GreenSegment10 = 8
GreenSegment11 = 8
GreenSegment12 = 8
GreenSegment13 = 8
GreenSegment14 = 8
GreenSegment15 = 8
GreenSegment16 = 8
GreenSegment17 = 8
GreenSegment18 = 8
GreenSegment19 = 8
GreenSegment20 = 8
GreenSegment21 = 8
GreenSegment22 = 8
GreenSegment23 = 8
GreenSegment24 = 8
GreenSegment25 = 8
GreenSegment26 = 8
GreenSegment27 = 8
GreenSegment28 = 8
GreenSegment29 = 8
GreenSegment30 = 8
GreenSegment31 = 8
GreenSegment32 = 8
GreenSegment33 = 8
GreenSegment34 = 8
GreenSegment35 = 8
RETURN
'*******************************************************
'Turn Red segments on
'*******************************************************
TurnRedOn:
RedSegment1 = 8
RedSegment2 = 8
RedSegment3 = 8
RedSegment4 = 8
RedSegment5 = 8
RedSegment6 = 8
RedSegment7 = 8
RedSegment8 = 8
RedSegment9 = 8
RedSegment10 = 8
RedSegment11 = 8
RedSegment12 = 8
RedSegment13 = 8
RedSegment14 = 8
RedSegment15 = 8
RedSegment16 = 8
RedSegment17 = 8
RedSegment18 = 8
RedSegment19 = 8
RedSegment20 = 8
RedSegment21 = 8
RedSegment22 = 8
RedSegment23 = 8
RedSegment24 = 8
RedSegment25 = 8
RedSegment26 = 8
RedSegment27 = 8
RedSegment28 = 8
RedSegment29 = 8
RedSegment30 = 8
RedSegment31 = 8
RedSegment32 = 8
RedSegment33 = 8
RedSegment34 = 8
RedSegment35 = 8
RETURN
'*******************************************************
'Green gradient 45°
'*******************************************************
GreenGradient:
GreenSegment1 = Phase1
GreenSegment2 = Phase2
GreenSegment3 = Phase3
GreenSegment4 = Phase4
GreenSegment5 = Phase5
GreenSegment6 = Phase6
GreenSegment7 = Phase3
GreenSegment8 = Phase4
GreenSegment9 = Phase5
GreenSegment10 = Phase6
GreenSegment11 = Phase7
GreenSegment12 = Phase8
GreenSegment13 = Phase9
GreenSegment14 = Phase9
GreenSegment15 = Phase10
GreenSegment16 = Phase11
GreenSegment17 = Phase12
GreenSegment18 = Phase13
GreenSegment19 = Phase14
GreenSegment20 = Phase13
GreenSegment21 = Phase14
GreenSegment22 = Phase15
GreenSegment23 = Phase16
GreenSegment24 = Phase1
GreenSegment25 = Phase2
GreenSegment26 = Phase16
GreenSegment27 = Phase1
GreenSegment28 = Phase2
GreenSegment29 = Phase3
GreenSegment30 = Phase4
GreenSegment31 = Phase4
GreenSegment32 = Phase5
GreenSegment33 = Phase6
GreenSegment34 = Phase7
GreenSegment35 = Phase8
RETURN
'*******************************************************
'Red gradient 45°
'*******************************************************
RedGradient:
RedSegment1 = Phase1
RedSegment2 = Phase2
RedSegment3 = Phase3
RedSegment4 = Phase4
RedSegment5 = Phase5
RedSegment6 = Phase6
RedSegment7 = Phase3
RedSegment8 = Phase4
RedSegment9 = Phase5
RedSegment10 = Phase6
RedSegment11 = Phase7
RedSegment12 = Phase8
RedSegment13 = Phase9
RedSegment14 = Phase9
RedSegment15 = Phase10
RedSegment16 = Phase11
RedSegment17 = Phase12
RedSegment18 = Phase13
RedSegment19 = Phase14
RedSegment20 = Phase13
RedSegment21 = Phase14
RedSegment22 = Phase15
RedSegment23 = Phase16
RedSegment24 = Phase1
RedSegment25 = Phase2
RedSegment26 = Phase16
RedSegment27 = Phase1
RedSegment28 = Phase2
RedSegment29 = Phase3
RedSegment30 = Phase4
RedSegment31 = Phase4
RedSegment32 = Phase5
RedSegment33 = Phase6
RedSegment34 = Phase7
RedSegment35 = Phase8
RETURN
'*******************************************************
'Red gradient 45° Antiphase
'*******************************************************
RedAntiGradient:
RedSegment1 = Phase9
RedSegment2 = Phase10
RedSegment3 = Phase11
RedSegment4 = Phase12
RedSegment5 = Phase13
RedSegment6 = Phase14
RedSegment7 = Phase11
RedSegment8 = Phase12
RedSegment9 = Phase13
RedSegment10 = Phase14
RedSegment11 = Phase15
RedSegment12 = Phase16
RedSegment13 = Phase1
RedSegment14 = Phase1
RedSegment15 = Phase2
RedSegment16 = Phase3
RedSegment17 = Phase4
RedSegment18 = Phase5
RedSegment19 = Phase6
RedSegment20 = Phase5
RedSegment21 = Phase6
RedSegment22 = Phase7
RedSegment23 = Phase8
RedSegment24 = Phase9
RedSegment25 = Phase10
RedSegment26 = Phase8
RedSegment27 = Phase9
RedSegment28 = Phase10
RedSegment29 = Phase11
RedSegment30 = Phase12
RedSegment31 = Phase12
RedSegment32 = Phase13
RedSegment33 = Phase14
RedSegment34 = Phase15
RedSegment35 = Phase16
RETURN
'*******************************************************
'Red gradient 45° with 1 step Antiphase
'*******************************************************
RedShortAntiGradient:
RedSegment1 = Phase2
RedSegment2 = Phase3
RedSegment3 = Phase4
RedSegment4 = Phase5
RedSegment5 = Phase6
RedSegment6 = Phase7
RedSegment7 = Phase4
RedSegment8 = Phase5
RedSegment9 = Phase6
RedSegment10 = Phase7
RedSegment11 = Phase8
RedSegment12 = Phase9
RedSegment13 = Phase10
RedSegment14 = Phase10
RedSegment15 = Phase11
RedSegment16 = Phase12
RedSegment17 = Phase13
RedSegment18 = Phase14
RedSegment19 = Phase15
RedSegment20 = Phase14
RedSegment21 = Phase15
RedSegment22 = Phase16
RedSegment23 = Phase1
RedSegment24 = Phase2
RedSegment25 = Phase3
RedSegment26 = Phase1
RedSegment27 = Phase2
RedSegment28 = Phase3
RedSegment29 = Phase4
RedSegment30 = Phase5
RedSegment31 = Phase5
RedSegment32 = Phase6
RedSegment33 = Phase7
RedSegment34 = Phase8
RedSegment35 = Phase9
RETURN
'*******************************************************
'Red gradient 45° with 2 step Antiphase
'*******************************************************
RedMediumAntiGradient:
RedSegment1 = Phase3
RedSegment2 = Phase4
RedSegment3 = Phase5
RedSegment4 = Phase6
RedSegment5 = Phase7
RedSegment6 = Phase8
RedSegment7 = Phase5
RedSegment8 = Phase6
RedSegment9 = Phase7
RedSegment10 = Phase8
RedSegment11 = Phase9
RedSegment12 = Phase10
RedSegment13 = Phase11
RedSegment14 = Phase11
RedSegment15 = Phase12
RedSegment16 = Phase13
RedSegment17 = Phase14
RedSegment18 = Phase15
RedSegment19 = Phase16
RedSegment20 = Phase15
RedSegment21 = Phase16
RedSegment22 = Phase1
RedSegment23 = Phase2
RedSegment24 = Phase3
RedSegment25 = Phase4
RedSegment26 = Phase2
RedSegment27 = Phase3
RedSegment28 = Phase4
RedSegment29 = Phase5
RedSegment30 = Phase6
RedSegment31 = Phase6
RedSegment32 = Phase7
RedSegment33 = Phase8
RedSegment34 = Phase9
RedSegment35 = Phase10
Return
'*******************************************************
'Vertical Green gradient
'*******************************************************
VerticalGreenGradient:
GreenSegment1 = Phase1
GreenSegment2 = Phase1
GreenSegment3 = Phase1
GreenSegment4 = Phase1
GreenSegment5 = Phase1
GreenSegment6 = Phase1
GreenSegment7 = Phase2
GreenSegment8 = Phase2
GreenSegment9 = Phase2
GreenSegment10 = Phase2
GreenSegment11 = Phase2
GreenSegment12 = Phase2
GreenSegment13 = Phase2
GreenSegment14 = Phase3
GreenSegment15 = Phase3
GreenSegment16 = Phase3
GreenSegment17 = Phase3
GreenSegment18 = Phase3
GreenSegment19 = Phase3
GreenSegment20 = Phase4
GreenSegment21 = Phase4
GreenSegment22 = Phase4
GreenSegment23 = Phase4
GreenSegment24 = Phase4
GreenSegment25 = Phase4
GreenSegment26 = Phase5
GreenSegment27 = Phase5
GreenSegment28 = Phase5
GreenSegment29 = Phase5
GreenSegment30 = Phase5
GreenSegment31 = Phase6
GreenSegment32 = Phase6
GreenSegment33 = Phase6
GreenSegment34 = Phase6
GreenSegment35 = Phase6
RETURN
'*******************************************************
'Vertical Red gradient
'*******************************************************
VerticalRedGradient:
RedSegment1 = Phase1
RedSegment2 = Phase1
RedSegment3 = Phase1
RedSegment4 = Phase1
RedSegment5 = Phase1
RedSegment6 = Phase1
RedSegment7 = Phase2
RedSegment8 = Phase2
RedSegment9 = Phase2
RedSegment10 = Phase2
RedSegment11 = Phase2
RedSegment12 = Phase2
RedSegment13 = Phase2
RedSegment14 = Phase3
RedSegment15 = Phase3
RedSegment16 = Phase3
RedSegment17 = Phase3
RedSegment18 = Phase3
RedSegment19 = Phase3
RedSegment20 = Phase4
RedSegment21 = Phase4
RedSegment22 = Phase4
RedSegment23 = Phase4
RedSegment24 = Phase4
RedSegment25 = Phase4
RedSegment26 = Phase5
RedSegment27 = Phase5
RedSegment28 = Phase5
RedSegment29 = Phase5
RedSegment30 = Phase5
RedSegment31 = Phase6
RedSegment32 = Phase6
RedSegment33 = Phase6
RedSegment34 = Phase6
RedSegment35 = Phase6
RETURN
'*******************************************************
'Vertical Red gradient Antiphase
'*******************************************************
VerticalRedAntiGradient:
RedSegment1 = Phase9
RedSegment2 = Phase9
RedSegment3 = Phase9
RedSegment4 = Phase9
RedSegment5 = Phase9
RedSegment6 = Phase9
RedSegment7 = Phase10
RedSegment8 = Phase10
RedSegment9 = Phase10
RedSegment10 = Phase10
RedSegment11 = Phase10
RedSegment12 = Phase10
RedSegment13 = Phase10
RedSegment14 = Phase11
RedSegment15 = Phase11
RedSegment16 = Phase11
RedSegment17 = Phase11
RedSegment18 = Phase11
RedSegment19 = Phase11
RedSegment20 = Phase12
RedSegment21 = Phase12
RedSegment22 = Phase12
RedSegment23 = Phase12
RedSegment24 = Phase12
RedSegment25 = Phase12
RedSegment26 = Phase13
RedSegment27 = Phase13
RedSegment28 = Phase13
RedSegment29 = Phase13
RedSegment30 = Phase13
RedSegment31 = Phase14
RedSegment32 = Phase14
RedSegment33 = Phase14
RedSegment34 = Phase14
RedSegment35 = Phase14
RETURN
'*******************************************************
'Monochromatic Green gradient
'*******************************************************
MonoGreenGradient:
GreenSegment1 = Phase1
GreenSegment2 = Phase1
GreenSegment3 = Phase1
GreenSegment4 = Phase1
GreenSegment5 = Phase1
GreenSegment6 = Phase1
GreenSegment7 = Phase1
GreenSegment8 = Phase1
GreenSegment9 = Phase1
GreenSegment10 = Phase1
GreenSegment11 = Phase1
GreenSegment12 = Phase1
GreenSegment13 = Phase1
GreenSegment14 = Phase1
GreenSegment15 = Phase1
GreenSegment16 = Phase1
GreenSegment17 = Phase1
GreenSegment18 = Phase1
GreenSegment19 = Phase1
GreenSegment20 = Phase1
GreenSegment21 = Phase1
GreenSegment22 = Phase1
GreenSegment23 = Phase1
GreenSegment24 = Phase1
GreenSegment25 = Phase1
GreenSegment26 = Phase1
GreenSegment27 = Phase1
GreenSegment28 = Phase1
GreenSegment29 = Phase1
GreenSegment30 = Phase1
GreenSegment31 = Phase1
GreenSegment32 = Phase1
GreenSegment33 = Phase1
GreenSegment34 = Phase1
GreenSegment35 = Phase1
RETURN
'*******************************************************
'Monochromatic Red gradient
'*******************************************************
MonoRedGradient:
RedSegment1 = Phase1
RedSegment2 = Phase1
RedSegment3 = Phase1
RedSegment4 = Phase1
RedSegment5 = Phase1
RedSegment6 = Phase1
RedSegment7 = Phase1
RedSegment8 = Phase1
RedSegment9 = Phase1
RedSegment10 = Phase1
RedSegment11 = Phase1
RedSegment12 = Phase1
RedSegment13 = Phase1
RedSegment14 = Phase1
RedSegment15 = Phase1
RedSegment16 = Phase1
RedSegment17 = Phase1
RedSegment18 = Phase1
RedSegment19 = Phase1
RedSegment20 = Phase1
RedSegment21 = Phase1
RedSegment22 = Phase1
RedSegment23 = Phase1
RedSegment24 = Phase1
RedSegment25 = Phase1
RedSegment26 = Phase1
RedSegment27 = Phase1
RedSegment28 = Phase1
RedSegment29 = Phase1
RedSegment30 = Phase1
RedSegment31 = Phase1
RedSegment32 = Phase1
RedSegment33 = Phase1
RedSegment34 = Phase1
RedSegment35 = Phase1
RETURN
'*******************************************************
'Monochromatic Red gradient antiphase
'*******************************************************
MonoRedAntiGradient:
RedSegment1 = Phase9
RedSegment2 = Phase9
RedSegment3 = Phase9
RedSegment4 = Phase9
RedSegment5 = Phase9
RedSegment6 = Phase9
RedSegment7 = Phase9
RedSegment8 = Phase9
RedSegment9 = Phase9
RedSegment10 = Phase9
RedSegment11 = Phase9
RedSegment12 = Phase9
RedSegment13 = Phase9
RedSegment14 = Phase9
RedSegment15 = Phase9
RedSegment16 = Phase9
RedSegment17 = Phase9
RedSegment18 = Phase9
RedSegment19 = Phase9
RedSegment20 = Phase9
RedSegment21 = Phase9
RedSegment22 = Phase9
RedSegment23 = Phase9
RedSegment24 = Phase9
RedSegment25 = Phase9
RedSegment26 = Phase9
RedSegment27 = Phase9
RedSegment28 = Phase9
RedSegment29 = Phase9
RedSegment30 = Phase9
RedSegment31 = Phase9
RedSegment32 = Phase9
RedSegment33 = Phase9
RedSegment34 = Phase9
RedSegment35 = Phase9
RETURN
'*******************************************************
'Button Interrupt Handler
'*******************************************************
ButtonInterrupt:
@ INT_DISABLE INT_INT ; disable Button interrupts
GOSUB TurnAllOff
GOSUB DisplayLoop
REPEAT
PAUSE 100
ButtonCounter = ButtonCounter + 1
UNTIL PushButton = 1 OR ButtonCounter = 10
IF ButtonCounter >= 10 THEN
StoredAnimationSpeed = StoredAnimationSpeed + 1
IF StoredAnimationSpeed > 12 THEN StoredAnimationSpeed = 0
WRITE 1, StoredAnimationSpeed
ELSE
AnimationStyle = AnimationStyle + 1
IF AnimationStyle > AnimationNumber THEN AnimationStyle = 0
WRITE 0, AnimationStyle
ENDIF
ButtonCounter = 0
SpeedCounter = 255
Gosub AnimationUpdate
@ INT_ENABLE INT_INT ; enable Button interrupts
@ INT_RETURN
END
Bookmarks