'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Filename : LED-MATRIX 8*8                                                 '
' Revision : 1.0                                                            '
' Controller : AT90S2313/TINY2313                                           '
' Compiler: BASCOM-AVR 1.11.9.1 DEMO                                        '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'$regfile = "2313def.dat"
$regfile = "attiny2313.dat"

$crystal = 8000000
Config Portb = Output
Config Portd.= Output
Config Portd.= Output
Config Portd.= Output
Config Portd.= Input                                      '  s1
Config Portd.= Input                                      '  s2
Config Portd.= Input                                      '  s3
Config Portd.= Input                                      '  s4
'
Dim S As Byte                                               'Variable speed
Dim E As Byte                                               'variable effect
Dim Delta_t As Byte                                         'Delta time
Dim Spedtek As Byte                                         'current speed
Dim Data_out As Byte                                        'imprint in port
Dim Shag_effect As Byte                                     'step effect
Dim Shag_max As Byte                                        'maximum step effect
Dim D As Word
Dim Flag_effect As Byte
Dim Flag_speed As Byte
Dim Fs As Byte
Dim Ef As Byte
= 7
Spedtek = Lookup(, Speders)
Shag_effect = 0
Shag_max = 8
= 1
= 0

Do


Portd = &H00
Gosub Outdata
Portd = &H04
Gosub Outdata
Portd = &H08
Gosub Outdata
Portd = &H0C
Gosub Outdata
Portd = &H10
Gosub Outdata
Portd = &H14
Gosub Outdata
Portd = &H18
Gosub Outdata
Portd = &H1C
Gosub Outdata

Incr Delta_t                                                'Increase delta time
If Delta_t = Spedtek Then                                   'If the time delta is the current speed, the
Incr Shag_effect                                            'increasing current step effect
Delta_t = 0                                                 'delta time zero
End If

If Shag_effect = Shag_max Then
Shag_effect = Shag_max - 8

  If Flag_speed = 1 Then
   Incr Fs
   If Fs = 24 Then Fs = 1
   Spedtek = Lookup(fs , Speders)
  End If

  If Flag_effect = 1 Then
   Incr Ef
   If Ef = 8 Then
   Ef = 1
   Incr E
   If E > 12 Then E = 1
    Shag_max = E * 8                                        'The maximum step is equal to the number effect, multiplied by 8
    Shag_effect = Shag_max - 8                              'Step effect is equal to the maximum step minus 8
    End If
   End If
End If

= Shag_effect * 8
'
Debounce Pind., 0 , Plus_speed , Sub
Debounce Pind., 0 , Minus_speed , Sub
Debounce Pind., 0 , Plus_effect , Sub
Debounce Pind., 0 , Minus_effect , Sub
If Pind.= 0 And Pind.= 0 Then Flag_speed = 1
If Pind.= 0 And Pind.= 0 Then Flag_effect = 1
'
Loop
'
Outdata:
Data_out = Lookup(, Effekt)
Portb = Data_out
= D + 1
Waitms 1
Portb = &H00
Return
'
Plus_speed:
Incr S
If S > 11 Then S = 11
Spedtek = Lookup(, Speders)
Delta_t = 0
Flag_speed = 0
Return
'
Minus_speed:
Decr S
If S < 1 Then S = 1
Spedtek = Lookup(, Speders)
Delta_t = 0
Flag_speed = 0
Return
'
Plus_effect:
Incr E
If E > 12 Then E = 12
Shag_max = E * 8                                            'The maximum step is equal to the number effect, multiplied by 8
Shag_effect = Shag_max - 8                                  'Step effect is equal to the maximum step minus 8
Flag_effect = 0
Return
'
Minus_effect:
Decr E
If E < 1 Then E = 1
Shag_max = E * 8                                            'The maximum step is equal to the number effect, multiplied by 8
Shag_effect = Shag_max - 8                                  'Step effect is equal to the maximum step minus 8
Flag_effect = 0
Return



Speders:
Data 1 , 2 , 3 , 4 , 6 , 9 , 13 , 18 , 24 , 31 , 39 , 50 , 70 , 50 , 39 , 31 , 24 , 18 , 13 , 9 , 6 , 4 , 3 , 2 , 1
'
Effekt:
'
Data &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00
Data &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00
Data &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00
Data &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF
Data &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00
Data &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00
Data &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00
Data &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF
'
Data &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF
Data &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00
Data &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00
Data &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00
Data &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF
Data &H00 , &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00
Data &H00 , &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00
Data &HFF , &H00 , &H00 , &H00 , &HFF , &H00 , &H00 , &H00
'
Data &H01 , &H01 , &H01 , &H01 , &H01 , &H01 , &H01 , &H01
Data &H02 , &H02 , &H02 , &H02 , &H02 , &H02 , &H02 , &H02
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04
Data &H08 , &H08 , &H08 , &H08 , &H08 , &H08 , &H08 , &H08
Data &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10
Data &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20
Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40
Data &H80 , &H80 , &H80 , &H80 , &H80 , &H80 , &H80 , &H80
'
Data &H80 , &H80 , &H80 , &H80 , &H80 , &H80 , &H80 , &H80
Data &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40 , &H40
Data &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20 , &H20
Data &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10
Data &H08 , &H08 , &H08 , &H08 , &H08 , &H08 , &H08 , &H08
Data &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04 , &H04
Data &H02 , &H02 , &H02 , &H02 , &H02 , &H02 , &H02 , &H02
Data &H01 , &H01 , &H01 , &H01 , &H01 , &H01 , &H01 , &H01
'
Data &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80
Data &H80 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20 , &H40
Data &H40 , &H80 , &H01 , &H02 , &H04 , &H08 , &H10 , &H20
Data &H20 , &H40 , &H80 , &H01 , &H02 , &H04 , &H08 , &H10
Data &H10 , &H20 , &H40 , &H80 , &H01 , &H02 , &H04 , &H08
Data &H08 , &H10 , &H20 , &H40 , &H80 , &H01 , &H02 , &H04
Data &H04 , &H08 , &H10 , &H20 , &H40 , &H80 , &H01 , &H02
Data &H02 , &H04 , &H08 , &H10 , &H20 , &H40 , &H80 , &H01
'
Data &H80 , &H40 , &H20 , &H10 , &H08 , &H04 , &H02 , &H01
Data &H40 , &H20 , &H10 , &H08 , &H04 , &H02 , &H01 , &H80
Data &H20 , &H10 , &H08 , &H04 , &H02 , &H01 , &H80 , &H40
Data &H10 , &H08 , &H04 , &H02 , &H01 , &H80 , &H40 , &H20
Data &H08 , &H04 , &H02 , &H01 , &H80 , &H40 , &H20 , &H10
Data &H04 , &H02 , &H01 , &H80 , &H40 , &H20 , &H10 , &H08
Data &H02 , &H01 , &H80 , &H40 , &H20 , &H10 , &H08 , &H04
Data &H01 , &H80 , &H40 , &H20 , &H10 , &H08 , &H04 , &H02
'
Data &H01 , &H80 , &H01 , &H80 , &H01 , &H80 , &H01 , &H80
Data &H02 , &H40 , &H02 , &H40 , &H02 , &H40 , &H02 , &H40
Data &H04 , &H20 , &H04 , &H20 , &H04 , &H20 , &H04 , &H20
Data &H08 , &H10 , &H08 , &H10 , &H08 , &H10 , &H08 , &H10
Data &H10 , &H08 , &H10 , &H08 , &H10 , &H08 , &H10 , &H08
Data &H20 , &H04 , &H20 , &H04 , &H20 , &H04 , &H20 , &H04
Data &H40 , &H02 , &H40 , &H02 , &H40 , &H02 , &H40 , &H02
Data &H80 , &H01 , &H80 , &H01 , &H80 , &H01 , &H80 , &H01
'
Data &H80 , &H01 , &H80 , &H01 , &H80 , &H01 , &H80 , &H01
Data &H40 , &H02 , &H40 , &H02 , &H40 , &H02 , &H40 , &H02
Data &H20 , &H04 , &H20 , &H04 , &H20 , &H04 , &H20 , &H04
Data &H10 , &H08 , &H10 , &H08 , &H10 , &H08 , &H10 , &H08
Data &H08 , &H10 , &H08 , &H10 , &H08 , &H10 , &H08 , &H10
Data &H04 , &H20 , &H04 , &H20 , &H04 , &H20 , &H04 , &H20
Data &H02 , &H40 , &H02 , &H40 , &H02 , &H40 , &H02 , &H40
Data &H01 , &H80 , &H01 , &H80 , &H01 , &H80 , &H01 , &H80
'
Data &H01 , &H01 , &H01 , &H01 , &H80 , &H80 , &H80 , &H80
Data &H02 , &H02 , &H02 , &H02 , &H40 , &H40 , &H40 , &H40
Data &H04 , &H04 , &H04 , &H04 , &H20 , &H20 , &H20 , &H20
Data &H08 , &H08 , &H08 , &H08 , &H10 , &H10 , &H10 , &H10
Data &H10 , &H10 , &H10 , &H10 , &H08 , &H08 , &H08 , &H08
Data &H20 , &H20 , &H20 , &H20 , &H04 , &H04 , &H04 , &H04
Data &H40 , &H40 , &H40 , &H40 , &H02 , &H02 , &H02 , &H02
Data &H80 , &H80 , &H80 , &H80 , &H01 , &H01 , &H01 , &H01
'
Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF
Data &H7F , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F , &H7F
Data &H3F , &H3F , &H3F , &H3F , &H3F , &H3F , &H3F , &H3F
Data &H1F , &H1F , &H1F , &H1F , &H1F , &H1F , &H1F , &H1F
Data &H0F , &H0F , &H0F , &H0F , &H0F , &H0F , &H0F , &H0F
Data &H07 , &H07 , &H07 , &H07 , &H07 , &H07 , &H07 , &H07
Data &H03 , &H03 , &H03 , &H03 , &H03 , &H03 , &H03 , &H03
Data &H01 , &H01 , &H01 , &H01 , &H01 , &H01 , &H01 , &H01
'
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00
Data &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10 , &H10
Data &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30 , &H30
Data &H70 , &H70 , &H70 , &H70 , &H70 , &H70 , &H70 , &H70
Data &HF0 , &HF0 , &HF0 , &HF0 , &HF0 , &HF0 , &HF0 , &HF0
Data &HF1 , &HF1 , &HF1 , &HF1 , &HF1 , &HF1 , &HF1 , &HF1
Data &HF3 , &HF3 , &HF3 , &HF3 , &HF3 , &HF3 , &HF3 , &HF3
Data &HF7 , &HF7 , &HF7 , &HF7 , &HF7 , &HF7 , &HF7 , &HF7
'
Data &H00 , &HFF , &HFF , &HFF , &H00 , &HFF , &HFF , &HFF
Data &HFF , &H00 , &HFF , &HFF , &HFF , &H00 , &HFF , &HFF
Data &HFF , &HFF , &H00 , &HFF , &HFF , &HFF , &H00 , &HFF
Data &HFF , &HFF , &HFF , &H00 , &HFF , &HFF , &HFF , &H00
Data &H00 , &HFF , &HFF , &HFF , &H00 , &HFF , &HFF , &HFF
Data &HFF , &H00 , &HFF , &HFF , &HFF , &H00 , &HFF , &HFF
Data &HFF , &HFF , &H00 , &HFF , &HFF , &HFF , &H00 , &HFF
Data &HFF , &HFF , &HFF , &H00 , &HFF , &HFF , &HFF , &H00