Code:
'******************************************************************************
'Name : Lauflicht5x.bas
'Purpose : Lauflicht für Weihnachtsbaum
'Version : V0.02
'Compiler : Bascom AVR 1.11.7.4
'
'Hardware (1) LED's bzw. Schaltverstärker
' an PB0 bis PB5
' (2) Schalttaster zur Hand/Auto- Steuerung
' an PD0 und PD1
'
'Chiptyp : AT90S2313
'******************************************************************************
$regfile = "2313def.dat" 'AT90S2313
$crystal = 4000000 'Quarz-Frequenz
Config Portb = Output 'PBx als Ausgänge
Config Portd = Input 'PDx als Eingänge
Dim W As Byte 'W= Werte in Lauflicht lesen
Dim I As Byte 'I= Schleife für 1 Durchgang
Dim J As Byte 'J= Vieviel mal Schleife
Dim Z As Byte 'Z= Zählerwert
Z = 1
Dim D As Byte
D = 20 'D= Anzahl der Schleifen
Dim T As Integer 'T= Taktzeit
T = 200
Portb = 63 ' alle Ports EIN
Wait 60 ' 60 sec Vorheizen
Auto:
Do
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Vor1
For I = 1 To 5
Read W
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Rueck1 'Zeiger auf Beginn der Daten setzen
For I = 1 To 5 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Neg1 'Zeiger auf Beginn der Daten setzen
For I = 1 To 5 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Neg2 'Zeiger auf Beginn der Daten setzen
For I = 1 To 5 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Add1 'Zeiger auf Beginn der Daten setzen
For I = 1 To 10 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Wechs1 'Zeiger auf Beginn der Daten setzen
For I = 1 To 12 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Kllauf1 'Zeiger auf Beginn der Daten setzen
For I = 1 To 3 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Waitms T
Next I
Next J
For J = 1 To D
If Pind.1 = 1 Then
Goto Hand: 'Hand/Auto- Ebene
End If
Restore Ende 'Zeiger auf Beginn der Daten setzen
For I = 1 To 2 'Lese nächsten Wert
Read W 'Setze Port
Portb = W
Wait 1
Next I
Next J
Loop
End
'+++++++++++++++++++++++++++++++++++++++++++
' Daten für verschiedene Lauflichtfunktionen
'+++++++++++++++++++++++++++++++++++++++++++
Vor1:
Data 33 , 34 , 36 , 40 , 48, '6 12345 einzenl vorwärts
Rueck1:
Data 48 , 40 , 36 , 34 , 33, '6 54321 einzeln rückwärts
Neg1:
Data 62 , 61 , 59 , 55 , 47, '6 12345 negiert einzeln
Neg2:
Data 47 , 55 , 59 , 61 , 62, '6 54321 negiert einzeln
Add1:
Data 32 , 33 , 35 , 39 , 47 , 63, '6 12345 addierend
Data 62 , 60 , 56 , 48 , '6 12345 subtrahierend
Wechs1:
Data 32 , 33 , 49 , 51 , 59 , 63, '6 1-15-152-1524-15243
Data 32 , 63 , 32 , 63 , 32 , 63, '6 3xalle
Kllauf1:
Data 37 , 42 , 52, '6 13-24-35
Ende:
Data 31 , 32, '6 12345 im Wechsel
Hand:
If Pind.1 = 0 Then
Goto Auto:
End If
If Pind.0 = 0 Then
Z = Z * 2
End If
If Z > 32 Then
Z = 1
End If
Portb = Z
Wait 1
Goto Hand:
Das ist der fertige Code, der bei mir im Steuergerät läuft.
Lesezeichen