LED Cube

Berätta om dina pågående projekt.
Användarvisningsbild
MNorrgren
Inlägg: 5816
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

LED Cube

Inlägg av MNorrgren »

Har haft lite lite att göra nu de senaste dagarna så jag har pillat lite och fått för mig att bygga en LED Cube.

Den är ganska liten. 3*3*3 lysdioder. Så det är 27 dioder. Och eftersom detta var ett test så köpte jag billiga och svaga dioder. Ska kanske uppdatera med nya dioder, vet ej vilken färg men lutar åt blåa.


Lådan har jag gjort av en bit list och mycket spackel samt lite sprayfärg. Men jag ska göra en ny låda lite senare med en ny kub.

Jag använde mig av en PIC 16f690 processor. Den är väl inte den snabbaste men det räcker fint åt mig.


Schema och kod kan jag lägga upp om någon är intresserad. Har iofs bara schemat på en bit vanligt papper men kan rita upp det på datorn om det behövs.

Här är bilder och självklart en film.

Bilder:

http://i478.photobucket.com/albums/rr15 ... 041530.jpg

http://i478.photobucket.com/albums/rr15 ... 041529.jpg

Film:
http://s478.photobucket.com/albums/rr15 ... 041532.flv
-=Fullmoon=-
Inlägg: 3529
Blev medlem: 4 december 2007, 16:32:13
Ort: Jönköping -

Inlägg av -=Fullmoon=- »

rolig liten onödig sak ^^

EDIT: hade varit skoj att bygg anått sånt själv..

Lust och ge schema o kod?
Evt skicka en färdig confad ic krets?
Användarvisningsbild
MNorrgren
Inlägg: 5816
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

Inlägg av MNorrgren »

Ska peta ihop ett schema och fixa till koden lite.

Kan skicka en färdig IC, men måste isf åka iväg och köpa en. Har inte fler hemma. Köpte bara en för att kunna testa om jag fick det att fungera.

Alternativet är om du skcikar en till mig så kan jag programmera den till dig.
Användarvisningsbild
Housepainter
EF Sponsor
Inlägg: 1318
Blev medlem: 19 juli 2006, 18:50:38
Ort: Borås

Inlägg av Housepainter »

Snyggt!
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Nice. Går ju faktist med 3³ dioder. Synd att "nästa steg" blir 64 dioder och det därefter 125.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 34840
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Inlägg av HUGGBÄVERN »

Coolt! När du bygger den "riktiga" kuben, lacka alla ben mattsvarta. 8)
Användarvisningsbild
MNorrgren
Inlägg: 5816
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

Inlägg av MNorrgren »

Tack tack!

Ja men det ska väl bli en 4*4*4 så småningom också. Men det får bli ltie mer programmering för det.

Ja, ska lacka alla ben svarta och så. Kanske ska göra med RGB-dioder med. Kan bli rätt tufft.
Pejlaren
Inlägg: 1992
Blev medlem: 22 mars 2008, 15:11:01
Ort: Uppland

Inlägg av Pejlaren »

Haha, kul pryl. Lägg gärna upp kod, och schema.
Perfekt julpyssel. Alla grannar har massa färdigköpta ljusslingor, kul med något eget. :)
Användarvisningsbild
unzuf
Inlägg: 166
Blev medlem: 1 februari 2005, 18:07:08

Inlägg av unzuf »

Riktigt fin liten sak! :) Skulle uppskattas om schema kom upp, alltid trevligt att pilla med lite LEDs och dylikt!
Användarvisningsbild
MNorrgren
Inlägg: 5816
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

Inlägg av MNorrgren »

Kod: Markera allt

;-----------------------------------------------------------------------------------------------;
;		LED	cube																				;
;		--------																				;
;											;
;																				;
;																				;
;																								;
;	4MHz internal resonator used 																;
;																								;
;																								;
;	3 layers of 3 x 3 LEDs																		;
;																								;
;	RB6	-	Top layer common																	;
;	RB6	-	Middle layer common																	;
;	RB7	-	Bottom layer common																	;
;																								;
;																								;
;	Each layer of LED's Anodes			;						;
;																								;
;		RC1			RC0			RB4																;
;																								;
;																								;
;		RC4			RC3			RC2																;
;																								;
;																								;
;		RC7			RC6			RC5																;
;																								;
;	4 registers are used to hold the patterns for the LEDs										;
;																								;
;	Layer1 - Top layer (8 Leds)																	;
;	Layer2 - Middle layer (8 Leds)																;
;	Layer3 - Bottom layer (8 Leds)																;
;	Layer4 - bits 7,6 and 5 hold the 9th LED for top, middle and bottom, bits 4 and 3 hold the	;
;			 brightness (how long it is on for), bits 2,1 and 0 is the time the specific		;
;			 pattern is on until the next one is retrieved										;
;																								;
;	There are 4 look-up tables Table1, Table2, Table3 and Table4. These are for each layer		;
;	giving a total of 255 different patterns.													;
;-----------------------------------------------------------------------------------------------;



#include <p16F690.inc>
    __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)


cblock 0x20
	Delay1					; delay loop 1
	Delay2					; delay loop 2
	Delay3					; delay loop 3
	TimeDelay				; time delay x 0.001 s
	EndCount				; used to tell PIC the end of the table is reached
	Counter					; used as table counter
	Layer1					; top layer
	Layer2					; middle layer
	Layer3					; bottom layer
	Layer4					; 9th Led on each layer, brightness, and time
	Brightness				; LED brightness
	Time					; time for each pattern to stay
	Temp					; temp register
endc

	org 0
	goto	Start			; jump to Start



;-----------------------------------------------------------------------------------------------;
; Subroutines are here at the top																;
;-----------------------------------------------------------------------------------------------;

;-----------------------------------------------------------------------------------------------;
; BigSmall sub routine																			;
;-----------------------------------------------------------------------------------------------;
BigSmall:
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	return



;-----------------------------------------------------------------------------------------------;
; FlashingLines sub routine																			;
;-----------------------------------------------------------------------------------------------;
FlashingLines:
	movlw	b'00100100'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'01001001'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'10010010'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000011'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00011100'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'10010010'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'01001001'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00100100'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00011100'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000011'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	return


;-----------------------------------------------------------------------------------------------;
; LayerBrightness sub routine																			;
;-----------------------------------------------------------------------------------------------;
LayerBrightness:
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10000000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01000000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00100000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01001000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00001000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00010000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00101000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00001000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01001000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00001000'
	movwf	Layer4
	call	Output
	return


;-----------------------------------------------------------------------------------------------;
; CubeFill sub routine																			;
;-----------------------------------------------------------------------------------------------;
CubeFill:
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00100000'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'01100000'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11100000'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11110000'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11110010'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11110011'
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11110011'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11110111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00100000'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'01100000'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11100000'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11110000'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11110010'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11110011'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11110011'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11110111'
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'00100000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'01100000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'11110000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'11110010'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'11110011'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111000'
	movwf	Layer4
	call	Output
	movlw	b'11110011'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11110111'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11011111'
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'10011111'
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00011111'
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001111'
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001101'
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001100'
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001100'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'11011111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'10011111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00011111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00001111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00001101'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00001100'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00001100'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'11011111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'10011111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'00011111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'00001111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'00001101'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'00001100'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011000'
	movwf	Layer4
	call	Output
	movlw	b'00001100'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011000'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; SideToSide sub routine																			;
;-----------------------------------------------------------------------------------------------;
SideToSide:
	movlw	b'00000011'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111011'
	movwf	Layer4
	call	Output
	movlw	b'00000011'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00011100'
	movwf	Layer3
	movlw	b'11011011'
	movwf	Layer4
	call	Output
	movlw	b'00000011'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11100000'
	movwf	Layer3
	movlw	b'11011011'
	movwf	Layer4
	call	Output
	movlw	b'00000011'
	movwf	Layer1
	movlw	b'00011100'
	movwf	Layer2
	movlw	b'11100000'
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'00000011'
	movwf	Layer1
	movlw	b'11100000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'00011100'
	movwf	Layer1
	movlw	b'11100000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00011100'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000011'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movlw	b'00011100'
	movwf	Layer2
	movlw	b'00000011'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'11100000'
	movwf	Layer1
	movlw	b'00000011'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111011'
	movwf	Layer4
	call	Output
	movlw	b'00011100'
	movwf	Layer1
	movlw	b'00000011'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111011'
	movwf	Layer4
	call	Output
	return


;-----------------------------------------------------------------------------------------------;
; DiagAroundSides sub routine																			;
;-----------------------------------------------------------------------------------------------;
DiagAroundSides:
	movlw	b'00100000'
	movwf	Layer1
	movlw	b'01000000'
	movwf	Layer2
	movlw	b'10000000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'01000000'
	movwf	Layer1
	movlw	b'10000000'
	movwf	Layer2
	movlw	b'00010000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'10000000'
	movwf	Layer1
	movlw	b'00010000'
	movwf	Layer2
	movlw	b'00000010'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00010000'
	movwf	Layer1
	movlw	b'00000010'
	movwf	Layer2
	movlw	b'00000001'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00000010'
	movwf	Layer1
	movlw	b'00000001'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00000001'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movlw	b'00000100'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00000100'
	movwf	Layer2
	movlw	b'00100000'
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'00000100'
	movwf	Layer1
	movlw	b'00100000'
	movwf	Layer2
	movlw	b'01000000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00100000'
	return

;-----------------------------------------------------------------------------------------------;
; Firework sub routine																			;
;-----------------------------------------------------------------------------------------------;
Firework:
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001000'
	movwf	Layer3
	movlw	b'00001111'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00001101'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00001101'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00001101'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00001101'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011100'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011100'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'10111000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'01010101'
	movwf	Layer1
	movlw	b'10110000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	movlw	b'00010100'
	movwf	Layer1
	movlw	b'01010101'
	movwf	Layer2
	movlw	b'10110000'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00010110'
	movwf	Layer2
	movlw	b'01010101'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00010110'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; CubeLight sub routine																			;
;-----------------------------------------------------------------------------------------------;
CubeLight:
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11100000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11101000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11110000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11110000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11101000'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11100000'
	movwf	Layer4
	call	Output
	return


;-----------------------------------------------------------------------------------------------;
; LineAround sub routine																			;
;-----------------------------------------------------------------------------------------------;
LineAround:
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'11111011'
	movwf	Layer4
	call	Output
	movlw	b'00000100'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00100000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'01000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'10000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00010000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00000010'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00000001'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; LayerDrop sub routine																			;
;-----------------------------------------------------------------------------------------------;
LayerDrop:
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'10110110'
	movwf	Layer1
	movlw	b'01001001'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'10110110'
	movwf	Layer2
	movlw	b'01001001'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'01001001'
	movwf	Layer2
	movlw	b'10110110'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'01001001'
	movwf	Layer1
	movlw	b'10110110'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; LayerDrop2 sub routine																			;
;-----------------------------------------------------------------------------------------------;
LayerDrop2:
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'11110111'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'11110111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	movlw	b'11111111'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'11110111'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11110111'
	movwf	Layer2
	movlw	b'00001000'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	return


;-----------------------------------------------------------------------------------------------;
; Spin sub routine																			;
;-----------------------------------------------------------------------------------------------;
Spin:
	movlw	b'01001001'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00100100'
	movwf	Layer1
	movlw	b'01001001'
	movwf	Layer2
	movlw	b'10010010'
	movwf	Layer3
	movlw	b'10011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11111111'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011001'
	movwf	Layer4
	call	Output
	movlw	b'10010010'
	movwf	Layer1
	movlw	b'01001001'
	movwf	Layer2
	movlw	b'00100100'
	movwf	Layer3
	movlw	b'00111001'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; SnakeLine sub routine																			;
;-----------------------------------------------------------------------------------------------;
SnakeLine:
	movlw	b'10010010'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'11011011'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'01101101'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011001'
	movwf	Layer4
	call	Output
	movlw	b'00100100'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'11011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'01101101'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11011011'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'10010010'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11011011'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'01101101'
	movwf	Layer3
	movlw	b'00111001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00100100'
	movwf	Layer2
	movwf	Layer3
	movlw	b'01111001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'01101101'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'01011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'11011011'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'10010010'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; SpiralDown sub routine																			;
;-----------------------------------------------------------------------------------------------;
SpiralDown:
	movlw	b'00000010'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000001'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'10011001'
	movwf	Layer4
	call	Output
	movlw	b'00000100'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00100000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'01000000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'10000000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00010000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00000100'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00100000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'01000000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'10000000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00010000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00000010'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00000001'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'01011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movwf	Layer3
	movlw	b'00111001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000100'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00100000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'01000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'10000000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00010000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000010'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000001'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001000'
	movwf	Layer3
	movlw	b'00011001'
	movwf	Layer4
	call	Output
	return

;-----------------------------------------------------------------------------------------------;
; UpAndOut sub routine																			;
;-----------------------------------------------------------------------------------------------;
UpAndOut:
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'01011101'
	movwf	Layer1
	movlw	b'00000000'
	movwf	Layer2
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'10100010'
	movwf	Layer1
	movlw	b'01010101'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'10011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'10100010'
	movwf	Layer2
	movlw	b'01010101'
	movwf	Layer3
	movlw	b'01011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11110111'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'11111111'
	movwf	Layer3
	movlw	b'00111011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00001000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00000000'
	movwf	Layer1
	movlw	b'00001000'
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	movlw	b'00001000'
	movwf	Layer1
	movwf	Layer2
	movlw	b'00000000'
	movwf	Layer3
	movlw	b'00011011'
	movwf	Layer4
	call	Output
	return



;-----------------------------------------------------------------------------------------------;
; Output outputs the data to the LEDs. PORTB will be used to turn on transistors to ground the	;
; cathodes of the LEDs																			;
;-----------------------------------------------------------------------------------------------;
Output:
							; set the brightness
	movfw	Layer4			; put layer 4 into W
	andlw	b'00011000'		; get just bits 3 and 5
	movwf	Brightness		; put W into Brightness
	bcf		STATUS,C		; clear the carry flag
	rrf		Brightness,1	; rotate Brightness
	bcf		STATUS,C		; clear the carry flag
	rrf		Brightness,1	; and again
	bcf		STATUS,C		; clear the carry flag
	rrf		Brightness,1	; and again
	incf	Brightness,1	; add 1 to Brightess

	movfw	Layer4			; move layer 4 into W
	andlw	b'00000111'		; get just bits 0,1 and 2
	movwf	Time			; put W into Time
	incf	Time,1			; add 1 to Time
	bcf		STATUS,C		; clear the carry flag
	rlf		Time,1
	bcf		STATUS,C		; clear the carry flag
	rlf		Time,1
	bcf		STATUS,C		; clear the carry flag
	rlf		Time,1
	bcf		STATUS,C		; clear the carry flag
	rlf		Time,1
	bcf		STATUS,C		; clear the carry flag
	rlf		Time,1

Output2:
							; --- Top Layer ---
	clrf	PORTB			; clear port B
	movfw	Layer1			; move layer1 to W
	movwf	PORTC			; put W onto PortC

	btfsc	Layer4,7		; see if LED 9 should be on
	bsf		PORTB,4			; turn on LED 9

	bsf		PORTB,5			; turn on layer 1 buy outputing bit 5 of PortB

	movfw	Brightness		; put brightness into W
	call	Delay			; call the delay

							; brightness can be 1,2,3 or 4, so now we have to call the delay again
							; 4 - brightness with the LEDs off

	bcf		PORTB,5			; turn off layer 1

	movfw	Brightness		; put Brightness into W
	sublw	4				; sub W from 4
	btfss	STATUS,Z		; skip if the zero flag is set
	call	Delay			; call the delay


							; --- Middle Layer ---
	clrf	PORTB			; clear port B
	movfw	Layer2			; move layer2 to W
	movwf	PORTC			; put W onto PortC

	btfsc	Layer4,6		; see if LED 9 should be on
	bsf		PORTB,4			; turn on LED 9

	bsf		PORTB,6			; turn on layer 2 buy outputing bit 6 of PortB

	movfw	Brightness		; put brightness into W
	call	Delay			; call the delay

							; brightness can be 1,2,3 or 4, so now we have to call the delay again
							; 4 - brightness with the LEDs off

	bcf		PORTB,6			; turn off layer 2

	movfw	Brightness		; put Brightness into W
	sublw	4				; sub W from 4
	btfss	STATUS,Z		; skip if the zero flag is set
	call	Delay			; call the delay
	


							; --- Bottom Layer ---
	clrf	PORTB			; clear port B
	movfw	Layer3			; move layer3 to W
	movwf	PORTC			; put W onto PortC

	btfsc	Layer4,5		; see if LED 9 should be on
	bsf		PORTB,4			; turn on LED 9

	bsf		PORTB,7			; turn on layer 2 buy outputing bit 6 of PortB

	movfw	Brightness		; put brightness into W
	call	Delay			; call the delay

							; brightness can be 1,2,3 or 4, so now we have to call the delay again
							; 4 - brightness with the LEDs off

	bcf		PORTB,7			; turn off layer 3

	movfw	Brightness		; put Brightness into W
	sublw	4				; sub W from 4
	btfss	STATUS,Z		; skip if the zero flag is set
	call	Delay			; call the delay

	decfsz	Time			; decrement the Time regiester
	goto	Output2			; repeat
	return



;-----------------------------------------------------------------------------------------------;
; The Delay routine is called with a number put into the W register. This is in multiples of	;
; 100u seconds, (0.1m seconds)																	;
;-----------------------------------------------------------------------------------------------;
Delay:
	movwf	Delay3			; put W into Delay 3

Loop1:
							; After Delay2 decreses to 0, it is reset to..
	movlw	0x1				; put 1 into W
	movwf	Delay2			; put W into Delay2

Loop2:
							; After Delay1 decreses to 0, it is reset to E9h
	movlw	0x1D			; put 80 into W
	movwf	Delay1			; put W into Delay1

Loop3:
	decfsz	Delay1			; decrement Delay1
	goto	Loop3			; jump back to Loop3
	decfsz	Delay2			; decrement Delay2
	goto	Loop2			; jump back to Loop2
	decfsz	Delay3			; decrement Delay3
	goto	Loop1			; jump back to Loop1
	return



;-----------------------------------------------------------------------------------------------;
; Main program starts here																		;
;-----------------------------------------------------------------------------------------------;

Start:
	bsf		STATUS,RP0			; select register page 1
	movlw	0					; put 0 into W
	movwf	TRISC				; set portC all output
	movwf	TRISB				; set portB all outputs

	bsf		STATUS,RP1			; select Page 2,
	bcf		STATUS,RP0			; by setting RP1 in Status register and clearing RP0

	clrf	ANSEL				; select Digital I/O on port C
	clrf	ANSELH				; "		"

    bcf		STATUS,RP1			; back to Register Page 0

	bcf		EndCount,0			; reset the EndCount bit

	clrf	Counter				; clear the Counter register


Loop:
	call	CubeLight
	call	CubeLight
	call	CubeLight
	call	CubeLight
	call	CubeLight


	call	LayerDrop
	call	LayerDrop
	call	LayerDrop
	call	LayerDrop
	call	LayerDrop

	call	Spin
	call	Spin
	call	Spin
	call	Spin
	call	Spin

	call	SnakeLine
	call	SnakeLine
	call	SnakeLine
	call	SnakeLine
	call	SnakeLine

	call	LayerBrightness
	call	LayerBrightness
	call	LayerBrightness
	call	LayerBrightness
	call	LayerBrightness

	call	SpiralDown
	call	UpAndOut
	call	SpiralDown
	call	UpAndOut
	call	SpiralDown
	call	UpAndOut

	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall
	call	BigSmall


	call	LineAround
	call	LineAround
	call	LineAround
	call	LineAround
	call	LineAround

	call	SideToSide
	call	SideToSide
	call	SideToSide
	call	SideToSide
	call	SideToSide

	call	FlashingLines
	call	FlashingLines
	call	FlashingLines
	call	FlashingLines
	call	FlashingLines


	call	Firework
	call	Firework
	call	Firework
	call	Firework
	call	Firework

	call	DiagAroundSides
	call	DiagAroundSides
	call	DiagAroundSides
	call	DiagAroundSides
	call	DiagAroundSides

	call	LayerDrop2
	call	LayerDrop2
	call	LayerDrop2
	call	LayerDrop2
	call	LayerDrop2

	call	CubeFill
	call	CubeFill
	call	CubeFill
	call	CubeFill
	call	CubeFill
	call	CubeFill


	goto	Loop


end
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 34840
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Inlägg av HUGGBÄVERN »

Sjysst, men länk till en HEX-fil hade räckt ... :wink:
Användarvisningsbild
MNorrgren
Inlägg: 5816
Blev medlem: 27 maj 2005, 16:09:10
Ort: Sjöbo, Skåne

Inlägg av MNorrgren »

Användarvisningsbild
PhysX
Inlägg: 42
Blev medlem: 4 oktober 2007, 18:30:56
Ort: Södertälje

Inlägg av PhysX »

Varför länkar du inte bara till dom som gjort projektet?
http://www.das-labor.org/index.en.php

Make magazine har gjort en jätte fin guide för detta projekt.


Synd att inte ge creds till som gjort allt jobb.
xobx
Inlägg: 196
Blev medlem: 14 juni 2007, 13:46:43
Ort: Där borta

Inlägg av xobx »

Tror knappast citizendildo behövde följa en guide för att göra denna :roll:

Sen finns det hur många som helst som gjort sånna här kuber tex:
http://www.instructables.com/id/LED-Cube-4x4x4/
Användarvisningsbild
PhysX
Inlägg: 42
Blev medlem: 4 oktober 2007, 18:30:56
Ort: Södertälje

Inlägg av PhysX »

Nä men många andra värkar ju vara intresserade av hur han har gjort, mest därför jag postade en guide.
Skriv svar