Code:
'--------Drehlicht-----V1.13-neu---------------
' 8MHz RC Intern
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 200
$swstack = 200
$framesize = 200
'---Config Port's -----------------
Config Portb = Output 'Leds
Portb = 255
Config Portd = Input
Portd = 255
'---config Int0------
Config Int0 = Falling
Enable Int0
On Int0 Kontakt
'--- Config Timer1 ----
Config Timer1 = Timer , Prescale = 8
Enable Timer1
'--- Config Timer0 ------
Config Timer0 = Timer , Prescale = 8
Enable Timer0
On Timer0 Spalten
Enable Interrupts
Load Timer0 , 255
Dim Drehzeit As Long
Dim Spaltenzeit As Word
Dim B1 As Byte
Dim Spalte(350) As Byte
Dim Array_zaehler As Word
Dim A As Byte
Dim I As Byte
'Saetze
Dim Satz As String * 45
Dim Zeichen As String * 1
Dim Asc_zeichen As Byte
Dim Satzlaenge As Word
Dim X As Word 'Spaltenzaehler für Zeichen auftragen
Dim Zeichenasc As Byte
Dim Lowchar As Byte
Dim Hichar As Byte
Dim Tabadr As Word
Dim Index As Word
Timer1 = 0
Timer0 = 0
Array_zaehler = 0
X = 0
'--------------------Hauptprogramm--------------------------
For X = 1 To 350 'Array Löschen
Spalte(x) = 255 'max. Spalten
Next X
X = 0
'--------------------------------------------------
Waitms 20
Do
Satz = "Test Test Test Test Test Test"
Gosub Auswerten
Waitms 20
Satz = "0123456789"
Gosub Auswerten
Waitms 50
Satz = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Gosub Auswerten
Waitms 50
Satz = "abcdefghijklmnopqrstuvwxyz"
Gosub Auswerten
Waitms 50
Satz = "Ende"
Gosub Auswerten
Waitms 50
Loop
End
'==============================Unterprogramme===================================
'--------------ISR von Int0--------------------
Kontakt:
Drehzeit = Timer1
Timer1 = 0
Timer0 = 0
Spaltenzeit = Drehzeit / 510
Array_zaehler = 0
Return
'------------ISR von Timer0 --------------------
Spalten:
Load Timer0 , Spaltenzeit
Portb = 255 'Lösche Spalte
If Array_zaehler < 350 Then
Incr Array_zaehler
Portb = Spalte(array_zaehler) 'Werte auf Rotor auftragen
End If
Return
'--------------------Zeichen Auswerten ----------------------
Auswerten:
For X = 1 To 350 'Array Löschen
Spalte(x) = 255
Next X
Satzlaenge = Len(satz) 'Ermittle die Satzlänge
X = Satzlaenge * 7 'Errechne die Position
X = X / 2 'für den Start
X = 175 - X
For A = 1 To Satzlaenge 'Eine Schleife für jedes Zeichen der Satzlänge
Zeichen = Mid(satz , A , 1) 'Zeichen pro Zeichen auswerten
Zeichenasc = Asc(zeichen)
If Zeichen = " " Then 'Leerzeichen machen
For I = 1 To 7
Incr X
Spalte(x) = 255
Next I
End If
Lowchar = 65 'Prüfe Zeichen A-Z
Hichar = 90
Tabadr = Loadlabel(abc_gross)
Gosub Daten_suchen
Lowchar = 97 'Prüfe Zeichen a-z
Hichar = 122
Tabadr = Loadlabel(abc_klein)
Gosub Daten_suchen
Lowchar = 48 'Prüfe Zahlen 0-9
Hichar = 57
Tabadr = Loadlabel(123)
Gosub Daten_suchen
Next A
Return
'--------------Daten von Zeichen suchen---------------------------------------
Daten_suchen:
If Zeichenasc >= Lowchar And Zeichenasc <= Hichar Then
Index = Zeichenasc - Lowchar
Index = Index * 5
Tabadr = Tabadr + Index
For I = 1 To 5
Incr X
Spalte(x) = Cpeek(tabadr) 'hole Daten
Incr Tabadr
Incr Index
Next I
Incr X
Spalte(x) = 255 'leere Spalte
Incr X
Spalte(x) = 255 'leere Spalte
End If
Return
'----------Zeichensatz--------------------
Abc_gross:
Data &B10000001 , &B01101111 , &B01101111 , &B01101111 , &B10000001
Data &B00000001 , &B01101101 , &B01101101 , &B01101101 , &B10010011
Data &B11000111 , &B10111011 , &B01111101 , &B01111101 , &B01111101
Data &B00000001 , &B01111101 , &B01111101 , &B10111011 , &B11000111
Data &B00000001 , &B01101101 , &B01101101 , &B01111101 , &B01111101
Data &B00000001 , &B01101111 , &B01101111 , &B01111111 , &B01111111
Data &B10000011 , &B01111101 , &B01101101 , &B01101101 , &B01100011
Data &B00000001 , &B11101111 , &B11101111 , &B11101111 , &B00000001
Data &B11111111 , &B01111101 , &B00000001 , &B01111101 , &B11111111
Data &B11111011 , &B01111101 , &B00000001 , &B01111111 , &B11111111
Data &B00000001 , &B11101111 , &B11010111 , &B10111011 , &B01111101
Data &B00000001 , &B11111101 , &B11111101 , &B11111101 , &B11111101
Data &B00000001 , &B10111111 , &B11001111 , &B10111111 , &B00000001
Data &B00000001 , &B11011111 , &B11101111 , &B11110111 , &B00000001
Data &B10000011 , &B01111101 , &B01111101 , &B01111101 , &B10000011
Data &B00000001 , &B01101111 , &B01101111 , &B01101111 , &B10011111
Data &B10000011 , &B01111101 , &B01110101 , &B01111011 , &B10000101
Data &B00000001 , &B01101111 , &B01100111 , &B01101011 , &B10011101
Data &B10011101 , &B01101101 , &B01101101 , &B01101101 , &B01110011
Data &B01111111 , &B01111111 , &B00000001 , &B01111111 , &B01111111
Data &B00000011 , &B11111101 , &B11111101 , &B11111101 , &B00000011
Data &B00000111 , &B11111011 , &B11111101 , &B11111011 , &B00000111
Data &B00000011 , &B11111101 , &B11100011 , &B11111101 , &B00000011
Data &B00111001 , &B11010111 , &B11101111 , &B11010111 , &B00111001
Data &B00011111 , &B11101111 , &B11110001 , &B11101111 , &B00011111
Data &B01111001 , &B01110101 , &B01101101 , &B01011101 , &B00111101
Abc_klein:
Data &B11111011 , &B11010101 , &B11010101 , &B11010101 , &B11100001
Data &B00000001 , &B11110101 , &B11101101 , &B11101101 , &B11110011
Data &B11100011 , &B11011101 , &B11011101 , &B11011101 , &B11111011
Data &B11110011 , &B11101101 , &B11101101 , &B11110101 , &B00000001
Data &B11100011 , &B11010101 , &B11010101 , &B11010101 , &B11100111
Data &B11101111 , &B10000001 , &B01101111 , &B01111111 , &B10111111
Data &B11001111 , &B10110101 , &B10110101 , &B10110101 , &B10000011
Data &B00000001 , &B11101111 , &B11011111 , &B11011111 , &B11100001
Data &B11111111 , &B11111111 , &B10100001 , &B11111111 , &B11111111
Data &B11111011 , &B11111101 , &B11011101 , &B01000011 , &B11111111
Data &B00000001 , &B11110111 , &B11101011 , &B11011101 , &B11111111
Data &B11111111 , &B01111101 , &B00000001 , &B11111101 , &B11111111
Data &B11000001 , &B11011111 , &B11100111 , &B11011111 , &B11100001
Data &B11000001 , &B11101111 , &B11011111 , &B11101111 , &B11100001
Data &B11100011 , &B11011101 , &B11011101 , &B11011101 , &B11100011
Data &B11000001 , &B11010111 , &B11010111 , &B11010111 , &B11101111
Data &B11101111 , &B11010111 , &B11010111 , &B11100111 , &B11000001
Data &B11000001 , &B11101111 , &B11011111 , &B11101111 , &B11101111
Data &B11101101 , &B11010101 , &B11010101 , &B11010101 , &B11111011
Data &B11011111 , &B00000011 , &B11011101 , &B11111101 , &B11111011
Data &B11000011 , &B11111101 , &B11111101 , &B11111011 , &B11000001
Data &B11000111 , &B11111011 , &B11111101 , &B11111011 , &B11000111
Data &B11000011 , &B11111101 , &B11110011 , &B11111101 , &B11000011
Data &B11011101 , &B11101011 , &B11110111 , &B11101011 , &B11011101
Data &B11001111 , &B11110101 , &B11110101 , &B11110101 , &B11000011
Data &B11011101 , &B11011001 , &B11010101 , &B11001101 , &B11011101
123:
Data &B10000011
Data &B01011101
Data &B01101101
Data &B01110101
Data &B10000011
Data &B11111111
Data &B10111101
Data &B00000001
Data &B11111101
Data &B11111111
Data &B10111101
Data &B01111001
Data &B01110101
Data &B01101101
Data &B10011101
Data &B01111011
Data &B01111101
Data &B01011101
Data &B00101101
Data &B01110011
Data &B11100111
Data &B11010111
Data &B10110111
Data &B00000001
Data &B11110111
Data &B00011011
Data &B01011101
Data &B01011101
Data &B01011101
Data &B01100011
Data &B11000011
Data &B10101101
Data &B01101101
Data &B01101101
Data &B11110011
Data &B01111111
Data &B01110001
Data &B01101111
Data &B01011111
Data &B00111111
Data &B10010011
Data &B01101101
Data &B01101101
Data &B01101101
Data &B10010011
Data &B10011111
Data &B01101101
Data &B01101101
Data &B01101011
Data &B10000111
@bluesmash
Lesezeichen