Hallo neues Problem - Hoffe auf Hilfe
Hallo , nach der schnellen Hilfe von gestern heute nun ein neuer Versuch ...
Da ich mich erst seid kurzem mit dem dem Atlem und der Programmierung befasse ist vielleicht noch nicht alles perfekt .
hab damit angefangen eine Lichtsteuerung für mein Fahrzeug zu entwerfen erst einmal auf einen Testboard ...
Jetzt zu meinem Problem...
Wenn ich mit meinem kleinen Programm in ein Unterprogramm und dieses wird dieses auch ausgeführt -- aber mit Return springt er wieder zurück zu dem zuletzt ausgeführten Unterprogramm eigentlich sollte er zum Hauptprogramm zurückkehren .
Ich kopier mal den bisherigen Code dazu: vielleicht Hilfs ja ... nicht lachen .. mach das erst seid Samstg!
$regfile = "m8def.dat"
$crystal = 4000000
'--------------------------------------------------------------------- Konfiguration
Config Portb.1 = Output '-----------Innenleuchte
Config Pinb.0 = Input '-----------Türkontakt
Config Pinb.2 = Input 'Zündung an ( Licht soll ausgehen )
Config Portb.3 = Output 'Testleuchte ( wo das Programm steht entfällt später)
Config Portb.4 = Output '
Portb.0 = 1
Portb.2 = 1
'---------------------------------------------------------------------- Grundvariablen
Dim A As Byte
Dim I As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 ' PWM Timer
Compare1a = 255
Dim Richtung As Integer
Richtung = 0
'------------------------------------------------------------------------ Tasterabfragen
DO
Debounce Pinb.0 , 0 , Pr , Sub
Debounce Pinb.2 , 0 , Pa , Sub
Loop
End
'------------------------------------------------------------------------- Unterprogranmm Abdimmen
Pr:
If Richtung = 0 Then
Do
Compare1a = Compare1a - 1
Waitms 10
Loop Until Compare1a = 0
Richtung = 1
Portb.3 = 1
Wait 1
Portb.3 = 0
Gosub Vzr
Else
Return
End If
Return
'--------------------------------------------------------------------------- Unterprogramm Andimmen
Pa:
'---- If Richtung = 0 Then
'-------- if richtung = 1 then
Do
Compare1a = Compare1a + 1
Waitms 10
Loop Until Compare1a = 255
Richtung = 0
'------ Else
' Return
'------ End If
Return
'--------------------------------------------------------------------------- Timer für Nachleuchten
Vzr:
Portb = 1
Config Timer0 = Timer , Prescale = 1024 'Konfiguriere Timer1
Enable Timer0 'schalte den Timer1 ein
On Timer1 Isr_von_timer1
Enable Interrupts
Timer1 = 0
Do
If Pinb.2 = 0 Then
Gosub Pr
Else
Loop
End If
Return
'------------------------------------------------------------------------------
Isr_von_timer1: Timer0 'Timer0
Gosub Pr
Return
[/code]
Hallo und dank an den MeckPomLer.... Mein KFZ-Innenlichtstg
So danke erst mal zu dem Tip mit den ganzen Schleifen.... war ja auch verschleift ... [-o<
vielleicht wenn jamand lust hat ... geht vielleicht auch kürzer ? Oder besser ?
Stell ich den Code noch mal rein hoffe jetzt Richtig !
Code:
$regfile = "m8def.dat"
$crystal = 4000000
'----------------------Konfiguration---------------------------------------------
Config Portb.1 = Output '-----------Innenleuchte
Config Portb.0 = Input '-----------Türkontakt
Config Portb.2 = Input 'Zündung an ( Licht soll ausgehen )
Config Portb.3 = Output 'Testled ( wo das Programm steht entfällt später)
Config Portb.4 = Output 'Testled (wo das Programm steht entfällt später )
Config Portd.4 = Input 'ZV Eingang Türen auf
Config Portd.5 = Input 'ZV Eingang Türen zu
Pinb.0 = 1 'Pull upps
Pinb.2 = 1 'Pull upps
Pind.4 = 1 'Pull upps
Pind.5 = 1 'Pull upps
'------------------- Grundvariablen---------------------------------------------
Dim A As Byte
Dim I As Byte
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1 ' PWM Timer
Compare1a = 255
'------------------ Tasterabfragen----------------------------------------------
Main:
'schleife für Tasterabfragen
Do
Debounce Pinb.0 , 0 , Pr , Sub ' TÜRKONTAKT
Debounce Pind.4 , 0 , Prr , Sub ' ZV Tür auf
Loop
End
'--------------- Unterprogranmm Andimmen----------------------------------------
Pr:
Do
Compare1a = Compare1a - 1 ' Dimmvorgang
Waitms 5
Loop Until Compare1a = 0
Gosub Vzr ' geht zur Zeitverzögerung
'------------------- Unterprogramm langsam Andimmen ---------------------------
Prr:
Do
Compare1a = Compare1a - 1 ' Dimmvorgang
Waitms 15
Loop Until Compare1a = 0
' geht zur Zeitverzögerung
Gosub Vzr
Return
'------------------Unterprogramm schnell Andimmen -------------------
Paa:
Do
Compare1a = Compare1a + 1
Waitms 5
Loop Until Compare1a = 255
Goto Main
Return
'-----------------Unterprogramm Langsames Abdimmen -------------------------------
Pa:
Do 'Abdimmen
Compare1a = Compare1a + 1
Debounce Pinb.0 , 0 , Pr , Sub
Waitms 10
Loop Until Compare1a = 255
'
Goto Main
Return
'--------------------- Timer für Nachleuchten ---------------------------------
Vzr:
For I = 1 To 255 ' Timer Schleife
Debounce Pinb.2 , 0 , Paa , Sub ' ZV Tür Zu
Debounce Pind.5 , 0 , Pa , Sub ' ZV Tür Zu
Waitms 300 'Wartezeit
Next I
Gosub Pa 'Aufruf Abdimmen
Return
'----------------------------------- ende -------------------------------------
Also für Vorschläge bin ich offen ! Was will ich noch tun ? Coming / Living Home Funktion .. Soll heißen wenn es draußen dunkel ist sollen auch die Scheinwerfer mit andimmen ... Und wenn es draußen kalt ist könnt ja auch die Heizung mit angehen oder das Lenkrad vorwärmen ....
Danke noch mal das Ihr mich hier nicht auslacht aber die Micro Prozessor Geschichte hat mich irgendwie schon immer gereizt.