'***********************************************************************
'* Programm : LED Cube 4x4x4 (LED Wuerfel 4x4x4)
'*
'* Compiler : BASCOM-AVR IDE 2.0.7.8
'* Hardware : Homebrew
'* Language : Basic
'* Chip type : ATMega32
'* Compiler : Bascom 2.0.7.8
'* From : Sedna Robotics Switzerland
'* Contact : mail@sedna-robotics.ch
'*
'***********************************************************************
'* Date : 17.11.2017
'***********************************************************************
'* Version : 0.09
'***********************************************************************
'It is partially prepared to run an 8x8x8 cube.
'Also there are preparations to have a rs232 connection
to a pc.
'But we did not implement that really for the 4x4x4
cube.
'Makes more sense on a 8x8x8 cube.
$regfile = "m32def.dat"
$crystal = 14745600
$hwstack = 128
$framesize = 128
$swstack = 128
$prog &HFF , &HCE , &HD9 , &H00 ' generated.
Take care that the chip supports all fuse bytes.
Config Serialin = Buffered , Size = 30 , Bytematch
= 13
Config Timer0 = Timer , Prescale = 8 'Konfiguriere
Timer0
Enable Timer0 'schalte den Timer0 Overflow-interrupt
ein
On Timer0 Isr_von_timer0 'verzweige bei Timer0 überlauf
zu Isr_von_Timer0
Enable Interrupts
'***********************************************************************
'* Subroutinen Definition
'***********************************************************************
Declare Sub Machmallangsam(ByVal Wieviel_mS as Word)
Declare Sub Seq_ZL_Rain(ByVal StartSpeed as word ,
Byval Endspeed as word)
Declare Sub Seq_ZL_Slowed_Down_Rnd_Fill(ByVal StartSpeed
as word , Byval Endspeed as word)
Declare Sub Seq_ZLayer_Random_Fill(ByVal Repeats as
word , Byval Wieviel_ms as word)
Declare Sub Seq_XLayer_Upwards(ByVal Repeats as word
, Byval Wieviel_ms as word)
Declare Sub Seq_YLayer_Upwards(ByVal Repeats as word
, Byval Wieviel_ms as word)
Declare Sub Seq_ZLayer_Upwards(ByVal Repeats as word
, Byval Wieviel_ms as word)
Declare Sub Serial0charmatch()
'***********************************************************************
'* Variables Definition
'***********************************************************************
Dim L_serout As Bit 'Serielle Debug Ausgabe
Dim L_function_key_pressed As Bit 'Function Key is
pressed
Dim L_f1_key_pressed As Bit 'F1 Key is pressed
Dim L_f2_key_pressed As Bit 'F2 Key is pressed
Dim L_f3_key_pressed As Bit 'F3 Key is pressed
Dim L_f4_key_pressed As Bit
Dim W_counter_1 As Word
Dim W_counter_2 As Word
Dim B_layer As Byte
Dim W_delaytime As Word
Dim W_delaycount As Word
Dim Led_Columns(4 , 4 ) As Byte '16 Anode Columns,
only bit 0..3 are used
Dim Xpos As Byte '0..4
Dim Ypos As Byte '0..4
Dim Zpos As Byte '0..4
Dim Locxcount As Byte
Dim Locycount As Byte
Dim Allonalloff As Boolean
Dim Datalatch0 As Byte
Dim Datalatch1 As Byte
Dim Datalatch2 As Byte
Dim Datalatch3 As Byte
Dim Datalatch4 As Byte
Dim Datalatch5 As Byte
Dim Datalatch6 As Byte
Dim Datalatch7 As Byte
'***********************************************************************
'* Configurations 1
'***********************************************************************
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Pinb.3 = Input 'F1
Config Pinb.4 = Input 'F2
Config Portd.3 = Output 'Status
Config Pind.4 = Input 'F3
Config Pind.5 = Input 'F4
Config Portd.6 = Output 'Output Enable
Config Portd.7 = Output 'Error
Config Portc.0 = Output 'Layer0
Config Portc.1 = Output 'Layer1
Config Portc.2 = Output 'Layer2
Config Portc.3 = Output 'Layer3
Config Portc.4 = Output 'Layer4
Config Portc.5 = Output 'Layer5
Config Portc.6 = Output 'Layer6
Config Portc.7 = Output 'Layer7
Config Porta.0 = Output 'AVRPin_Data0
Config Porta.1 = Output 'AVRPin_Data1
Config Porta.2 = Output 'AVRPin_Data2
Config Porta.3 = Output 'AVRPin_Data3
Config Porta.4 = Output 'AVRPin_Data4
Config Porta.5 = Output 'AVRPin_Data5
Config Porta.6 = Output 'AVRPin_Data6
Config Porta.7 = Output 'AVRPin_Data7
Config Com1 = 38400 , Synchrone = 0 , Parity = None
, Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com1:" For Binary As #1 ' Sitzt auf
PE0 und PE1
'***********************************************************************
'* Aliases Definition
'***********************************************************************
Addr0 Alias Portb.0
Addr1 Alias Portb.1
Addr2 Alias Portb.2
Oe Alias Portd.6
Status Alias Portd.3
Layer0 Alias Portc.0
Layer1 Alias Portc.1
Layer2 Alias Portc.2
Layer3 Alias Portc.3
Layer4 Alias Portc.4
Layer5 Alias Portc.5
Layer6 Alias Portc.6
Layer7 Alias Portc.7
AVRPin_Data0 Alias Porta.0
AVRPin_Data1 Alias Porta.1
AVRPin_Data2 Alias Porta.2
AVRPin_Data3 Alias Porta.3
AVRPin_Data4 Alias Porta.4
AVRPin_Data5 Alias Porta.5
AVRPin_Data6 Alias Porta.6
AVRPin_Data7 Alias Porta.7
'***********************************************************************
'* Variables Preset
'***********************************************************************
Addr0 = 0 'Adresse voreinstellen -> Chip Select
Addr1 = 0
Addr2 = 0
Addr0 = 1
Addr1 = 1
Addr2 = 1
Layer0 = 0
Layer1 = 0
Layer2 = 0
Layer3 = 0
Layer4 = 0
Layer5 = 0
Layer6 = 0
Layer7 = 0
B_layer = 3
W_delaytime = 100
Oe = 0
'***********************************************************************
'* Program
'***********************************************************************
Gosub Dataalloff
Do 'Mainloop
'Porta = Rnd(255)
Call Seq_XLayer_Upwards(3 , 50)
Call Seq_YLayer_Upwards(3 , 50)
Call Seq_ZLayer_Upwards(3 , 50)
Call Seq_ZLayer_Random_Fill(100 , 10)
Call Seq_ZL_Slowed_Down_Rnd_Fill(1 , 50)
Gosub LED_Random_Fill
Call Machmallangsam(500)
Call Seq_ZL_Rain(1 , 100)
Led_Columns(0 , 0 ) .0 = 1
Call Machmallangsam(100)
'Led_Columns(0 , 0 ) .0 = 0 'index LED just for orientation
Gosub Dataalloff
Gosub Dataoutlineon
Call Machmallangsam(1000)
Loop
Sub Machmallangsam(ByVal Wieviel_ms as word)
Local Zaehler as byte
For Zaehler = 1 to Wieviel_mS
Waitms 1
next
end Sub
Sub Seq_ZL_Rain(ByVal StartSpeed as word , Byval Endspeed
as word)
Local Layer as byte
For Layer = 0 to 3
For Locxcount = 0 To 3
For Locycount = 0 To 3
Shift Led_Columns(locxcount , Locycount ) , Right
Next
Next
Gosub Led_ZLayer3_Off
Call Machmallangsam(1000)
next
End Sub
Sub Seq_ZL_Slowed_Down_Rnd_Fill(ByVal StartSpeed as
word , Byval Endspeed as word)
Local Zaehler as byte
Local Stepnr as single
For Zaehler = 1 to EndSpeed - Startspeed step 1
Stepnr = Zaehler / 4
Call Seq_ZLayer_Random_Fill(1 , Zaehler)
next
End Sub
Sub Seq_ZLayer_Random_Fill(ByVal Repeats as word ,
Byval Wieviel_ms as word)
Local Zaehler as byte
For Zaehler = 1 to Repeats
Gosub LED_Random_Fill
Call Machmallangsam(Wieviel_ms)
next
End Sub
Sub Seq_XLayer_Upwards(ByVal Repeats as word , Byval
Wieviel_ms as word)
Local Zaehler as byte
For Zaehler = 1 to Repeats
Gosub Led_XLayer0_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_XLayer0_Off
Gosub Led_XLayer1_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_XLayer1_Off
Gosub Led_XLayer2_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_XLayer2_Off
Gosub Led_XLayer3_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_XLayer3_Off
next
End Sub
Sub Seq_YLayer_Upwards(ByVal Repeats as word , Byval
Wieviel_ms as word)
Local Zaehler as byte
For Zaehler = 1 to Repeats
Gosub Led_YLayer0_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_YLayer0_Off
Gosub Led_YLayer1_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_YLayer1_Off
Gosub Led_YLayer2_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_YLayer2_Off
Gosub Led_YLayer3_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_YLayer3_Off
next
End Sub
Sub Seq_ZLayer_Upwards(ByVal Repeats as word , Byval
Wieviel_ms as word)
Local Zaehler as byte
For Zaehler = 1 to Repeats
Gosub Led_ZLayer0_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_ZLayer0_Off
Gosub Led_ZLayer1_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_ZLayer1_Off
Gosub Led_ZLayer2_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_ZLayer2_Off
Gosub Led_ZLayer3_On
Call Machmallangsam(Wieviel_ms)
Gosub Led_ZLayer3_Off
next
End Sub
LED_XLayer0_On:
Led_Columns(0 , 0 ) .0 = 1
Led_Columns(0 , 1 ) .0 = 1
Led_Columns(0 , 2 ) .0 = 1
Led_Columns(0 , 3 ) .0 = 1
Led_Columns(0 , 0 ) .1 = 1
Led_Columns(0 , 1 ) .1 = 1
Led_Columns(0 , 2 ) .1 = 1
Led_Columns(0 , 3 ) .1 = 1
Led_Columns(0 , 0 ) .2 = 1
Led_Columns(0 , 1 ) .2 = 1
Led_Columns(0 , 2 ) .2 = 1
Led_Columns(0 , 3 ) .2 = 1
Led_Columns(0 , 0 ) .3 = 1
Led_Columns(0 , 1 ) .3 = 1
Led_Columns(0 , 2 ) .3 = 1
Led_Columns(0 , 3 ) .3 = 1
Return
LED_XLayer0_Off:
Led_Columns(0 , 0 ) .0 = 0
Led_Columns(0 , 1 ) .0 = 0
Led_Columns(0 , 2 ) .0 = 0
Led_Columns(0 , 3 ) .0 = 0
Led_Columns(0 , 0 ) .1 = 0
Led_Columns(0 , 1 ) .1 = 0
Led_Columns(0 , 2 ) .1 = 0
Led_Columns(0 , 3 ) .1 = 0
Led_Columns(0 , 0 ) .2 = 0
Led_Columns(0 , 1 ) .2 = 0
Led_Columns(0 , 2 ) .2 = 0
Led_Columns(0 , 3 ) .2 = 0
Led_Columns(0 , 0 ) .3 = 0
Led_Columns(0 , 1 ) .3 = 0
Led_Columns(0 , 2 ) .3 = 0
Led_Columns(0 , 3 ) .3 = 0
Return
LED_XLayer1_On:
Led_Columns(1 , 0 ) .0 = 1
Led_Columns(1 , 1 ) .0 = 1
Led_Columns(1 , 2 ) .0 = 1
Led_Columns(1 , 3 ) .0 = 1
Led_Columns(1 , 0 ) .1 = 1
Led_Columns(1 , 1 ) .1 = 1
Led_Columns(1 , 2 ) .1 = 1
Led_Columns(1 , 3 ) .1 = 1
Led_Columns(1 , 0 ) .2 = 1
Led_Columns(1 , 1 ) .2 = 1
Led_Columns(1 , 2 ) .2 = 1
Led_Columns(1 , 3 ) .2 = 1
Led_Columns(1 , 0 ) .3 = 1
Led_Columns(1 , 1 ) .3 = 1
Led_Columns(1 , 2 ) .3 = 1
Led_Columns(1 , 3 ) .3 = 1
Return
LED_XLayer1_Off:
Led_Columns(1 , 0 ) .0 = 0
Led_Columns(1 , 1 ) .0 = 0
Led_Columns(1 , 2 ) .0 = 0
Led_Columns(1 , 3 ) .0 = 0
Led_Columns(1 , 0 ) .1 = 0
Led_Columns(1 , 1 ) .1 = 0
Led_Columns(1 , 2 ) .1 = 0
Led_Columns(1 , 3 ) .1 = 0
Led_Columns(1 , 0 ) .2 = 0
Led_Columns(1 , 1 ) .2 = 0
Led_Columns(1 , 2 ) .2 = 0
Led_Columns(1 , 3 ) .2 = 0
Led_Columns(1 , 0 ) .3 = 0
Led_Columns(1 , 1 ) .3 = 0
Led_Columns(1 , 2 ) .3 = 0
Led_Columns(1 , 3 ) .3 = 0
Return
LED_XLayer2_On:
Led_Columns(2 , 0 ) .0 = 1
Led_Columns(2 , 1 ) .0 = 1
Led_Columns(2 , 2 ) .0 = 1
Led_Columns(2 , 3 ) .0 = 1
Led_Columns(2 , 0 ) .1 = 1
Led_Columns(2 , 1 ) .1 = 1
Led_Columns(2 , 2 ) .1 = 1
Led_Columns(2 , 3 ) .1 = 1
Led_Columns(2 , 0 ) .2 = 1
Led_Columns(2 , 1 ) .2 = 1
Led_Columns(2 , 2 ) .2 = 1
Led_Columns(2 , 3 ) .2 = 1
Led_Columns(2 , 0 ) .3 = 1
Led_Columns(2 , 1 ) .3 = 1
Led_Columns(2 , 2 ) .3 = 1
Led_Columns(2 , 3 ) .3 = 1
Return
LED_XLayer2_Off:
Led_Columns(2 , 0 ) .0 = 0
Led_Columns(2 , 1 ) .0 = 0
Led_Columns(2 , 2 ) .0 = 0
Led_Columns(2 , 3 ) .0 = 0
Led_Columns(2 , 0 ) .1 = 0
Led_Columns(2 , 1 ) .1 = 0
Led_Columns(2 , 2 ) .1 = 0
Led_Columns(2 , 3 ) .1 = 0
Led_Columns(2 , 0 ) .2 = 0
Led_Columns(2 , 1 ) .2 = 0
Led_Columns(2 , 2 ) .2 = 0
Led_Columns(2 , 3 ) .2 = 0
Led_Columns(2 , 0 ) .3 = 0
Led_Columns(2 , 1 ) .3 = 0
Led_Columns(2 , 2 ) .3 = 0
Led_Columns(2 , 3 ) .3 = 0
Return
LED_XLayer3_On:
Led_Columns(3 , 0 ) .0 = 1
Led_Columns(3 , 1 ) .0 = 1
Led_Columns(3 , 2 ) .0 = 1
Led_Columns(3 , 3 ) .0 = 1
Led_Columns(3 , 0 ) .1 = 1
Led_Columns(3 , 1 ) .1 = 1
Led_Columns(3 , 2 ) .1 = 1
Led_Columns(3 , 3 ) .1 = 1
Led_Columns(3 , 0 ) .2 = 1
Led_Columns(3 , 1 ) .2 = 1
Led_Columns(3 , 2 ) .2 = 1
Led_Columns(3 , 3 ) .2 = 1
Led_Columns(3 , 0 ) .3 = 1
Led_Columns(3 , 1 ) .3 = 1
Led_Columns(3 , 2 ) .3 = 1
Led_Columns(3 , 3 ) .3 = 1
Return
LED_XLayer3_Off:
Led_Columns(3 , 0 ) .0 = 0
Led_Columns(3 , 1 ) .0 = 0
Led_Columns(3 , 2 ) .0 = 0
Led_Columns(3 , 3 ) .0 = 0
Led_Columns(3 , 0 ) .1 = 0
Led_Columns(3 , 1 ) .1 = 0
Led_Columns(3 , 2 ) .1 = 0
Led_Columns(3 , 3 ) .1 = 0
Led_Columns(3 , 0 ) .2 = 0
Led_Columns(3 , 1 ) .2 = 0
Led_Columns(3 , 2 ) .2 = 0
Led_Columns(3 , 3 ) .2 = 0
Led_Columns(3 , 0 ) .3 = 0
Led_Columns(3 , 1 ) .3 = 0
Led_Columns(3 , 2 ) .3 = 0
Led_Columns(3 , 3 ) .3 = 0
Return
LED_YLayer0_On:
Led_Columns(0 , 0 ) .0 = 1
Led_Columns(1 , 0 ) .0 = 1
Led_Columns(2 , 0 ) .0 = 1
Led_Columns(3 , 0 ) .0 = 1
Led_Columns(0 , 0 ) .1 = 1
Led_Columns(1 , 0 ) .1 = 1
Led_Columns(2 , 0 ) .1 = 1
Led_Columns(3 , 0 ) .1 = 1
Led_Columns(0 , 0 ) .2 = 1
Led_Columns(1 , 0 ) .2 = 1
Led_Columns(2 , 0 ) .2 = 1
Led_Columns(3 , 0 ) .2 = 1
Led_Columns(0 , 0 ) .3 = 1
Led_Columns(1 , 0 ) .3 = 1
Led_Columns(2 , 0 ) .3 = 1
Led_Columns(3 , 0 ) .3 = 1
Return
LED_YLayer0_Off:
Led_Columns(0 , 0 ) .0 = 0
Led_Columns(1 , 0 ) .0 = 0
Led_Columns(2 , 0 ) .0 = 0
Led_Columns(3 , 0 ) .0 = 0
Led_Columns(0 , 0 ) .1 = 0
Led_Columns(1 , 0 ) .1 = 0
Led_Columns(2 , 0 ) .1 = 0
Led_Columns(3 , 0 ) .1 = 0
Led_Columns(0 , 0 ) .2 = 0
Led_Columns(1 , 0 ) .2 = 0
Led_Columns(2 , 0 ) .2 = 0
Led_Columns(3 , 0 ) .2 = 0
Led_Columns(0 , 0 ) .3 = 0
Led_Columns(1 , 0 ) .3 = 0
Led_Columns(2 , 0 ) .3 = 0
Led_Columns(3 , 0 ) .3 = 0
Return
LED_YLayer1_On:
Led_Columns(0 , 1 ) .0 = 1
Led_Columns(1 , 1 ) .0 = 1
Led_Columns(2 , 1 ) .0 = 1
Led_Columns(3 , 1 ) .0 = 1
Led_Columns(0 , 1 ) .1 = 1
Led_Columns(1 , 1 ) .1 = 1
Led_Columns(2 , 1 ) .1 = 1
Led_Columns(3 , 1 ) .1 = 1
Led_Columns(0 , 1 ) .2 = 1
Led_Columns(1 , 1 ) .2 = 1
Led_Columns(2 , 1 ) .2 = 1
Led_Columns(3 , 1 ) .2 = 1
Led_Columns(0 , 1 ) .3 = 1
Led_Columns(1 , 1 ) .3 = 1
Led_Columns(2 , 1 ) .3 = 1
Led_Columns(3 , 1 ) .3 = 1
Return
LED_YLayer1_Off:
Led_Columns(0 , 1 ) .0 = 0
Led_Columns(1 , 1 ) .0 = 0
Led_Columns(2 , 1 ) .0 = 0
Led_Columns(3 , 1 ) .0 = 0
Led_Columns(0 , 1 ) .1 = 0
Led_Columns(1 , 1 ) .1 = 0
Led_Columns(2 , 1 ) .1 = 0
Led_Columns(3 , 1 ) .1 = 0
Led_Columns(0 , 1 ) .2 = 0
Led_Columns(1 , 1 ) .2 = 0
Led_Columns(2 , 1 ) .2 = 0
Led_Columns(3 , 1 ) .2 = 0
Led_Columns(0 , 1 ) .3 = 0
Led_Columns(1 , 1 ) .3 = 0
Led_Columns(2 , 1 ) .3 = 0
Led_Columns(3 , 1 ) .3 = 0
Return
LED_YLayer2_On:
Led_Columns(0 , 2 ) .0 = 1
Led_Columns(1 , 2 ) .0 = 1
Led_Columns(2 , 2 ) .0 = 1
Led_Columns(3 , 2 ) .0 = 1
Led_Columns(0 , 2 ) .1 = 1
Led_Columns(1 , 2 ) .1 = 1
Led_Columns(2 , 2 ) .1 = 1
Led_Columns(3 , 2 ) .1 = 1
Led_Columns(0 , 2 ) .2 = 1
Led_Columns(1 , 2 ) .2 = 1
Led_Columns(2 , 2 ) .2 = 1
Led_Columns(3 , 2 ) .2 = 1
Led_Columns(0 , 2 ) .3 = 1
Led_Columns(1 , 2 ) .3 = 1
Led_Columns(2 , 2 ) .3 = 1
Led_Columns(3 , 2 ) .3 = 1
Return
LED_YLayer2_Off:
Led_Columns(0 , 2 ) .0 = 0
Led_Columns(1 , 2 ) .0 = 0
Led_Columns(2 , 2 ) .0 = 0
Led_Columns(3 , 2 ) .0 = 0
Led_Columns(0 , 2 ) .1 = 0
Led_Columns(1 , 2 ) .1 = 0
Led_Columns(2 , 2 ) .1 = 0
Led_Columns(3 , 2 ) .1 = 0
Led_Columns(0 , 2 ) .2 = 0
Led_Columns(1 , 2 ) .2 = 0
Led_Columns(2 , 2 ) .2 = 0
Led_Columns(3 , 2 ) .2 = 0
Led_Columns(0 , 2 ) .3 = 0
Led_Columns(1 , 2 ) .3 = 0
Led_Columns(2 , 2 ) .3 = 0
Led_Columns(3 , 2 ) .3 = 0
Return
LED_YLayer3_On:
Led_Columns(0 , 3 ) .0 = 1
Led_Columns(1 , 3 ) .0 = 1
Led_Columns(2 , 3 ) .0 = 1
Led_Columns(3 , 3 ) .0 = 1
Led_Columns(0 , 3 ) .1 = 1
Led_Columns(1 , 3 ) .1 = 1
Led_Columns(2 , 3 ) .1 = 1
Led_Columns(3 , 3 ) .1 = 1
Led_Columns(0 , 3 ) .2 = 1
Led_Columns(1 , 3 ) .2 = 1
Led_Columns(2 , 3 ) .2 = 1
Led_Columns(3 , 3 ) .2 = 1
Led_Columns(0 , 3 ) .3 = 1
Led_Columns(1 , 3 ) .3 = 1
Led_Columns(2 , 3 ) .3 = 1
Led_Columns(3 , 3 ) .3 = 1
Return
LED_YLayer3_Off:
Led_Columns(0 , 3 ) .0 = 0
Led_Columns(1 , 3 ) .0 = 0
Led_Columns(2 , 3 ) .0 = 0
Led_Columns(3 , 3 ) .0 = 0
Led_Columns(0 , 3 ) .1 = 0
Led_Columns(1 , 3 ) .1 = 0
Led_Columns(2 , 3 ) .1 = 0
Led_Columns(3 , 3 ) .1 = 0
Led_Columns(0 , 3 ) .2 = 0
Led_Columns(1 , 3 ) .2 = 0
Led_Columns(2 , 3 ) .2 = 0
Led_Columns(3 , 3 ) .2 = 0
Led_Columns(0 , 3 ) .3 = 0
Led_Columns(1 , 3 ) .3 = 0
Led_Columns(2 , 3 ) .3 = 0
Led_Columns(3 , 3 ) .3 = 0
Return
LED_ZLayer0_On:
Led_Columns(0 , 0 ) .0 = 1
Led_Columns(0 , 1 ) .0 = 1
Led_Columns(0 , 2 ) .0 = 1
Led_Columns(0 , 3 ) .0 = 1
Led_Columns(1 , 0 ) .0 = 1
Led_Columns(1 , 1 ) .0 = 1
Led_Columns(1 , 2 ) .0 = 1
Led_Columns(1 , 3 ) .0 = 1
Led_Columns(2 , 0 ) .0 = 1
Led_Columns(2 , 1 ) .0 = 1
Led_Columns(2 , 2 ) .0 = 1
Led_Columns(2 , 3 ) .0 = 1
Led_Columns(3 , 0 ) .0 = 1
Led_Columns(3 , 1 ) .0 = 1
Led_Columns(3 , 2 ) .0 = 1
Led_Columns(3 , 3 ) .0 = 1
Return
LED_ZLayer0_Off:
Led_Columns(0 , 0 ) .0 = 0
Led_Columns(0 , 1 ) .0 = 0
Led_Columns(0 , 2 ) .0 = 0
Led_Columns(0 , 3 ) .0 = 0
Led_Columns(1 , 0 ) .0 = 0
Led_Columns(1 , 1 ) .0 = 0
Led_Columns(1 , 2 ) .0 = 0
Led_Columns(1 , 3 ) .0 = 0
Led_Columns(2 , 0 ) .0 = 0
Led_Columns(2 , 1 ) .0 = 0
Led_Columns(2 , 2 ) .0 = 0
Led_Columns(2 , 3 ) .0 = 0
Led_Columns(3 , 0 ) .0 = 0
Led_Columns(3 , 1 ) .0 = 0
Led_Columns(3 , 2 ) .0 = 0
Led_Columns(3 , 3 ) .0 = 0
Return
LED_ZLayer1_On:
Led_Columns(0 , 0 ) .1 = 1
Led_Columns(0 , 1 ) .1 = 1
Led_Columns(0 , 2 ) .1 = 1
Led_Columns(0 , 3 ) .1 = 1
Led_Columns(1 , 0 ) .1 = 1
Led_Columns(1 , 1 ) .1 = 1
Led_Columns(1 , 2 ) .1 = 1
Led_Columns(1 , 3 ) .1 = 1
Led_Columns(2 , 0 ) .1 = 1
Led_Columns(2 , 1 ) .1 = 1
Led_Columns(2 , 2 ) .1 = 1
Led_Columns(2 , 3 ) .1 = 1
Led_Columns(3 , 0 ) .1 = 1
Led_Columns(3 , 1 ) .1 = 1
Led_Columns(3 , 2 ) .1 = 1
Led_Columns(3 , 3 ) .1 = 1
Return
LED_ZLayer1_Off:
Led_Columns(0 , 0 ) .1 = 0
Led_Columns(0 , 1 ) .1 = 0
Led_Columns(0 , 2 ) .1 = 0
Led_Columns(0 , 3 ) .1 = 0
Led_Columns(1 , 0 ) .1 = 0
Led_Columns(1 , 1 ) .1 = 0
Led_Columns(1 , 2 ) .1 = 0
Led_Columns(1 , 3 ) .1 = 0
Led_Columns(2 , 0 ) .1 = 0
Led_Columns(2 , 1 ) .1 = 0
Led_Columns(2 , 2 ) .1 = 0
Led_Columns(2 , 3 ) .1 = 0
Led_Columns(3 , 0 ) .1 = 0
Led_Columns(3 , 1 ) .1 = 0
Led_Columns(3 , 2 ) .1 = 0
Led_Columns(3 , 3 ) .1 = 0
Return
LED_ZLayer2_On:
Led_Columns(0 , 0 ) .2 = 1
Led_Columns(0 , 1 ) .2 = 1
Led_Columns(0 , 2 ) .2 = 1
Led_Columns(0 , 3 ) .2 = 1
Led_Columns(1 , 0 ) .2 = 1
Led_Columns(1 , 1 ) .2 = 1
Led_Columns(1 , 2 ) .2 = 1
Led_Columns(1 , 3 ) .2 = 1
Led_Columns(2 , 0 ) .2 = 1
Led_Columns(2 , 1 ) .2 = 1
Led_Columns(2 , 2 ) .2 = 1
Led_Columns(2 , 3 ) .2 = 1
Led_Columns(3 , 0 ) .2 = 1
Led_Columns(3 , 1 ) .2 = 1
Led_Columns(3 , 2 ) .2 = 1
Led_Columns(3 , 3 ) .2 = 1
Return
LED_ZLayer2_Off:
Led_Columns(0 , 0 ) .2 = 0
Led_Columns(0 , 1 ) .2 = 0
Led_Columns(0 , 2 ) .2 = 0
Led_Columns(0 , 3 ) .2 = 0
Led_Columns(1 , 0 ) .2 = 0
Led_Columns(1 , 1 ) .2 = 0
Led_Columns(1 , 2 ) .2 = 0
Led_Columns(1 , 3 ) .2 = 0
Led_Columns(2 , 0 ) .2 = 0
Led_Columns(2 , 1 ) .2 = 0
Led_Columns(2 , 2 ) .2 = 0
Led_Columns(2 , 3 ) .2 = 0
Led_Columns(3 , 0 ) .2 = 0
Led_Columns(3 , 1 ) .2 = 0
Led_Columns(3 , 2 ) .2 = 0
Led_Columns(3 , 3 ) .2 = 0
Return
LED_ZLayer3_On:
Led_Columns(0 , 0 ) .3 = 1
Led_Columns(0 , 1 ) .3 = 1
Led_Columns(0 , 2 ) .3 = 1
Led_Columns(0 , 3 ) .3 = 1
Led_Columns(1 , 0 ) .3 = 1
Led_Columns(1 , 1 ) .3 = 1
Led_Columns(1 , 2 ) .3 = 1
Led_Columns(1 , 3 ) .3 = 1
Led_Columns(2 , 0 ) .3 = 1
Led_Columns(2 , 1 ) .3 = 1
Led_Columns(2 , 2 ) .3 = 1
Led_Columns(2 , 3 ) .3 = 1
Led_Columns(3 , 0 ) .3 = 1
Led_Columns(3 , 1 ) .3 = 1
Led_Columns(3 , 2 ) .3 = 1
Led_Columns(3 , 3 ) .3 = 1
Return
LED_ZLayer3_Off:
Led_Columns(0 , 0 ) .3 = 0
Led_Columns(0 , 1 ) .3 = 0
Led_Columns(0 , 2 ) .3 = 0
Led_Columns(0 , 3 ) .3 = 0
Led_Columns(1 , 0 ) .3 = 0
Led_Columns(1 , 1 ) .3 = 0
Led_Columns(1 , 2 ) .3 = 0
Led_Columns(1 , 3 ) .3 = 0
Led_Columns(2 , 0 ) .3 = 0
Led_Columns(2 , 1 ) .3 = 0
Led_Columns(2 , 2 ) .3 = 0
Led_Columns(2 , 3 ) .3 = 0
Led_Columns(3 , 0 ) .3 = 0
Led_Columns(3 , 1 ) .3 = 0
Led_Columns(3 , 2 ) .3 = 0
Led_Columns(3 , 3 ) .3 = 0
Return
'***********************************************************************
'* Sub : All On
'***********************************************************************
Dataallon:
For Locxcount = 0 To 3
For Locycount = 0 To 3
Led_Columns(locxcount , Locycount ) = 255
Next
Next
Return
'***********************************************************************
'* Sub : All Off (Clear)
'***********************************************************************
Dataalloff:
For Locxcount = 0 To 3
For Locycount = 0 To 3
Led_Columns(locxcount , Locycount ) = 0
Next
Next
Return
'***********************************************************************
'* Sub : All Random Fill
'***********************************************************************
LED_Random_Fill:
For Locxcount = 0 To 3
For Locycount = 0 To 3
Led_Columns(locxcount , Locycount ) = Rnd(255)
Next
Next
Return
'***********************************************************************
'* Sub : OutLine
'***********************************************************************
Dataoutlineon:
Led_Columns(0 , 0 ) .0 = 1
Led_Columns(0 , 1 ) .0 = 1
Led_Columns(0 , 2 ) .0 = 1
Led_Columns(0 , 3 ) .0 = 1
Led_Columns(1 , 0 ) .0 = 1
Led_Columns(1 , 1 ) .0 = 0
Led_Columns(1 , 2 ) .0 = 0
Led_Columns(1 , 3 ) .0 = 1
Led_Columns(2 , 0 ) .0 = 1
Led_Columns(2 , 1 ) .0 = 0
Led_Columns(2 , 2 ) .0 = 0
Led_Columns(2 , 3 ) .0 = 1
Led_Columns(3 , 0 ) .0 = 1
Led_Columns(3 , 1 ) .0 = 1
Led_Columns(3 , 2 ) .0 = 1
Led_Columns(3 , 3 ) .0 = 1
Led_Columns(0 , 0 ) .1 = 1
Led_Columns(0 , 1 ) .1 = 0
Led_Columns(0 , 2 ) .1 = 0
Led_Columns(0 , 3 ) .1 = 1
Led_Columns(1 , 0 ) .1 = 0
Led_Columns(1 , 1 ) .1 = 0
Led_Columns(1 , 2 ) .1 = 0
Led_Columns(1 , 3 ) .1 = 0
Led_Columns(2 , 0 ) .1 = 0
Led_Columns(2 , 1 ) .1 = 0
Led_Columns(2 , 2 ) .1 = 0
Led_Columns(2 , 3 ) .1 = 0
Led_Columns(3 , 0 ) .1 = 1
Led_Columns(3 , 1 ) .1 = 0
Led_Columns(3 , 2 ) .1 = 0
Led_Columns(3 , 3 ) .1 = 1
Led_Columns(0 , 0 ) .2 = 1
Led_Columns(0 , 1 ) .2 = 0
Led_Columns(0 , 2 ) .2 = 0
Led_Columns(0 , 3 ) .2 = 1
Led_Columns(1 , 0 ) .2 = 0
Led_Columns(1 , 1 ) .2 = 0
Led_Columns(1 , 2 ) .2 = 0
Led_Columns(1 , 3 ) .2 = 0
Led_Columns(2 , 0 ) .2 = 0
Led_Columns(2 , 1 ) .2 = 0
Led_Columns(2 , 2 ) .2 = 0
Led_Columns(2 , 3 ) .2 = 0
Led_Columns(3 , 0 ) .2 = 1
Led_Columns(3 , 1 ) .2 = 0
Led_Columns(3 , 2 ) .2 = 0
Led_Columns(3 , 3 ) .2 = 1
Led_Columns(0 , 0 ) .3 = 1
Led_Columns(0 , 1 ) .3 = 1
Led_Columns(0 , 2 ) .3 = 1
Led_Columns(0 , 3 ) .3 = 1
Led_Columns(1 , 0 ) .3 = 1
Led_Columns(1 , 1 ) .3 = 0
Led_Columns(1 , 2 ) .3 = 0
Led_Columns(1 , 3 ) .3 = 1
Led_Columns(2 , 0 ) .3 = 1
Led_Columns(2 , 1 ) .3 = 0
Led_Columns(2 , 2 ) .3 = 0
Led_Columns(2 , 3 ) .3 = 1
Led_Columns(3 , 0 ) .3 = 1
Led_Columns(3 , 1 ) .3 = 1
Led_Columns(3 , 2 ) .3 = 1
Led_Columns(3 , 3 ) .3 = 1
Return
'***********************************************************************
'* Sub :
'***********************************************************************
Dataoutlineoff_2:
Gosub Dataalloff
Led_Columns(0 , 0 ) .0 = 0
Led_Columns(0 , 1 ) .0 = 0
Led_Columns(0 , 2 ) .0 = 0
Led_Columns(0 , 3 ) .0 = 0
Led_Columns(1 , 0 ) .0 = 0
Led_Columns(1 , 1 ) .0 = 0
Led_Columns(1 , 2 ) .0 = 0
Led_Columns(1 , 3 ) .0 = 0
Led_Columns(2 , 0 ) .0 = 0
Led_Columns(2 , 1 ) .0 = 0
Led_Columns(2 , 2 ) .0 = 0
Led_Columns(2 , 3 ) .0 = 0
Led_Columns(3 , 0 ) .0 = 0
Led_Columns(3 , 1 ) .0 = 0
Led_Columns(3 , 2 ) .0 = 0
Led_Columns(3 , 3 ) .0 = 0
Led_Columns(0 , 0 ) .1 = 0
Led_Columns(0 , 1 ) .1 = 0
Led_Columns(0 , 2 ) .1 = 0
Led_Columns(0 , 3 ) .1 = 0
Led_Columns(1 , 0 ) .1 = 0
Led_Columns(1 , 1 ) .1 = 0
Led_Columns(1 , 2 ) .1 = 0
Led_Columns(1 , 3 ) .1 = 0
Led_Columns(2 , 0 ) .1 = 0
Led_Columns(2 , 1 ) .1 = 0
Led_Columns(2 , 2 ) .1 = 0
Led_Columns(2 , 3 ) .1 = 0
Led_Columns(3 , 0 ) .1 = 0
Led_Columns(3 , 1 ) .1 = 0
Led_Columns(3 , 2 ) .1 = 0
Led_Columns(3 , 3 ) .1 = 0
Led_Columns(0 , 0 ) .2 = 0
Led_Columns(0 , 1 ) .2 = 0
Led_Columns(0 , 2 ) .2 = 0
Led_Columns(0 , 3 ) .2 = 0
Led_Columns(1 , 0 ) .2 = 0
Led_Columns(1 , 1 ) .2 = 0
Led_Columns(1 , 2 ) .2 = 0
Led_Columns(1 , 3 ) .2 = 0
Led_Columns(2 , 0 ) .2 = 0
Led_Columns(2 , 1 ) .2 = 0
Led_Columns(2 , 2 ) .2 = 0
Led_Columns(2 , 3 ) .2 = 0
Led_Columns(3 , 0 ) .2 = 0
Led_Columns(3 , 1 ) .2 = 0
Led_Columns(3 , 2 ) .2 = 0
Led_Columns(3 , 3 ) .2 = 0
Led_Columns(0 , 0 ) .3 = 0
Led_Columns(0 , 1 ) .3 = 0
Led_Columns(0 , 2 ) .3 = 0
Led_Columns(0 , 3 ) .3 = 0
Led_Columns(1 , 0 ) .3 = 0
Led_Columns(1 , 1 ) .3 = 0
Led_Columns(1 , 2 ) .3 = 0
Led_Columns(1 , 3 ) .3 = 0
Led_Columns(2 , 0 ) .3 = 0
Led_Columns(2 , 1 ) .3 = 0
Led_Columns(2 , 2 ) .3 = 0
Led_Columns(2 , 3 ) .3 = 0
Led_Columns(3 , 0 ) .3 = 0
Led_Columns(3 , 1 ) .3 = 0
Led_Columns(3 , 2 ) .3 = 0
Led_Columns(3 , 3 ) .3 = 0
Return
'***********************************************************************
'*Serial0charmatch()
'***********************************************************************
Sub Serial0charmatch()
Local Incoming_data As String * 30
'Daten vom Buffer auslesen
Input Incoming_data Noecho
'Ausgelesene Daten zurück schicken
Print Incoming_data
End Sub
'***********************************************************************
'* Sub : Update Data Latch Buffer
'***********************************************************************
Updatedatalatchbuffer:
Datalatch0.0 = Led_Columns(0 , 0 ) .b_layer
Datalatch0.1 = Led_Columns(0 , 1 ) .b_layer
Datalatch0.2 = Led_Columns(0 , 2 ) .b_layer
Datalatch0.3 = Led_Columns(0 , 3 ) .b_layer
Datalatch0.4 = Led_Columns(1 , 0 ) .b_layer
Datalatch0.5 = Led_Columns(1 , 1 ) .b_layer
Datalatch0.6 = Led_Columns(1 , 2 ) .b_layer
Datalatch0.7 = Led_Columns(1 , 3 ) .b_layer
Datalatch1.0 = Led_Columns(2 , 0 ) .b_layer
Datalatch1.1 = Led_Columns(2 , 1 ) .b_layer
Datalatch1.2 = Led_Columns(2 , 2 ) .b_layer
Datalatch1.3 = Led_Columns(2 , 3 ) .b_layer
Datalatch1.4 = Led_Columns(3 , 0 ) .b_layer
Datalatch1.5 = Led_Columns(3 , 1 ) .b_layer
Datalatch1.6 = Led_Columns(3 , 2 ) .b_layer
Datalatch1.7 = Led_Columns(3 , 3 ) .b_layer
Return
'***********************************************************************
'* Sub : LoadData
'***********************************************************************
Loaddata:
Gosub Updatedatalatchbuffer
' Outenable = 1
'Output ausschalten
Addr0 = 0
Addr1 = 0
Addr2 = 0
'Datalatch0
'Datalatch1
Porta = Datalatch0
'select Chip1
'Chip0 uebernimmt daten wenn Chipselect high wird,
also deselektiert wird
Addr0 = 1
Addr1 = 0
Addr2 = 0
Porta = Datalatch1
'select Chip2
'Chip1 uebernimmt daten wenn Chipselect high wird,
also deselektiert wird
Addr0 = 1
Addr1 = 1
Addr2 = 1
'Outenable = 0 'Output Einschalten
Return
'***********************************************************************
'* ISR : Interrupt Service Routine
'***********************************************************************
Isr_von_timer0:
Oe = 1 'Output ausschalten
Incr B_layer
If B_layer = 4 Then
B_layer = 0
End If
If B_layer = 0 Then
Gosub Loaddata
Layer0 = 1
Layer1 = 0
Layer2 = 0
Layer3 = 0
End If
If B_layer = 1 Then
Gosub Loaddata
Layer0 = 0
Layer1 = 1
Layer2 = 0
Layer3 = 0
End If
If B_layer = 2 Then
Gosub Loaddata
Layer0 = 0
Layer1 = 0
Layer2 = 1
Layer3 = 0
End If
If B_layer = 3 Then
Gosub Loaddata
Layer0 = 0
Layer1 = 0
Layer2 = 0
Layer3 = 1
End If
OE = 0 'Output Einschalten
Return |