So hab nun doch keinen Würfel, sondern ein 5*5 panel, da dies noch im Regal lag.
http://www.youtube.com/watch?v=83N7au7Ujvk
5 Programme die über einen Taster durchgeschaltet werden können. die grünen LEDs rechts zeigen das aktuelle Programm (1-5 zählen binär). Die rote LED zeigt den gedrückten Taster an.
Das Video wurde durchs konvertieren etwas schneller.

Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600

'--- IN/OUT CONFIG ---
   Config Porta = Output
   Config Portc = Output
   Config Portd = Output
   Config Pinb.2 = Input
   Config Pina.6 = Input
'---------------------


'---PINS BENENNEN-----
   S5 Alias Portc.0
   S4 Alias Portc.1
   S3 Alias Portc.2
   S2 Alias Portc.3
   S1 Alias Portc.4

   Z5 Alias Porta.0
   Z4 Alias Porta.1
   Z3 Alias Porta.2
   Z2 Alias Porta.3
   Z1 Alias Porta.4

   Taster Alias Pinb.2

   Sled1 Alias Portd.5
   Sled2 Alias Portd.4
   Sled3 Alias Portd.3
   Tled Alias Portd.2
'---------------------


'---UNTERPROGRAMME----
   Declare Sub Mustera()
   Declare Sub Musterb()
   Declare Sub Musterc()
   Declare Sub Musterd()
   Declare Sub Mustere()
'---------------------


'---Taster & status --
   Portd.6 = 1
   Portd.5 = 1
   Portd.4 = 1
   Portd.3 = 1
   Portd.2 = 1
   Portb.2 = 1
   Porta.6 = 1
'---------------------


'---VARIABLEN---------
   Dim A As Integer
   A = 0

'---------------------

Do

'-------LEDS AUS------
   Porta.1 = 1
   Porta.0 = 1
   Porta.2 = 1
   Porta.3 = 1
   Porta.4 = 1
   Portc.0 = 1
   Portc.1 = 1
   Portc.2 = 1
   Portc.3 = 1
   Portc.4 = 1

'---------------------

If Taster = 0 Then
Incr A
Tled = 0
End If

If A = 6 Then
A = 1
End If

If A = 1 Then
   Call Mustera()
   Sled1 = 0
   Sled2 = 1
   Sled3 = 1
   Tled = 1
End If

If A = 2 Then
   Call Musterb()
   Sled1 = 1
   Sled2 = 0
   Sled3 = 1
   Tled = 1
End If

If A = 3 Then
   Call Musterc()
   Sled1 = 0
   Sled2 = 0
   Sled3 = 1
   Tled = 1
End If

If A = 4 Then
   Call Musterd()
   Sled3 = 0
   Sled2 = 1
   Sled1 = 1
   Tled = 1
End If

If A = 5 Then
   Call Mustere()
   Sled3 = 0
   Sled2 = 1
   Sled1 = 0
   Tled = 1
End If

Loop

Sub Mustera()
   Z2 = 1
   S1 = 0
   S5 = 0
   Z1 = 0
   Waitms 50
   S1 = 1
   S5 = 1
   Z1 = 1
   S2 = 0
   S4 = 0
   Z2 = 0
   Waitms 50
   S2 = 1
   S4 = 1
   Z2 = 1
   S3 = 0
   Z3 = 0
   Waitms 50
   S3 = 1
   Z3 = 1
   S4 = 0
   S2 = 0
   Z4 = 0
   Waitms 50
   S4 = 1
   S2 = 1
   Z4 = 1
   S5 = 0
   S1 = 0
   Z5 = 0
   Waitms 50
   S5 = 1
   S1 = 1
   Z5 = 1
   Z4 = 0
   S1 = 0
   S5 = 0
   Waitms 50
   Z3 = 0
   Z4 = 1
   Waitms 50
   Z3 = 1
   Z2 = 0
   Waitms 50
End Sub

Sub Musterb()
   S3 = 0
   Z3 = 0
   Waitms 70
   S2 = 0
   S4 = 0
   Z2 = 0
   Z4 = 0
   Waitms 70
   S1 = 0
   S5 = 0
   Z1 = 0
   Z5 = 0
   Waitms 70
   Z5 = 1
   Z1 = 1
   S5 = 1
   S1 = 1
   Waitms 70
   S2 = 1
   S4 = 1
   Z2 = 1
   Z4 = 1
   Waitms 70
End Sub

Sub Musterc()
   Z1 = 0
   S1 = 0
   Waitms 70
   S1 = 1
   S2 = 0
   Waitms 70
   S2 = 1
   S3 = 0
   Waitms 70
   S3 = 1
   S4 = 0
   Waitms 70
   S4 = 1
   S5 = 0
   Waitms 70
   Z1 = 1
   Z2 = 0
   Waitms 70
   Z2 = 1
   Z3 = 0
   Waitms 70
   Z3 = 1
   Z4 = 0
   Waitms 70
   Z4 = 1
   Z5 = 0
   Waitms 70
   S5 = 1
   S4 = 0
   Waitms 70
   S4 = 1
   S3 = 0
   Waitms 70
   S3 = 1
   S2 = 0
   Waitms 70
   S2 = 1
   S1 = 0
   Waitms 70
   Z5 = 1
   Z4 = 0
   Waitms 70
   Z4 = 1
   Z3 = 0
   Waitms 70
   Z3 = 1
   Z2 = 0
   Waitms 70
   Z2 = 1
   Waitms 70
End Sub

Sub Musterd()
   Z1 = 0
   S1 = 0
   Z5 = 0
   S5 = 0
   Waitms 70
   S1 = 1
   S2 = 0
   S5 = 1
   S4 = 0
   Waitms 70
   S2 = 1
   S4 = 1
   S3 = 0
   Waitms 70
   S3 = 1
   S4 = 0
   S2 = 0
   Waitms 70
   S4 = 1
   S2 = 1
   S5 = 0
   S1 = 0
   Waitms 70
   Z1 = 1
   Z5 = 1
   Z2 = 0
   Z4 = 0
   Waitms 70
   Z2 = 1
   Z4 = 1
   Z3 = 0
   Waitms 70
   Z3 = 1
   Z4 = 0
   Z2 = 0
   Waitms 70
   Z4 = 1
   Z2 = 1
   Z5 = 0
   Z1 = 0
   Waitms 70
   S5 = 1
   S1 = 1
   S4 = 0
   S2 = 0
   Waitms 70
   S4 = 1
   S2 = 1
   S3 = 0
   Waitms 70
   S3 = 1
   S2 = 0
   S4 = 0
   Waitms 70
   S2 = 1
   S4 = 1
   S1 = 0
   S5 = 0
   Waitms 70
   Z5 = 1
   Z1 = 1
   Z4 = 0
   Z2 = 0
   Waitms 70
   Z4 = 1
   Z2 = 1
   Z3 = 0
   Waitms 70
   Z3 = 1
   Z2 = 0
   Z4 = 0
   Waitms 70
   Z2 = 1
   Z4 = 1
   Waitms 70
End Sub

Sub Mustere()
Z3 = 0
S5 = 0
Waitms 70
S5 = 1
S4 = 0
Waitms 70
S4 = 1
S3 = 0
Waitms 70
S3 = 1
S2 = 0
Waitms 70
S2 = 1
S1 = 0
Waitms 70
Z3 = 1
Z2 = 0
Z4 = 0
Waitms 70
Z2 = 1
Z4 = 1
Z5 = 0
Z1 = 0
Waitms 70
S1 = 1
S2 = 0
Waitms 70
S2 = 1
S3 = 0
Waitms 70
S3 = 1
S4 = 0
Waitms 70
S4 = 1
S5 = 0
Waitms 70
Z1 = 1
Z5 = 1
Z2 = 0
Z4 = 0
Waitms 70
End Sub
Ich nehm stark an das der Code extrem verringert werden kann, werde mich die tage da mal etwas schlauer machen. Gibts denn irgendwo ne gute basic befehlsübersicht?