LED Matrix Uhr (48x8) mit BASCOM

Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block4(zeile ) , 0 , Scroll_position
Shiftout Dataout , Clockout , Block2(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block5(zeile ) , 0 , Scroll_position
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block6(zeile ) , 0 , Scroll_position
Kaum schreibst du das, sehe ich, dass das natürlich nicht richtig ist. Probier es mal so:
Code:
'*******************************************************************************
'                              LED Matix Uhr
'*******************************************************************************

' µC Deklarationen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 30
$framesize = 40

' Ein-/Ausgänge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Config Porta = Output
Config Portb = Output
Config Portd.5 = Output                                     '<-- für PWM

Dataout Alias Portb.2
Strobeout Alias Portb.1
Clockout Alias Portb.0
Enableout Alias Portd.5                                     '<-- für PWM

'Zeile Alias Porta

' Timer und Config +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' Variablen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim Helligkeitswert As Long

Dim Block1(8) As Word
Dim Block2(8) As Word
Dim Block3(8) As Word
Dim Block4(8) As Word
Dim Block5(8) As Word
Dim Block6(8) As Word

Dim Zeile As Byte

Dim Out_str As String * 16
Dim Out_ovly(16) As Byte At Out_str Overlay

Dim Buchstabe As Byte
Dim Offset As Byte
Dim Temp As Byte

Dim Block1_w As Word
Dim Block2_w As Word
Dim Block3_w As Word
Dim Block4_w As Word

Dim Block1_l_b As Byte At Block1_w Overlay
Dim Block1_h_b As Byte At Block1_w + 1 Overlay

Dim Block2_l_b As Byte At Block2_w Overlay
Dim Block2_h_b As Byte At Block2_w + 1 Overlay

Dim Block3_l_b As Byte At Block3_w Overlay
Dim Block3_h_b As Byte At Block3_w + 1 Overlay

Dim Block1_2_long As Long At Block1_w Overlay
Dim Block2_3_long As Long At Block2_w Overlay

Dim Scroll_counter As Word
Dim Scroll_position As Byte , Scroll_tmp As Byte

'(
      - - - -block1 - - - - -block2 - - - - - -block3 - - - - - -block4 - - - - -block5 - - - - - -block6 - -
7. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
6. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
5. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
4. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
3. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
2. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
1. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
0. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210

   11111122_22223333 33444444_55555566 66667777_77888888 1111112222223333 3344444455555566 6666777777888888
   Blck_3_l_blck_3_h Blck_2_l_blck_2_h Blck_1_l_blck_1_h
   76543210_76543210 76543210_76543210 76543210_76543210
                                                011100
                                         011100
                                  0111 00100001
')

' Werte ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Out_str = "ABCDEFGH"

'*******************************************************************************
' Hauptschleife
'*******************************************************************************

'Config Base = 0

For Zeile = 6 To 0 Step -1

         For Buchstabe = 0 To 7

            If Buchstabe = 5 Then
               Shift Block3_w , Left , 6
            Elseif Buchstabe = 6 Then
               Shift Block3_w , Left , 4
            End If
            Shift Block1_2_long , Left , 6
            Offset = Out_ovly(buchstabe) - 65               'A ist der erste Buchstabe, also 0
            Offset = Offset * 7
            Offset = Offset + Zeile
            Temp = Lookup(offset , My_data)
            Block1_l_b = Block1_l_b + Temp                  'dies überschreibt nur die unteren 6 Bit
            If Buchstabe = 7 Then Exit For
            Temp = Block2_h_b
            If Buchstabe = 6 Then
               Shift Temp , Right , 2
               Temp = Temp And &B00001111
               Block3_l_b = Block3_l_b + Temp
            Else
               Block3_l_b = Temp
            End If

         Next Buchstabe

   Incr Offset
   Block1(zeile ) = Block3_w
   Block2(zeile ) = Block2_w
   Block3(zeile ) = Block1_w
   Block4(zeile ) = Block3_w                                'eingescrollter Text ist der gleiche wieder
   Block5(zeile ) = Block2_w
   Block6(zeile ) = Block1_w

   Print Bin(block1(zeile )) ; " " ; Bin(block2(zeile )) ; " " ; Bin(block3(zeile ))
Next Zeile

Config Timer0 = Timer , Prescale = 64
On Timer0 Timer_0
Enable Timer0
Start Timer0

Enable Interrupts

Do
   If Scroll_counter = 200 Then                             'alle 0,2sec rückt der Text weiter
      Scroll_counter = 0
      Incr Scroll_position
      If Scroll_position = 49 Then
         Scroll_position = 0
         Scroll_counter = 60000                                'sorgt für etwa 5 sec Pause
      End If
   End If
Loop
End


'*******************************************************************************
' Timer0 --> Anzeige Prozess
'*******************************************************************************

Timer_0:
Incr Scroll_counter
Porta.zeile = 1                                             'schaltet die vorherige Zeile aus

Incr Zeile

If Zeile = 8 Then Zeile = 0

Strobeout = 0
Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block2(zeile) , 0 , 16
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16
If Scroll_position < 17 Then
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , Scroll_position
Else
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16
   If Scroll_position < 33 Then
      Scroll_tmp = Scroll_position - 16
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , Scroll_tmp
   Else
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      Scroll_tmp = Scroll_position - 32
      Shiftout Dataout , Clockout , Block6(zeile ) , 0 , Scroll_tmp
   End If
End If
Strobeout = 1

Porta.zeile = 0                                             'schaltet die neue Zeile ein

Return
'*******************************************************************************
' Zeichen Tabelle
'*******************************************************************************

$data
My_data:
Data &B001000 , &B010100 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010       'A
Data &B111100 , &B100010 , &B100010 , &B111100 , &B100010 , &B100010 , &B111100       'B
Data &B011100 , &B100010 , &B100000 , &B100000 , &B100000 , &B100010 , &B011100       'C
Data &B111100 , &B100010 , &B100010 , &B100010 , &B100010 , &B100010 , &B111100       'D
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B111110       'E
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B100000       'F
Data &B011110 , &B100000 , &B100000 , &B101110 , &B100010 , &B100010 , &B011100       'G
Data &B100010 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010 , &B100010       'H
Data &B011100 , &B001000 , &B001000 , &B001000 , &B001000 , &B001000 , &B011100       'I
Data &B000010 , &B000010 , &B000010 , &B000010 , &B100010 , &B100010 , &B011100       'J
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B100010 , &B110010 , &B101010 , &B100110 , &B100010 , &B100010 , &B100010       'N

HBA
 
Das seltsame zeichen am Anfang liegt daran, dass ich die Zeile
Config Base = 0
hinter deinem ***** Hauptschleife ***** auskommentiert hatte. Nimm mal das ' weg.

HBA
 
Hallo
Danke HinterBlauenAugen für die schnelle Antwort

ich habe das Programm getestet es ist auch ein grobes scrollen zu erkennen
es wird aber nicht Bit für Bit weiter noch links geschoben sondern immer gleich um 16 Bits gesprungen

der Fehler liegt wahrscheinlich hier
Code:
Timer_0:
Incr Scroll_counter
Porta.zeile = 1                                             'schaltet die vorherige Zeile aus

Incr Zeile

If Zeile = 8 Then Zeile = 0

Strobeout = 0
Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block2(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16

If Scroll_position < 17 Then
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , Scroll_position
Else
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16

   If Scroll_position < 33 Then
      Scroll_tmp = Scroll_position - 16
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , Scroll_tmp
   Else
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      Scroll_tmp = Scroll_position - 32
      Shiftout Dataout , Clockout , Block6(zeile ) , 0 , Scroll_tmp
   End If

End If
Strobeout = 1

Porta.zeile = 0                                             'schaltet die neue Zeile ein

Return
habe aber noch keine Lösung gefunden

HinterBlauenAugen

Das seltsame zeichen am Anfang liegt daran, dass ich die Zeile
Config Base = 0
hinter deinem ***** Hauptschleife ***** auskommentiert hatte. Nimm mal das ' weg.
wenn ich "Config Base = 0 " drin habe (also ohne ') kommt bei mir immer
Error : 12 Unknown CONFIG parameter [BASE]

lg mnsp2
 
Wenn Config Base nicht funktioniert, dann hast du eine Bascom Version vor 2.0.0.0
Kannst du auf eine neuere gehen? Das ist sowieso besser, weil dort dann auch Fehler behoben sind.
Ich habe bei mir im Simulator mal Prints anstelle deiner Shiftouts gemacht. Da wird schön nacheinander immer ein Bit mehr ausgegeben. Seltsam. Vielleicht arbeitet das Shiftout doch etwas anders als wir denken.

HBA
 
Hallo
ja ich habe nur BASCOM-AVR 1.11.9.8 (BASCOM-AVR V2.0.5.0 nur als DEMO) :cray:

was bewirkt "Config Base" vielleicht kann man das irgendwie anders lösen ?
Ich habe bei mir im Simulator mal Prints anstelle deiner Shiftouts gemacht. Da wird schön nacheinander immer ein Bit mehr ausgegeben. Seltsam. Vielleicht arbeitet das Shiftout doch etwas anders als wir denken.
ich denke das wir da irgendetwas über sehen
lg mnsp2
 
Hallo
ja ich habe nur BASCOM-AVR 1.11.9.8 (BASCOM-AVR V2.0.5.0 nur als DEMO)
Wenn du eine gekaufte Vollversion hast, kannst du kostenlos upgraden. Das ist sinnvoller.


was bewirkt "Config Base" vielleicht kann man das irgendwie anders lösen ?
Da du eh unter 4K bist, kannst du im Moment auch noch mit der Demo arbeiten. Schau mal, was da passiert.

HBA
 
Hallo
Wenn du eine gekaufte Vollversion hast, kannst du kostenlos upgraden. Das ist sinnvoller.
ich kann leider keine Upgrade machen :eek:

ich habe das Programm :
Code:
'*******************************************************************************
'                              LED Matix Uhr
'*******************************************************************************

' µC Deklarationen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 30
$framesize = 40

' Ein-/Ausgänge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Config Porta = Output
Config Portb = Output
Config Portd.5 = Output                                     '<-- für PWM

Dataout Alias Portb.2
Strobeout Alias Portb.1
Clockout Alias Portb.0
Enableout Alias Portd.5                                     '<-- für PWM

' Timer und Config +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' Variablen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim Helligkeitswert As Long

Dim Block1(8) As Word
Dim Block2(8) As Word
Dim Block3(8) As Word
Dim Block4(8) As Word
Dim Block5(8) As Word
Dim Block6(8) As Word

Dim Zeile As Byte

Dim Out_str As String * 16
Dim Out_ovly(16) As Byte At Out_str Overlay

Dim Buchstabe As Byte
Dim Offset As Byte
Dim Temp As Byte


Dim Block1_w As Word
Dim Block2_w As Word
Dim Block3_w As Word
Dim Block4_w As Word

Dim Block1_l_b As Byte At Block1_w Overlay
Dim Block1_h_b As Byte At Block1_w + 1 Overlay

Dim Block2_l_b As Byte At Block2_w Overlay
Dim Block2_h_b As Byte At Block2_w + 1 Overlay

Dim Block3_l_b As Byte At Block3_w Overlay
Dim Block3_h_b As Byte At Block3_w + 1 Overlay

Dim Block1_2_long As Long At Block1_w Overlay
Dim Block2_3_long As Long At Block2_w Overlay

Dim Scroll_counter As Word
Dim Scroll_position As Byte , Scroll_tmp As Byte

'(
         - - - -block1 - - - - -block2 - - - - - -block3 - - - - - -block4 - - - - -block5 - - - - - -block6 - -
7. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
6. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
5. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
4. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
3. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
2. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
1. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
0. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210

   11111122_22223333 33444444_55555566 66667777_77888888 1111112222223333 3344444455555566 6666777777888888
   Blck_3_l_blck_3_h Blck_2_l_blck_2_h Blck_1_l_blck_1_h
   76543210_76543210 76543210_76543210 76543210_76543210
                                                011100
                                         011100
                                  0111 00100001
')

' Werte ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Out_str = "ABCDEFGH"

'*******************************************************************************
' Hauptschleife
'*******************************************************************************

Config Base = 0

For Zeile = 6 To 0 Step -1

         For Buchstabe = 0 To 7

            If Buchstabe = 5 Then
               Shift Block3_w , Left , 6
            Elseif Buchstabe = 6 Then
               Shift Block3_w , Left , 4
            End If
            Shift Block1_2_long , Left , 6
            Offset = Out_ovly(buchstabe) - 65               'A ist der erste Buchstabe, also 0
            Offset = Offset * 7
            Offset = Offset + Zeile
            Temp = Lookup(offset , My_data)
            Block1_l_b = Block1_l_b + Temp                  'dies überschreibt nur die unteren 6 Bit
            If Buchstabe = 7 Then Exit For
            Temp = Block2_h_b
            If Buchstabe = 6 Then
               Shift Temp , Right , 2
               Temp = Temp And &B00001111
               Block3_l_b = Block3_l_b + Temp
            Else
               Block3_l_b = Temp
            End If

         Next Buchstabe

   Incr Offset
   Block1(zeile ) = Block3_w
   Block2(zeile ) = Block2_w
   Block3(zeile ) = Block1_w
   Block4(zeile ) = Block3_w                                'eingescrollter Text ist der gleiche wieder
   Block5(zeile ) = Block2_w
   Block6(zeile ) = Block1_w

   Print Bin(block1(zeile )) ; " " ; Bin(block2(zeile )) ; " " ; Bin(block3(zeile ))
Next Zeile

Config Timer0 = Timer , Prescale = 64
On Timer0 Timer_0
Enable Timer0
Start Timer0

Enable Interrupts

Do
   If Scroll_counter = 70 Then                              'alle 0,2sec rückt der Text weiter
      Scroll_counter = 0
      Incr Scroll_position
      If Scroll_position = 49 Then
         Scroll_position = 0
         Scroll_counter = 65000                             'sorgt für etwa 5 sec Pause
      End If
   End If
Loop
End


'*******************************************************************************
' Timer0 --> Anzeige Prozess
'*******************************************************************************

Timer_0:
Incr Scroll_counter
Porta.zeile = 1                                             'schaltet die vorherige Zeile aus

Incr Zeile

If Zeile = 8 Then Zeile = 0

Strobeout = 0
Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block2(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16

If Scroll_position < 17 Then
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , Scroll_position
Else
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16

   If Scroll_position < 33 Then
      Scroll_tmp = Scroll_position - 16
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , Scroll_tmp
   Else
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      Scroll_tmp = Scroll_position - 32
      Shiftout Dataout , Clockout , Block6(zeile ) , 0 , Scroll_tmp
End If

End If
Strobeout = 1

Porta.zeile = 0                                             'schaltet die neue Zeile ein

Return
'*******************************************************************************
' Zeichen Tabelle
'*******************************************************************************

$data
My_data:
Data &B001000 , &B010100 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010       'A
Data &B111100 , &B100010 , &B100010 , &B111100 , &B100010 , &B100010 , &B111100       'B
Data &B011100 , &B100010 , &B100000 , &B100000 , &B100000 , &B100010 , &B011100       'C
Data &B111100 , &B100010 , &B100010 , &B100010 , &B100010 , &B100010 , &B111100       'D
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B111110       'E
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B100000       'F
Data &B011110 , &B100000 , &B100000 , &B101110 , &B100010 , &B100010 , &B011100       'G
Data &B100010 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010 , &B100010       'H
Data &B011100 , &B001000 , &B001000 , &B001000 , &B001000 , &B001000 , &B011100       'I
Data &B000010 , &B000010 , &B000010 , &B000010 , &B100010 , &B100010 , &B011100       'J
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B100010 , &B110010 , &B101010 , &B100110 , &B100010 , &B100010 , &B100010       'N
mit BASCOM-AVR 2.0.5.0 DEMO gebrannt durch " Config Base = 0" ist jetzt kein undefinierbares Zeichen mehr da

aber das Scrollen ist immer noch so das es 3x um 16 Bit nach links springt und dann wieder von vorn beginnt

So sieht das auf der Matrix aus

ABCDEFGH ---> DEFGHABC ---> FGHABCDE
<---------------------<-----------------------<


lg mnsp2
 
Hallo mnsp2,
ich finde leider keinen Fehler. Bist du sicher, dass das Shiftout mit nur einigen Bits funktioniert? Hast du das mal von Hand ausprobiert (für eine Zeile mit festen Werten)?

Hier mal meine Version mit Printausgabe.
Code:
'*******************************************************************************
'                              LED Matix Uhr
'*******************************************************************************

' µC Deklarationen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 30
$framesize = 40

' Ein-/Ausgänge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Config Porta = Output
Config Portb = Output
Config Portd.5 = Output                                     '<-- für PWM

Dataout Alias Portb.2
Strobeout Alias Portb.1
Clockout Alias Portb.0
Enableout Alias Portd.5                                     '<-- für PWM

'Zeile Alias Porta

' Timer und Config +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' Variablen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim Helligkeitswert As Long
Dim I As Byte , Tmp As Byte
Dim Block1(8) As Word
Dim Block2(8) As Word
Dim Block3(8) As Word
Dim Block4(8) As Word
Dim Block5(8) As Word
Dim Block6(8) As Word

Dim Zeile As Byte

Dim Out_str As String * 16
Dim Out_ovly(16) As Byte At Out_str Overlay

Dim Buchstabe As Byte
Dim Offset As Byte
Dim Temp As Byte

Dim Block1_w As Word
Dim Block2_w As Word
Dim Block3_w As Word
Dim Block4_w As Word

Dim Block1_l_b As Byte At Block1_w Overlay
Dim Block1_h_b As Byte At Block1_w + 1 Overlay

Dim Block2_l_b As Byte At Block2_w Overlay
Dim Block2_h_b As Byte At Block2_w + 1 Overlay

Dim Block3_l_b As Byte At Block3_w Overlay
Dim Block3_h_b As Byte At Block3_w + 1 Overlay

Dim Block1_2_long As Long At Block1_w Overlay
Dim Block2_3_long As Long At Block2_w Overlay

Dim Scroll_counter As Word
Dim Scroll_position As Byte , Scroll_tmp As Byte

'(
       - - - -block1 - - - - -block2 - - - - - -block3 - - - - - -block4 - - - - -block5 - - - - - -block6 - -
7. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
6. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
5. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
4. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
3. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
2. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
1. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
0. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210

   11111122_22223333 33444444_55555566 66667777_77888888 1111112222223333 3344444455555566 6666777777888888
   Blck_3_l_blck_3_h Blck_2_l_blck_2_h Blck_1_l_blck_1_h
   76543210_76543210 76543210_76543210 76543210_76543210
                                                011100
                                         011100
                                  0111 00100001
')

' Werte ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Out_str = "ABCDEFGH"

'*******************************************************************************
' Hauptschleife
'*******************************************************************************

Config Base = 0

For Zeile = 6 To 0 Step -1

         For Buchstabe = 0 To 7

            If Buchstabe = 5 Then
               Shift Block3_w , Left , 6
            Elseif Buchstabe = 6 Then
               Shift Block3_w , Left , 4
            End If
            Shift Block1_2_long , Left , 6
            Offset = Out_ovly(buchstabe) - 65               'A ist der erste Buchstabe, also 0
            Offset = Offset * 7
            Offset = Offset + Zeile
            Temp = Lookup(offset , My_data)
            Block1_l_b = Block1_l_b + Temp                  'dies überschreibt nur die unteren 6 Bit
            If Buchstabe = 7 Then Exit For
            Temp = Block2_h_b
            If Buchstabe = 6 Then
               Shift Temp , Right , 2
               Temp = Temp And &B00001111
               Block3_l_b = Block3_l_b + Temp
            Else
               Block3_l_b = Temp
            End If

         Next Buchstabe

   Incr Offset
   Block1(zeile ) = Block3_w
   Block2(zeile ) = Block2_w
   Block3(zeile ) = Block1_w
   Block4(zeile ) = Block3_w                                'eingescrollter Text ist der gleiche wieder
   Block5(zeile ) = Block2_w
   Block6(zeile ) = Block1_w

   'Print Bin(block1(zeile )) ; " " ; Bin(block2(zeile )) ; " " ; Bin(block3(zeile ))
Next Zeile

Config Timer0 = Timer , Prescale = 8                        '64     ACHTUNG!!!! geändert, damit der Print schnelle geht
On Timer0 Timer_0
Enable Timer0
Start Timer0

Enable Interrupts

Do
'   If Scroll_counter = 200 Then                             'alle 0,2sec rückt der Text weiter
   If Scroll_counter = 8 Then                               'ACHTUNG!!!! geändert, damit der Print schnelle geht
      Scroll_counter = 0
      Incr Scroll_position
      If Scroll_position = 49 Then
         Scroll_position = 0
         Scroll_counter = 60000                             'sorgt für etwa 5 sec Pause
      End If
   End If
Loop
End


'*******************************************************************************
' Timer0 --> Anzeige Prozess
'*******************************************************************************

Timer_0:
Incr Scroll_counter
Porta.zeile = 1                                             'schaltet die vorherige Zeile aus

Incr Zeile

If Zeile = 8 Then Zeile = 0

Strobeout = 0
Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block2(zeile) , 0 , 16
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16
If Scroll_position < 17 Then
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , Scroll_position
Else
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16
   If Scroll_position < 33 Then
      Scroll_tmp = Scroll_position - 16
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , Scroll_tmp
   Else
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      Scroll_tmp = Scroll_position - 32
      Shiftout Dataout , Clockout , Block6(zeile ) , 0 , Scroll_tmp
   End If
End If
Print Bin(block1(zeile )) ; " " ; Bin(block2(zeile )) ; " " ; Bin(block3(zeile )) ; " " ;
If Scroll_position < 16 Then
   Tmp = 16 - Scroll_position
   For I = 15 To Tmp Step -1
      Print Block4(zeile ).i;
   Next
Else
   Print Bin(block4(zeile )) ; " " ;
   If Scroll_position < 32 Then
      Tmp = 32 - Scroll_position
      For I = 15 To Tmp Step -1
         Print Block5(zeile ).i;
      Next
   Else
      Print Bin(block5(zeile )) ; " " ;
      Tmp = 48 - Scroll_position
      For I = 15 To Tmp Step -1
         Print Block6(zeile ).i;
      Next
   End If
End If
Print ""
Strobeout = 1

Porta.zeile = 0                                             'schaltet die neue Zeile ein

Return
'*******************************************************************************
' Zeichen Tabelle
'*******************************************************************************

$data
My_data:
Data &B001000 , &B010100 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010       'A
Data &B111100 , &B100010 , &B100010 , &B111100 , &B100010 , &B100010 , &B111100       'B
Data &B011100 , &B100010 , &B100000 , &B100000 , &B100000 , &B100010 , &B011100       'C
Data &B111100 , &B100010 , &B100010 , &B100010 , &B100010 , &B100010 , &B111100       'D
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B111110       'E
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B100000       'F
Data &B011110 , &B100000 , &B100000 , &B101110 , &B100010 , &B100010 , &B011100       'G
Data &B100010 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010 , &B100010       'H
Data &B011100 , &B001000 , &B001000 , &B001000 , &B001000 , &B001000 , &B011100       'I
Data &B000010 , &B000010 , &B000010 , &B000010 , &B100010 , &B100010 , &B011100       'J
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B100010 , &B110010 , &B101010 , &B100110 , &B100010 , &B100010 , &B100010       'N
Schau mal,
ob bei dir auch so eine Ausgabe kommt:
Code:
0010001111000111 0011110011111011 1110011110100010 
0101001000101000 1010001010000010 0000100000100010 
1000101000101000 0010001010000010 0000100000100010 
1000101111001000 0010001011111011 1110101110111110 
1111101000101000 0010001010000010 0000100010100010 
1000101000101000 1010001010000010 0000100010100010 
1000101111000111 0011110011111010 0000011100100010 
0000000000000000 0000000000000000 0000000000000000 
0010001111000111 0011110011111011 1110011110100010 0
0101001000101000 1010001010000010 0000100000100010 0
1000101000101000 0010001010000010 0000100000100010 1
1000101111001000 0010001011111011 1110101110111110 1
1111101000101000 0010001010000010 0000100010100010 1
1000101000101000 1010001010000010 0000100010100010 1
1000101111000111 0011110011111010 0000011100100010 1
0000000000000000 0000000000000000 0000000000000000 0
0010001111000111 0011110011111011 1110011110100010 00
0101001000101000 1010001010000010 0000100000100010 01
1000101000101000 0010001010000010 0000100000100010 10
1000101111001000 0010001011111011 1110101110111110 10
1111101000101000 0010001010000010 0000100010100010 11
1000101000101000 1010001010000010 0000100010100010 10
1000101111000111 0011110011111010 0000011100100010 10
0000000000000000 0000000000000000 0000000000000000 00
0010001111000111 0011110011111011 1110011110100010 001
0101001000101000 1010001010000010 0000100000100010 010
1000101000101000 0010001010000010 0000100000100010 100
1000101111001000 0010001011111011 1110101110111110 100
1111101000101000 0010001010000010 0000100010100010 111
1000101000101000 1010001010000010 0000100010100010 100
1000101111000111 0011110011111010 0000011100100010 100
0000000000000000 0000000000000000 0000000000000000 000
0010001111000111 0011110011111011 1110011110100010 0010
0101001000101000 1010001010000010 0000100000100010 0101
1000101000101000 0010001010000010 0000100000100010 1000
1000101111001000 0010001011111011 1110101110111110 1000
1111101000101000 0010001010000010 0000100010100010 1111
1000101000101000 1010001010000010 0000100010100010 1000
1000101111000111 0011110011111010 0000011100100010 1000
0000000000000000 0000000000000000 0000000000000000 0000
0010001111000111 0011110011111011 1110011110100010 00100
0101001000101000 1010001010000010 0000100000100010 01010
1000101000101000 0010001010000010 0000100000100010 10001
1000101111001000 0010001011111011 1110101110111110 10001
1111101000101000 0010001010000010 0000100010100010 11111
1000101000101000 1010001010000010 0000100010100010 10001
1000101111000111 0011110011111010 0000011100100010 10001
0000000000000000 0000000000000000 0000000000000000 00000
0010001111000111 0011110011111011 1110011110100010 001000
0101001000101000 1010001010000010 0000100000100010 010100
1000101000101000 0010001010000010 0000100000100010 100010
1000101111001000 0010001011111011 1110101110111110 100010
1111101000101000 0010001010000010 0000100010100010 111110
1000101000101000 1010001010000010 0000100010100010 100010
1000101111000111 0011110011111010 0000011100100010 100010
0000000000000000 0000000000000000 0000000000000000 000000
0010001111000111 0011110011111011 1110011110100010 0010001
0101001000101000 1010001010000010 0000100000100010 0101001
1000101000101000 0010001010000010 0000100000100010 1000101
1000101111001000 0010001011111011 1110101110111110 1000101
1111101000101000 0010001010000010 0000100010100010 1111101
1000101000101000 1010001010000010 0000100010100010 1000101
1000101111000111 0011110011111010 0000011100100010 1000101
0000000000000000 0000000000000000 0000000000000000 0000000
0010001111000111 0011110011111011 1110011110100010 00100011
0101001000101000 1010001010000010 0000100000100010 01010010
1000101000101000 0010001010000010 0000100000100010 10001010
1000101111001000 0010001011111011 1110101110111110 10001011
1111101000101000 0010001010000010 0000100010100010 11111010
1000101000101000 1010001010000010 0000100010100010 10001010
1000101111000111 0011110011111010 0000011100100010 10001011
0000000000000000 0000000000000000 0000000000000000 00000000
Man erkennt gut, dass hinten immer ein Bit mehr ausgegeben wird.

HBA
 
Hallo

ich habe glaube ich den Fehler gefunden :D:D
und zwar ist mir auf gefallen das Shiftout

Shiftout Dataout , Clockout , A , 0 , Wieviel
an ende wo man angibt wie viel Bits von der Variable (A) raus geschoben werden (Wieviel)
keine Variable verträgt sonder nur feste Zahlen (1,2,3,4,5,6,7,9.....)

also zu Beispiel so:
Shiftout Dataout , Clockout , A , 0 , 1

Test Programm:
Code:
'*******************************************************************************
'                              LED Matix Uhr
'*******************************************************************************

' µC Deklarationen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 30
$framesize = 40

' Ein-/Ausgänge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Config Porta = Output
Config Portb = Output
Config Portd.5 = Output                                     '<-- für PWM

Dataout Alias Portb.2
Strobeout Alias Portb.1
Clockout Alias Portb.0
Enableout Alias Portd.5                                     '<-- für PWM

Zeile Alias Porta

' Timer und Config +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Enable Interrupts
' Variablen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim Ze(8) As Byte
Dim Helligkeitswert As Long
Dim I As Word
Dim A As Word
Dim Z1 As Byte
Dim Zeilen_case As Byte
Dim Runde As Byte
Dim Wieviel As Byte
' Werte ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ze(1) = 127                                                 'Zeile 1
Ze(2) = 191                                                 'Zeile 2
Ze(3) = 223                                                 'Zeile 3
Ze(4) = 239                                                 'Zeile 4
Ze(5) = 247                                                 'Zeile 5
Ze(6) = 251                                                 'Zeile 6
Ze(7) = 253                                                 'Zeile 7
Ze(8) = 254                                                 'Zeile 8

Helligkeitswert = 400

Weilviel = 1

I = &B1111111111111111

A = &B0010101010101001
'*******************************************************************************
' Hauptschleife
'*******************************************************************************

Do

Incr Runde

Zeile = Ze(1)


If Runde = 16 Then Runde = 1


Strobeout = 0



   If Runde > 1 Then

      Shiftout Dataout , Clockout , A , 0 , Wieviel
   Else
      Shiftout Dataout , Clockout , I , 0 , 16

   End If

Strobeout = 1

Waitms 1000

Loop

'*******************************************************************************
' SUB ,Gosub
'*******************************************************************************



'*******************************************************************************
' Timer0 --> Anzeige Prozess
'*******************************************************************************



'*******************************************************************************
' Zeichen Tabelle
'*******************************************************************************
 
Shiftout Dataout , Clockout , A , 0 , Wieviel
an ende wo man angibt wie viel Bits von der Variable (A) raus geschoben werden (Wieviel)
keine Variable verträgt sonder nur feste Zahlen (1,2,3,4,5,6,7,9.....)

also zu Beispiel so:
Shiftout Dataout , Clockout , A , 0 , 1

Deswegen siehst du dann natürlich auch keine einzelnen Bit-Verschiebungen.

Ich habe mal an MCS die Frage gestellt, ob sie anstelle der Konstanten auch eine Variable zulassen können. Mal schauen, ob da was kommt.
Es gab in der letzten Zeit schon einige dieser festen Werte, die MCS dann durch Variablen ersetzt hat.

HBA
 
Hallo

Ich habe mal an MCS die Frage gestellt, ob sie anstelle der Konstanten auch eine Variable zulassen können. Mal schauen, ob da was kommt.

das ist auf jede fall angebracht :D
wenn es nicht gehen sollte , sollten sie wenigstens in der BASCOM Hilfe schreiben das keine Variable möglich ist !!

ich habe das Programm mal ohne die Variable geschrieben
vielleicht gibt es noch eine elegantere Lösung (was besseres ist mir nicht eingefallen :eek:)

Code:
'*******************************************************************************
'                              LED Matix Uhr
'*******************************************************************************

' µC Deklarationen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 30
$framesize = 40

' Ein-/Ausgänge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Config Porta = Output
Config Portb = Output
Config Portd.5 = Output                                     '<-- für PWM

Dataout Alias Portb.2
Strobeout Alias Portb.1
Clockout Alias Portb.0
Enableout Alias Portd.5                                     '<-- für PWM

' Timer und Config +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' Variablen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim Helligkeitswert As Long
Dim I As Byte , Tmp As Byte
Dim Block1(8) As Word
Dim Block2(8) As Word
Dim Block3(8) As Word
Dim Block4(8) As Word
Dim Block5(8) As Word
Dim Block6(8) As Word

Dim Zeile As Byte

Dim Out_str As String * 16
Dim Out_ovly(16) As Byte At Out_str Overlay

Dim Buchstabe As Byte
Dim Offset As Byte
Dim Temp As Byte

Dim Block1_w As Word
Dim Block2_w As Word
Dim Block3_w As Word
Dim Block4_w As Word

Dim Block1_l_b As Byte At Block1_w Overlay
Dim Block1_h_b As Byte At Block1_w + 1 Overlay

Dim Block2_l_b As Byte At Block2_w Overlay
Dim Block2_h_b As Byte At Block2_w + 1 Overlay

Dim Block3_l_b As Byte At Block3_w Overlay
Dim Block3_h_b As Byte At Block3_w + 1 Overlay

Dim Block1_2_long As Long At Block1_w Overlay
Dim Block2_3_long As Long At Block2_w Overlay

Dim Scroll_counter As Word
Dim Scroll_position As Byte , Scroll_tmp As Byte

'(
        - - - -block1 - - - - -block2 - - - - - -block3 - - - - - -block4 - - - - -block5 - - - - - -block6 - -
7. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
6. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
5. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
4. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
3. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
2. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
1. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
0. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210

   11111122_22223333 33444444_55555566 66667777_77888888 1111112222223333 3344444455555566 6666777777888888
   Blck_3_l_blck_3_h Blck_2_l_blck_2_h Blck_1_l_blck_1_h
   76543210_76543210 76543210_76543210 76543210_76543210
                                                011100
                                         011100
                                  0111 00100001
')

' Werte ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Out_str = "ABCDEFGH"

'*******************************************************************************
' Hauptschleife
'*******************************************************************************

'Config Base = 0     ' kann ich nicht verwenden wenn code über 4k ist weil nur BASCOM-AVR 2.0.5.0 nur als DEMO

For Zeile = 6 To 0 Step -1

         For Buchstabe = 0 To 7

            If Buchstabe = 5 Then
               Shift Block3_w , Left , 6
            Elseif Buchstabe = 6 Then
               Shift Block3_w , Left , 4
            End If
            Shift Block1_2_long , Left , 6
            Offset = Out_ovly(buchstabe) - 65               'A ist der erste Buchstabe, also 0
            Offset = Offset * 7
            Offset = Offset + Zeile
            Temp = Lookup(offset , My_data)
            Block1_l_b = Block1_l_b + Temp                  'dies überschreibt nur die unteren 6 Bit
            If Buchstabe = 7 Then Exit For
            Temp = Block2_h_b
            If Buchstabe = 6 Then
               Shift Temp , Right , 2
               Temp = Temp And &B00001111
               Block3_l_b = Block3_l_b + Temp
            Else
               Block3_l_b = Temp
            End If

         Next Buchstabe

   Incr Offset
   Block1(zeile ) = Block3_w
   Block2(zeile ) = Block2_w
   Block3(zeile ) = Block1_w
   Block4(zeile ) = Block3_w                                'eingescrollter Text ist der gleiche wieder
   Block5(zeile ) = Block2_w
   Block6(zeile ) = Block1_w

   'Print Bin(block1(zeile )) ; " " ; Bin(block2(zeile )) ; " " ; Bin(block3(zeile ))
Next Zeile

Config Timer0 = Timer , Prescale = 64                       '8     ACHTUNG!!!! geändert, damit der Print schnelle geht
On Timer0 Timer_0
Enable Timer0
Start Timer0

Enable Interrupts

Do
   If Scroll_counter = 70 Then                              'alle 0,2sec rückt der Text weiter
      Scroll_counter = 0
      Incr Scroll_position
      If Scroll_position = 49 Then
         Scroll_position = 0
         Scroll_counter = 65000                             'sorgt für etwa 5 sec Pause
      End If
   End If
Loop
End


'*******************************************************************************
' Timer0 --> Anzeige Prozess
'*******************************************************************************

Timer_0:
Incr Scroll_counter
Porta.zeile = 1                                             'schaltet die vorherige Zeile aus

Incr Zeile

If Zeile = 8 Then Zeile = 0

Strobeout = 0
Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block2(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16

If Scroll_position < 17 Then
    Select Case Scroll_position
      Case 1:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 1
      Case 2:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 2
      Case 3:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 3
      Case 4:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 4
      Case 5:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 5
      Case 6:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 6
      Case 7:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 7
      Case 8:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 8
      Case 9:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 9
      Case 10:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 10
      Case 11:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 11
      Case 12:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 12
      Case 13:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 13
      Case 14:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 14
      Case 15:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 15
      Case 16:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16
    End Select

Else
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16
   If Scroll_position < 33 Then
      Scroll_tmp = Scroll_position - 16

      Select Case Scroll_tmp
        Case 1:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 1
        Case 2:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 2
        Case 3:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 3
        Case 4:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 4
        Case 5:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 5
        Case 6:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 6
        Case 7:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 7
        Case 8:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 8
        Case 9:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 9
        Case 10:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 10
        Case 11:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 11
        Case 12:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 12
        Case 13:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 13
        Case 14:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 14
        Case 15:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 15
        Case 16:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      End Select

   Else
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      Scroll_tmp = Scroll_position - 32

       Select Case Scroll_tmp
        Case 1:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 1
        Case 2:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 2
        Case 3:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 3
        Case 4:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 4
        Case 5:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 5
        Case 6:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 6
        Case 7:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 7
        Case 8:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 8
        Case 9:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 9
        Case 10:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 10
        Case 11:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 11
        Case 12:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 12
        Case 13:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 13
        Case 14:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 14
        Case 15:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 15
        Case 16:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 16
      End Select

   End If
End If

Strobeout = 1

Porta.zeile = 0                                             'schaltet die neue Zeile ein

Return
'*******************************************************************************
' Zeichen Tabelle
'*******************************************************************************

$data
My_data:
Data &B001000 , &B010100 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010       'A
Data &B111100 , &B100010 , &B100010 , &B111100 , &B100010 , &B100010 , &B111100       'B
Data &B011100 , &B100010 , &B100000 , &B100000 , &B100000 , &B100010 , &B011100       'C
Data &B111100 , &B100010 , &B100010 , &B100010 , &B100010 , &B100010 , &B111100       'D
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B111110       'E
Data &B111110 , &B100000 , &B100000 , &B111110 , &B100000 , &B100000 , &B100000       'F
Data &B011110 , &B100000 , &B100000 , &B101110 , &B100010 , &B100010 , &B011100       'G
Data &B100010 , &B100010 , &B100010 , &B111110 , &B100010 , &B100010 , &B100010       'H
Data &B011100 , &B001000 , &B001000 , &B001000 , &B001000 , &B001000 , &B011100       'I
Data &B000010 , &B000010 , &B000010 , &B000010 , &B100010 , &B100010 , &B011100       'J
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B001000 , &B010100 , &B100010 , &B000010 , &B111110 , &B100010 , &B100010       '
Data &B100010 , &B110010 , &B101010 , &B100110 , &B100010 , &B100010 , &B100010       'N

mit dem Programm ist jetzt eine schönes Scrollen Bit für Bit zusehen :D:D

ich habe mir das Problem mit dem Config Base = 0 und dem undefinierbarem Zeichen

lg mnsp2
 
ich habe das Programm mal ohne die Variable geschrieben
vielleicht gibt es noch eine elegantere Lösung (was besseres ist mir nicht eingefallen
Schön ist anders, aber vielleicht wird das ja noch was mit der Variablen.



mit dem Programm ist jetzt eine schönes Scrollen Bit für Bit zusehen :D:D

Gedacht wäre das jetzt so:
Für die Anzeige werden immer die Blöcke 1-3 genommen.
Wenn ein neuer Text angezeigt werden soll, schreibst du ihn in eine Variable, z.B. die verwendete Variable Out_Str. Dann lässt du diese über die Konvertierung in die Blöcke 4-6 schreiben. Am besten setzt du die Befehle der For-Schleife in eine Sub und rufst diese dann auf. Da du die Blöcke 1-3 nicht mehr direkt beschreibst, werden dort natürlich stattdessen die Blöcke 4-6 beschrieben.
In deinem Hauptprogramm oder in einem Timer aktivierst du dann zu den gewünschten Zeiten den Wechsel.
Wenn der Wechsel fertig ist (scroll_position > 49) schreibst du die Blöcke 4-6 in die Blöcke 1-3 und deaktivierst den Wechsel. Dann bleibt der Text stehen bis du den nächsten Wechsel aktivierst.

Wenn das dann klappt, kommt das runterscrollen der Ziffern der Uhrzeit dran. Das sollte dann auch kein Problem sein.

HBA
 
hallo
Mark Alberts hat schon geantwortet, dass dies im nächsten Release drin sein wird.

das klinkt ja gut
ich hoffe das wir nicht so lange auf BASCOM AVR 2.0.5.1 waren muss
(mit der Möglichkeit der Variable kann man viel speicherplatzsparen)

ich habe jetzt mal den DCF77 Empfänger an mein Atmega32 gebracht
und habe die Daten Tabelle erweitert :D

Programm :Anhang anzeigen Test Blocksystem mit scrollen 2.1 ohne PWM.bas

meine Probleme:

ich habe festgestellt das ich sei dem erweitern nur noch bis "C" (ASCII= 67) darstellen kann danach kommen nur noch undefinierbare Zeichen oder gar kein Symbol

ich habe immer ein aufblitzen der 8. Zeile und 1.Zeile wenn etwas dargestellt wird
(vielleicht liegt es daran das wir die 8.Zeile nicht in der Daten Tabelle belegen, es wäre besser wann man die 8.Zeile auch belegen könnte)

ich denke die "For Zeile = 6 To 0 Step -1" schleife im Sekunden Gosub (Gosub = Sectic ) zu haben ist nicht so richtig aber wann ich sie im die DO LOOP schleife nehmen flackert alles und die 1. Zeile blitzt unregelmäßig auf aus

lg mnsp2
 
ich habe festgestellt das ich sei dem erweitern nur noch bis "C" (ASCII= 67) darstellen kann danach kommen nur noch undefinierbare Zeichen oder gar kein Symbol
Das liegt daran, dass Offset als Byte definiert ist und damit nicht größer als 255 werden kann. Ich hab's jetzt mal zu einem Word gemacht.

ich habe immer ein aufblitzen der 8. Zeile und 1.Zeile wenn etwas dargestellt wird
(vielleicht liegt es daran das wir die 8.Zeile nicht in der Daten Tabelle belegen, es wäre besser wann man die 8.Zeile auch belegen könnte)
Die Tabelle habe ich mal komplett um eine achte Spalte erweitert und im Programm entsprechend abgeändert. Schau mal ob das geht.

ich denke die "For Zeile = 6 To 0 Step -1" schleife im Sekunden Gosub (Gosub = Sectic ) zu haben ist nicht so richtig aber wann ich sie im die DO LOOP schleife nehmen flackert alles und die 1. Zeile blitzt unregelmäßig auf aus
Es ist besser, wenn du das alles aus der Sectic rausnimmst, weil die wohl im Interrupt läuft und damit dein Multiplexer nicht mehr dran kommt. Das dauert zwar nur 1ms, aber das sieht man.
 

Anhänge

  • Test Blocksystem mit scrollen 2.1 ohne PWM.bas
    16,8 KB · Aufrufe: 33
Hallo
Das liegt daran, dass Offset als Byte definiert ist und damit nicht größer als 255 werden kann. Ich hab's jetzt mal zu einem Word gemacht.

das habe ich total übersehen :banghead:

Die Tabelle habe ich mal komplett um eine achte Spalte erweitert und im Programm entsprechend abgeändert. Schau mal ob das geht.


ich habe dein abgeändertes programm gebrannt doch leider ist das zucken nicht weck (so garschlimmer)

es blitzt im Sekundentackt die 8. Zeile auf und die Symbole verzerren (es sieht so aus als würden immer Punkte verrutschen)

wenn ich die "For Zeile = 7 To 0 Step -1" schleife im Sekunden Gosub (Gosub = Sectic ) schiebe habe ich nur noch das zucken der 8 . Zeile

ich kann den Fehler nicht finden vielleicht kannst du mal die "For Zeile = 7 To 0 Step -1" schleife mit Kommentaren versehen damit ich deine Gedanken wie das funktionieren soll nachvollziehen kann :stupido2:

lg mnsp2
 
Hallo,

es blitzt im Sekundentackt die 8. Zeile auf und die Symbole verzerren (es sieht so aus als würden immer Punkte verrutschen)
...
ich kann den Fehler nicht finden vielleicht kannst du mal die "For Zeile = 7 To 0 Step -1" schleife mit Kommentaren versehen damit ich deine Gedanken wie das funktionieren soll nachvollziehen kann :stupido2:
ich hab mir mal jetzt nicht alles im Thread durchgelesen ... ;)

Also ... wenn etwas im Sekundentakt blitzt ... was erzeugt einen Sekundentakt ?
Sieh mal nach dem Sectic ...

Wie sieht das Timing aus ? ...

Wo könntest du Zeit einsparen um es nicht im Sekundentakt blitzen zu lassen ?

An welchen Stellen könntest du mit dem Timing spielen um es unempfindlicher gegen
auftretende Interrupts zu machen ?

Bei einem Mikrocontroller reicht es manchmal schon aus wenn man Programmteile
in eine andere Reihenfolge bringt oder irgendwie umsortiert. Bei richtiger Sortierung
bringen sie dann das selbe Ergebnis sind aber für Interrupts vom Zeitablauf besser
geeignet.

Ist jetzt nur mal so reingeworfen um dir ein paar Anhaltspunkte zum Nachdenken zu
geben.

Eventuell mußt du dafür ein paar kleine Änderungen im Programm machen oder Teile
auf andere Weise neu schreiben.

Eventuell mußt du deinen restlichen Programmablauf auf irgendeine Art und Weise mit dem
Sectic synchronisieren.

Gruß
Dino
 
vielleicht kannst du mal die "For Zeile = 7 To 0 Step -1" schleife mit Kommentaren versehen damit ich deine Gedanken wie das funktionieren soll nachvollziehen kann :stupido2:
Der Inhalt dieses Teils sollte für alles was mit Flackern usw. zu tun hat, vollkommen irrelevant sein.
Dort wird nur der Text aus Out_str in die Blöcke übersetzt, damit dann der Timer dies zum Display rausschieben kann. Ich kann es dir gerne erklären, aber es ändert nichts an deinem Problem.

Was viel wichtiger ist, dass du dir hierüber mal Gedanken machst, das scheint in deinem Code noch nicht drin zu sein:
Gedacht wäre das jetzt so:
Für die Anzeige werden immer die Blöcke 1-3 genommen.
Wenn ein neuer Text angezeigt werden soll, schreibst du ihn in eine Variable, z.B. die verwendete Variable Out_Str. Dann lässt du diese über die Konvertierung in die Blöcke 4-6 schreiben. Am besten setzt du die Befehle der For-Schleife in eine Sub und rufst diese dann auf. Da du die Blöcke 1-3 nicht mehr direkt beschreibst, werden dort natürlich stattdessen die Blöcke 4-6 beschrieben.
In deinem Hauptprogramm oder in einem Timer aktivierst du dann zu den gewünschten Zeiten den Wechsel.
Wenn der Wechsel fertig ist (scroll_position > 49) schreibst du die Blöcke 4-6 in die Blöcke 1-3 und deaktivierst den Wechsel. Dann bleibt der Text stehen bis du den nächsten Wechsel aktivierst.
Wenn du zeitkritische Abläufe mit sehr langsamen Berechnungen oder so verbindest, dann ist es wichtig, dass diese nur über kleine Schnittstellen verbunden sind.
Wenn es also 1ms dauert, um den neuen Inhalt der Matrix zu berechnen, dann darf dein Multiplex Timer nicht dazwischen kommen. Nun könntest du den Timer abschalten, dann hast du aber sofort ein Flackern in der Anzeige.
Besser ist es, die beiden mit sauber getrennten Variablen arbeiten zu lassen. Die Konvertierung also wie vorgeschlagen mit den Blöcken 4-6, den Multiplex Timer mit den Blöcken 1-3. Irgendwann musst du die Werte natürlich übergeben, aber das sind dann kurze Zuweisungen wie
Block4(zeile ) = Block3_w 'neuer Text
Block5(zeile ) = Block2_w 'neuer Text
Block6(zeile ) = Block1_w 'neuer Text
Wenn du ganz sicher gehen willst, klammerst du diese 3 Zuweisungen mit einem Disable-Enable Interrupts, damit dir keiner dazwischenfunkt.

Also schau dir noch mal meinen Vorschlag an, wie du die neue Zeit wechseln lässt.

HBA
 
Hallo zusammen
hier noch mal der
Angestrebter Ablauf :
1. Uhrzeit "13:45:50" <----------------------------------------------------------------*
ca. 30 s
2. Uhrzeit fährt aus dem Bilde und das Datum "09.04.11" folgt
ca. 5 s
3. Datum fährt aus dem Bilde und Temperatur "20°C" folgt
ca. 5 s >--------------------------------------------------------------------------------*
damit es keine Verständnisse Probleme gibt

ich habe jetzt mal versucht Datum mit im den Ablauf zubringen
es sieht auch schon ganz gut aus wenn ebne das zucken/flackern nicht währe
ich denke meine Lösung ist nicht so gut
Code:
'*******************************************************************************
'                              LED Matix Uhr
'*******************************************************************************

' µC Deklarationen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 30
$framesize = 40

' Ein-/Ausgänge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Config Porta = Output
Config Portb = Output
Config Portd.5 = Output                                     '<-- für PWM

Config Portc.0 = Input
Taster Alias Pinc.0
Portc.0 = 1

Dataout Alias Portb.2
Strobeout Alias Portb.1
Clockout Alias Portb.0
Enableout Alias Portd.5                                     '<-- für PWM

' Timer und Config +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Config Dcf77 = Pind.6 , Inverted = 0 , Timer = 1 , Debug = 0 , Check = 1 , Update = 1 , Updatetime = 59 , Gosub = Sectic
Config Date = Dmy , Separator = .

Config Timer0 = Timer , Prescale = 64
On Timer0 Timer_0
Enable Timer0
Start Timer0

'Config Base = 0                                             ' kann ich nicht verwenden wenn code über 4k ist weil nur BASCOM-AVR 2.0.5.0 nur als DEMO

Enable Interrupts

' Variablen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dim Helligkeitswert As Long

Dim I As Byte , Tmp As Byte

Dim Block1(8) As Word
Dim Block2(8) As Word
Dim Block3(8) As Word
Dim Block4(8) As Word
Dim Block5(8) As Word
Dim Block6(8) As Word

Dim Zeile As Byte

Dim Out_str As String * 16
Dim Out_ovly(16) As Byte At Out_str Overlay

Dim Buchstabe As Byte
Dim Offset As Word
Dim Temp As Byte

Dim Block1_w As Word
Dim Block2_w As Word
Dim Block3_w As Word


Dim Block1_l_b As Byte At Block1_w Overlay
Dim Block1_h_b As Byte At Block1_w + 1 Overlay

Dim Block2_l_b As Byte At Block2_w Overlay
Dim Block2_h_b As Byte At Block2_w + 1 Overlay

Dim Block3_l_b As Byte At Block3_w Overlay
Dim Block3_h_b As Byte At Block3_w + 1 Overlay

Dim Block1_2_long As Long At Block1_w Overlay
Dim Block2_3_long As Long At Block2_w Overlay


Dim Scroll_counter As Word
Dim Scroll_position As Byte , Scroll_tmp As Byte


Dim Wechsel_zeit As Byte
Dim Wechsel As Bit
'(
'  - - - -block1 - - - - -block2 - - - - - -block3 - - - - - -block4 - - - - -block5 - - - - - -block6 - -
7. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
6. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
5. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
4. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
3. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
2. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
1. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210
0. 54321098_76543210 54321098_76543210 54321098_76543210 5432109876543210 5432109876543210 5432109876543210

   11111122_22223333 33444444_55555566 66667777_77888888 1111112222223333 3344444455555566 6666777777888888
   Blck_3_l_blck_3_h Blck_2_l_blck_2_h Blck_1_l_blck_1_h
   76543210_76543210 76543210_76543210 76543210_76543210
')

' Werte ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Wechsel = 0
Scroll_position = 0
'*******************************************************************************
' Hauptschleife
'*******************************************************************************



Do


If Wechsel_zeit = 20 Then
    Toggle Wechsel
    Wechsel_zeit = 0
End If


If Wechsel = 0 Then
   If Scroll_counter > 70 Then
      Scroll_counter = 0
      If Scroll_position > 1 Then
         Decr Scroll_position
      Else
         Scroll_position = 0
      End If
   End If
Else
   If Scroll_counter > 70 Then
      Scroll_counter = 0
      If Scroll_position < 47 Then
         Incr Scroll_position
      Else
         Scroll_position = 48
      End If
   End If
End If

Loop
End


'*******************************************************************************
' SUB ,Gosub
'*******************************************************************************

Sectic:

If Wechsel = 0 Then
   Out_str = Time$
Else
   Out_str = Date$
End If

Incr Wechsel_zeit



If Out_str <> "" Then
   For Zeile = 7 To 0 Step -1

            For Buchstabe = 0 To 7

               If Buchstabe = 5 Then
                  Shift Block3_w , Left , 6
               Elseif Buchstabe = 6 Then
                  Shift Block3_w , Left , 4
               End If

               Shift Block1_2_long , Left , 6
               Offset = Out_ovly(buchstabe) - 32            'Leerzeichen (ASCII= 32) ist der erste Buchstabe, also 0
               Offset = Offset * 8
               Offset = Offset + Zeile
               Temp = Lookup(offset , My_data)
               Block1_l_b = Block1_l_b + Temp               'dies überschreibt nur die unteren 6 Bit

               If Buchstabe = 7 Then Exit For

               Temp = Block2_h_b
               If Buchstabe = 6 Then
                  Shift Temp , Right , 2
                  Temp = Temp And &B00001111
                  Block3_l_b = Block3_l_b + Temp
               Else
                  Block3_l_b = Temp
               End If

            Next Buchstabe

      Incr Offset

      If Wechsel = 0 Then
         Block1(zeile ) = Block3_w
         Block2(zeile ) = Block2_w
         Block3(zeile ) = Block1_w
      Else
         Block4(zeile ) = Block3_w                          'eingescrollter Text ist der gleiche wieder
         Block5(zeile ) = Block2_w
         Block6(zeile ) = Block1_w
     End If

   Next Zeile
   Out_str = ""
End If

Return

'*******************************************************************************
' Timer0 --> Anzeige Prozess
'*******************************************************************************

Timer_0:

Incr Scroll_counter
Porta.zeile = 1                                             'schaltet die vorherige Zeile aus (1=aus 0=ein)

Incr Zeile

If Zeile = 8 Then Zeile = 0

Strobeout = 0
Shiftout Dataout , Clockout , Block1(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block2(zeile ) , 0 , 16
Shiftout Dataout , Clockout , Block3(zeile ) , 0 , 16

If Scroll_position < 17 Then
    Select Case Scroll_position
      Case 1:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 1
      Case 2:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 2
      Case 3:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 3
      Case 4:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 4
      Case 5:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 5
      Case 6:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 6
      Case 7:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 7
      Case 8:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 8
      Case 9:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 9
      Case 10:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 10
      Case 11:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 11
      Case 12:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 12
      Case 13:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 13
      Case 14:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 14
      Case 15:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 15
      Case 16:
       Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16
    End Select

Else
   Shiftout Dataout , Clockout , Block4(zeile ) , 0 , 16
   If Scroll_position < 33 Then
      Scroll_tmp = Scroll_position - 16

      Select Case Scroll_tmp
        Case 1:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 1
        Case 2:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 2
        Case 3:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 3
        Case 4:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 4
        Case 5:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 5
        Case 6:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 6
        Case 7:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 7
        Case 8:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 8
        Case 9:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 9
        Case 10:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 10
        Case 11:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 11
        Case 12:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 12
        Case 13:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 13
        Case 14:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 14
        Case 15:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 15
        Case 16:
         Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      End Select

   Else
      Shiftout Dataout , Clockout , Block5(zeile ) , 0 , 16
      Scroll_tmp = Scroll_position - 32

       Select Case Scroll_tmp
        Case 1:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 1
        Case 2:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 2
        Case 3:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 3
        Case 4:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 4
        Case 5:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 5
        Case 6:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 6
        Case 7:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 7
        Case 8:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 8
        Case 9:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 9
        Case 10:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 10
        Case 11:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 11
        Case 12:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 12
        Case 13:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 13
        Case 14:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 14
        Case 15:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 15
        Case 16:
         Shiftout Dataout , Clockout , Block6(zeile ) , 0 , 16
      End Select

   End If
End If

Strobeout = 1

Porta.zeile = 0                                             ' schaltet die neue Zeile ein (1=aus 0=ein)

Return
'*******************************************************************************
' Zeichen Tabelle
'*******************************************************************************

$data                                                       '  * = noch nicht fertig
My_data:
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       'Leerzeichen
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '! *
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '" *"
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '# *
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '$ *
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '% *
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '& *
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '' *
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       '(  (Kammer auf*')
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B000000       ') (Kammer zu) *

Data &B000000 , &B001000 , &B101010 , &B011100 , &B101010 , &B001000 , &B000000 , &B000000       '*
Data &B000000 , &B001000 , &B001000 , &B111110 , &B001000 , &B001000 , &B000000 , &B000000       '+
Data &B000000 , &B000000 , &B000000 , &B000000 , &B011000 , &B001000 , &B010000 , &B000000       ',
Data &B000000 , &B000000 , &B000000 , &B111110 , &B000000 , &B000000 , &B000000 , &B000000       '-
Data &B000000 , &B000000 , &B000000 , &B000000 , &B000000 , &B011000 , &B011000 , &B000000       '.
Data &B000000 , &B000010 , &B000100 , &B001000 , &B010000 , &B100000 , &B000000 , &B000000       '/

Data &B011100 , &B100010 , &B100110 , &B101010 , &B110010 , &B100010 , &B011100 , &B000000       '0
Data &B001000 , &B011000 , &B101000 , &B001000 , &B001000 , &B001000 , &B111110 , &B000000       '1
Data &B011100 , &B100010 , &B000010 , &B000100 , &B001000 , &B010000 , &B111110 , &B000000       '2
Data &B011100 , &B100010 , &B000010 , &B001100 , &B000010 , &B100010 , &B011100 , &B000000       '3
Data &B000100 , &B001100 , &B010100 , &B100100 , &B111110 , &B000100 , &B000100 , &B000000       '4
Data &B111110 , &B100000 , &B111100 , &B000010 , &B000010 , &B100010 , &B011100 , &B000000       '5
Data &B011100 , &B100000 , &B100000 , &B111100 , &B100010 , &B100010 , &B011100 , &B000000       '6
Data &B111110 , &B000010 , &B000100 , &B001000 , &B010000 , &B010000 , &B010000 , &B000000       '7
Data &B011100 , &B100010 , &B100010 , &B011100 , &B100010 , &B100010 , &B011100 , &B000000       '8
Data &B011100 , &B100010 , &B100010 , &B011110 , &B000010 , &B000010 , &B011100 , &B000000       '9
Das Problem mit dem flackern betreibet mir Bauchscherzen da ich mit solchen Interrupt Problemen noch nicht so konfrontiert wurde
ich bitte daher um Hilfe :help:

ich möcht mich auch mal bedanke das ihr mir so gut bei meine Projekt helft:adore:
 
Hallo,

also wenn es etwas Zeit hat dann könnte ich die Tage mal versuchen da ne Lösung zu finden.
Kann aber wie gesagt ein paar Tage oder knapp 2 Wochen dauern da ich grad noch ein paar
andere Sachen am Hals hab.

Also im Endeffekt wird es auf Spielereien mit dem Timing rauslaufen. Das schonmal vorweg.
Du wirst also nicht drumrum kommen, Teile deines Programms in andere Reihenfolge zu setzen
oder umzuprogrammieren. Aber das werden wir dann ja sehen. Also ruhig Blut ... das wird schon ;)

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)