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







Zitieren

Lesezeichen