t4-torsten
13.01.2009, 14:45
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]
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]