Hallo,
Habe versucht deine Aussage um zu setzen.
Habe warscheinlich etwas nicht richtig verstanden.
Das Hauptprogramm fängt erst bei Ledon: an.
Die Definition P3 habe ich jetzt nur einmal.
Habe eine FOR Next Schleife eingebaut das war glaube ich nicht richtig.
Den Zusammenhang vom Interupt ins Programmspringen habe ich noch nicht richtig verstanden wo ?
Kannst du mir vielleicht zeigen wo ich die Änderungen machen soll.
mfgCode:$regfile = "m8def.dat" $crystal = 3686400 $baud = 9600 'Baudrate der UART: 9600 Baud 'Config Timer1 = Timer , Prescale = 64 'On Timer1 Timer_irq 'Const Timervorgabe = 7936 ' Const 7936 Config Timer1 = Timer , Prescale = 8 On Timer1 Timer_irq Const Timervorgabe = 54016 Ddrd = &B00000000 Ddrc = &B11111111 Portd = &B11111111 Dim Sekunden As Byte Dim P3 As Byte Dim P4 As Byte Dim A As Byte Dim T0 As Long Dim T1 As Long Dim E1 As Long Dim Durchl40 As Long Declare Sub Durchlauf10s Declare Sub Ledon Declare Sub Main Declare Sub Abfragen Declare Sub Ende Declare Sub Zler1 Enable Timer1 Enable Interrupts Main: P3 = Pind.3 '---------------------------------------------------------- '######## einschalten Portd.2 #################### '---------------------------------------------------------- Do Debounce Pind.2 , 0 , Abfragen , Sub 'Entprellt Loop '---------------------------------------------------------- '######## Abfrage des Portd.3 ################### '---------------------------------------------------------- Abfragen: Portc.3 = 1 A = 0 Do Zler1: Waitms 25 'P3 = Pind.3 If P3 = 0 Then Portc.1 = 1 'Led An ' Portc.2 = 1 ' Summer an Portc.2 an A = A + 1 Print " A " ; A If A = 8 Then Goto Ledon End If Goto Zler1 Else Portc.1 = 0 'Led Aus ' Portc.2 = 0 ' Summer an Portc.2 aus A = 0 End If Loop '---------------------------------------------------------- '############ Led und Summer ############################# '---------------------------------------------------------- Ledon: T0 = 0 T1 = 0 Print "S" 'Senden ein S über RS232 Sekunden = 0 ' Sek auf 0 stellen dass die 10 S 'Do For I = 1 to 40 If Sekunden < 10 Then Portc.0 = 1 'Led zeigt 10 Sek.an ' Print " " ; Sekunden ' Kontrolle der Skunden Else Portc.0 = 0 'Led wird aus geschaltet ' Sekunden = 0 'Sekunden werden auf 0 gestzt Goto Ende End If 'Print Pind.4 ; " " ' Kontrolle des Portsd.4 P4 = Pind.3 If P4 = 1 Then ' Print "0" 'Senden ein 0 über RS232 Portc.1 = 0 ' Led aus Portc.1 Portc.2 = 0 ' Summer an Portc.2 aus T0 = T0 + 1 Print "0" ; " " ; T0 Else ' Print "1" 'Senden ein 1 über RS232 Portc.1 = 1 ' Led ein Portc.1 Portc.2 = 1 ' Summer an Portc.2 ein T1 = T1 + 1 Print "1" ; " " ; T1 End If 'Waitms 25 ' Abfrage alle 25 ms 'Loop Next I '------------------------------------------------------------ '####### Ende ############### '------------------------------------------------------------ Ende: E1 = T0 + T1 Print "E" 'Senden ein E über RS232 Print " " Print " " Print " Treffer = " ; T1 Print " N.Treffer = " ; T0 Print " " Print " Gesammt = " ; E1 Print " " Print " Sekunde = " ; Sekunden Print " " Print " " T0 = 0 T1 = 0 Sekunden = 0 Portc.1 = 0 ' Led an Portc.1 aus Portc.2 = 0 ' Summer aus Portc.2 Portc.3 = 0 ' Laser einschalten Goto Main '------------------------------------------------------------- '########## Timer Skundenbasis ############################# '------------------------------------------------------------- Timer_irq: Timer1 = Timervorgabe Incr Sekunden Return End
Enterprise







Zitieren

Lesezeichen