Raf, werkt je code nu?
Nu al die "Goto's" weg zijn, is de code leesbaar.
Ik ben zo vrij geweest om nog wat ruwe kantjes van je structuur te veranderen:
'****************************************************************
'* Name : kleine epw micro.BAS *
'* Author : [raf janssens] *
'* *
'* Date : 22-12-2014 *
'* Version : 1.4 *
'* Notes : *
'* : *
'****************************************************************
Device 12F629 ; processor type 12F628
Xtal 4
Config INTRC_OSC_NOCLKOUT,_ ; Interne oscilator aan
WDT_OFF,_ ; WatchDog Timer uit
PWRTE_ON,_ ; Power-up Timer Enable aan
MCLRE_ON,_ ; Externe Master Reset Enable aan
BODEN_OFF,_ ; Brown Out Detectie Enable uit
CP_ON ; Code Protection aan
All_Digital TRUE ; Alle poorten digitaal
Symbol sw1 = GPIO.2 ; ingang van vorige pic
Symbol sw2 = GPIO.3 ; detect inloop spoor
Symbol sw3 = GPIO.4 ; detect stop spoor
Symbol poort2 = GPIO.0 ; uitgang naar volgende pic
Symbol poort1 = GPIO.1 ; uitgang pwm
Dim waarde As Word ; Variabele waarde pwm
Dim test As Byte
Clear ; Wis alle ram geheugen
GPIO.1 = 0 ; pwmlaag maken (invers pwm)
DelayMS 500 ; Stabilisering 0.5_sec
; 543210 ; Hulpregel Poort poort_A
GPIO = %000000 ; Zet poort_A laag
TRISIO = %111100 ; Poort_A als ingang
test = 0
;start: -> vervangen door een 'oneindige' lus - label is dan niet meer nodig
While(1=1)
;als het vorige sein groen is doe dan niets
While sw1 = 1
Wend
For waarde = 0 To 255
DelayMS 5
While sw3 = 1
Wend
If waarde > 250 Then
waarde = 255
;Stuur 5 pulsen met pulsbreedte 'Duty', naar PORTA.1
PWM GPIO.1, waarde, 1
Next
PWM GPIO.1,255 ,1
;trein op het inloopspoor poort uitgang hoog maken
While (sw2 = 1 And sw3 = 1)
Wend
;trein op het inloopspoor poort uitgang hoog maken
poort2 = 1
;zolang er geen trein is op het inloopspoor poort uit laag houden
While sw3 = 1
Wend
;als vorige sein rood is doe dan niets
While sw1 = 0
Wend
For waarde = 255 To 0 Step - 2
DelayMS 20
If waarde < 5 Then
waarde = 0
PWM GPIO.1, waarde, 1
Next
PWM GPIO.1,0 ,1
While sw2 = 0
Wend
;zolang stop en inloop bezet is uitgang hoog houden
While sw3 = 0
Wend
;stop en inloop leeg dan poort uitgang laag maken
poort2 = 0
Wend