okay =)
kein Problem... der Code ist noch nicht fertig, daher sind einige deklarierte Variablen noch "unbenutzt" , nicht wundern =)
Außerdem wird das Projekt später auf einem Mega32 laufen, das tut aber jetzt nichts zur Sache.
los gehts:
Code:
$regfile = "m8def.dat"
$crystal = 16000000
Baud = 19200
Config Adc = Single , Prescaler = Auto
Start Adc
Config Spi = Hard , Interrupt = On , Master = Yes , Clockrate = 16
Enable Spi
Spiinit
Dim Eingangswort As Word
Dim Speicherwort As Word
Dim Analogwert1 As Word
Dim Analogwert2 As Word
Dim Analogwert3 As Word
Dim Takt As Byte
Dim Takt2 As Word
Dim Takt3 As Word
Dim Takt4 As Word
Dim Takt5 As Word
Dim Folge As Byte
Dim Sensortyp As Byte
Dim Freigeben As Bit
Dim Eingerichtet As Bit
Dim Puls As Bit
Dim Puls2 As Bit
Dim Zweihandimpuls As Bit
Dim Einganga As Byte
Dim Eingangb As Byte
Dim Eingangc As Byte
Dim Expander1 As Byte
Dim Expander2 As Byte
Dim Expander3 As Byte
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pinc.3 = Input
Config Pinc.2 = Input
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.0 = Output
Config Portc.4 = Output
Sensor1a Alias Pind.0
Sensor1c Alias Pind.1
Sensor1b Alias Pind.2
Sensor1d Alias Pind.3
Einrichten Alias Pinc.3
Zweihand Alias Pinc.2
Status1 Alias Portd.6
Status2 Alias Portd.7
Status3 Alias Portb.0
Freigabe Alias Portc.4
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portc.3 = 1
Portc.2 = 1
Const Sensora1 = 0
Const Sensora2 = 1
Const Sensora3 = 2
Const Sensora4 = 3
Const Sensora5 = 4
Const Sensora6 = 5
Const Sensorb1 = 10
Const Sensorb2 = 11
Const Sensorb3 = 12
Const Sensorb4 = 13
Const Sensorc1 = 6
Const Sensorc2 = 7
Const Sensorc3 = 8
Const Sensorc4 = 9
Const Sensord1 = 14
Const Sensord2 = 15
Const Extrafreigabe = 15
Const Sensorabcd = 0
Const Sensorcaus = 1
Do
Analogwert3 = Getadc(5)
Analogwert3 = Analogwert3 * 20
Analogwert2 = 250
Analogwert1 = 20000
If Zweihand = 1 Then
Takt3 = 0
Takt4 = 0
Takt5 = 0
Reset Zweihandimpuls
Reset Freigabe
Reset Folge.sensorabcd
Reset Folge.sensorcaus
If Einrichten = 1 Then
Expander1 = 0
Expander2 = 0
End If
End If
For Takt = 0 To Sensortyp
Incr Takt2
Select Case Takt2
Case 3000 : Set Puls
Case 5500 : Set Puls2
Case 6000 : Reset Puls
Case 6100 : Reset Puls2
Case 6200 : Takt2 = 0
End Select
If Folge.sensorabcd = 1 Then
Sensortyp = 15
Else
Sensortyp = 9
End If
If Eingerichtet = 0 Then Debounce Einrichten , 1 , Einrichtstatus , Sub
If Einrichten = 0 Then
Reset Freigabe
Reset Zweihandimpuls
Reset Eingerichtet
Expander1 = Low(speicherwort)
Expander2 = High(speicherwort)
Debounce Sensor1a , 0 , Aktiv1a , Sub
Debounce Sensor1b , 0 , Aktiv1b , Sub
Debounce Sensor1c , 0 , Aktiv1c , Sub
Debounce Sensor1d , 0 , Aktiv1d , Sub
Else
Debounce Zweihand , 0 , Zweihandaktiv , Sub
If Zweihand = 0 And Freigeben = 1 And Takt3 > Analogwert1 Then Set Folge.sensorabcd
End If
If Takt = 0 Then Set Freigeben
Eingangswort.sensora1 = Not Sensor1a
Eingangswort.sensorb1 = Not Sensor1b
Eingangswort.sensorc1 = Not Sensor1c
If Einrichten = 1 Then
If Zweihand = 0 And Freigabe = 1 And Folge.sensorcaus = 0 Then Incr Takt5
If Takt5 > Analogwert3 Or Folge.sensorcaus = 1 Then
Set Folge.sensorcaus
Eingangswort.sensorc1 = Speicherwort.sensorc1
Eingangswort.sensorc2 = Speicherwort.sensorc2
Eingangswort.sensorc3 = Speicherwort.sensorc3
Eingangswort.sensorc4 = Speicherwort.sensorc4
End If
If Eingangswort.takt < Speicherwort.takt Then Incr Takt4
If Zweihand = 0 And Takt4 > Analogwert2 Then Reset Freigeben
If Freigeben = 1 Then Incr Takt3
If Zweihand = 0 And Folge.sensorabcd = 0 Then
Expander1 = Low(speicherwort)
Expander1 = High(speicherwort)
Reset Expander2.2
Reset Expander2.3
Reset Expander2.4
Reset Expander2.5
End If
If Zweihand = 0 And Folge.sensorabcd = 1 Then
Expander1 = Low(speicherwort)
Expander2 = High(speicherwort)
End If
If Zweihand = 0 And Folge.sensorcaus = 1 Then
Reset Expander1.6
Reset Expander1.7
Reset Expander2.0
Reset Expander2.1
End If
End If
If Takt = Sensortyp And Einrichten = 1 And Zweihand = 0 Then
Freigabe = Freigeben
End If
Spiout Expander3 , 1
Spiout Expander2 , 1
Spiout Expander1 , 1
Status1 = Folge.sensorabcd
Status2 = Folge.sensorcaus
Next
Loop
End
Einrichtstatus:
Expander1 = 0
Expander2 = 0
Set Eingerichtet
Return
Zweihandaktiv:
Set Zweihandimpuls
Return
Aktiv1a:
If Speicherwort.sensora1 = 0 Then
Set Speicherwort.sensora1
Else
Reset Speicherwort.sensora1
End If
Return
Aktiv1b:
If Speicherwort.sensorb1 = 0 Then
Set Speicherwort.sensorb1
Else
Reset Speicherwort.sensorb1
End If
Return
Aktiv1c:
If Speicherwort.sensorc1 = 0 Then
Set Speicherwort.sensorc1
Else
Reset Speicherwort.sensorc1
End If
Return
Aktiv1d:
If Speicherwort.sensord1 = 0 Then
Set Speicherwort.sensord1
Else
Reset Speicherwort.sensord1
End If
Return
Lesezeichen