Hallo,
Ik ben bezig met een transceiver besturing te maken met een 16f8777 nu kom ik het volgende probleem tegen...
Ergens heb ik de volgende JAL code die niet werkt
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQS
STARTSCAN = 80 ;START CH#
STOPSCAN = 120 ;STOP CH#
if (PLLCHCOUNT<=STOPSCAN) then PLLCHCOUNT = PLLCHCOUNT + 1 ;CH hoger
else PLLCHCOUNT = STARTSCAN ;CH begin
end if
end PROCEDURE
MAAR WAT WEL WERKT ZONDER VARIABLEN
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQS
if (PLLCHCOUNT<=120) then PLLCHCOUNT = PLLCHCOUNT + 1 ;CH hoger
else PLLCHCOUNT = 80 ;CH begin
end if
end PROCEDURE
Iemand een idee ??? .....dit is zo frustrerend
(
STOPSCAN = 120
TOP CH#
Hier staat een dubbele punt ipv punt comma
[Bericht gewijzigd door Zylar op (40%)]
SORRY Zylar dit is niet de fout..ik had het commentaar later toegevoegt voor de leesbaarheid op het forum...overigens de compiler geeft in beide procedures geen errors ( als de ; wel juist zijn)
[Bericht gewijzigd door semtex op (11%)]
Hoef je in JAL je variabelen niet te declareren?
Je zegt dat het niet werkt, maar wat werkt er dan niet of wat gebeurt er nog wel?
De variablen zijn al declarereert ergens in begin van het programma ..ik post alleen de procedure anders wordt zoveel.
STARTSCAN verwijst naar 145.000 mhz (80 x 12500 ) + 144 mhz
STOPSCAN verwijst naar 145.500 mhz (120 x 12500) + 144 mhz
Ergens anders in het programma wordt PLLCHCOUNT gebruikt om de juiste deler waarden te berekenen voor de pll.
De bovenste procedure gaat echter scannen van 144.000 tot 144.0125 mhz
DE onderste procedure gaat scannen tussen 145.000 mhz en 145.500 mhz
STARTSCAN en STOPSCAN worden alleen in deze procedure gebruik en nergens anders ,behalve dan waar ze hun waardes krijgen ergens in de MAIN.
WAAROM DOEN BIJDE PROCEDURES NIET HET ZELFDE EN HET JUISTE ???
Mod-edit: Waarom gaan we schreeuwen?
[Bericht gewijzigd door Henry S. op (43%)]
falaigai
Leren kan je alleen maar door te Doen
je zegt vage foutmelding..
Maar waar/wat is deze ?
[Bericht gewijzigd door falaigai op (10%)]
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
- Kan je de code geven inclusief de declaractries van de variabelen?
- ligt het verschil aan STARTSCAN of aan STOPSCAN?
- je zegt dat de var's elders niet gebruik worden. hoed werkt het als je in het eerste geval de var's lokaal declareert?
[Bericht gewijzigd door Wouter van Ooijen op (34%)]
;MAIN T813 in 12,5khz
;test frequentie 145.4750 ->124.075
;144 tot 146 mhz zenden
;122,6 tot 124.6 lo ontvangen
;LET OP ALLES WERKR IN DEZE BESTURING MET 160 KANAAL NUMMER 144 MHZ TO 146 MHZ
; !!ALLES IS HIER UIT ALGELEID !!!
;HET HOOFD PROGRAMMA SCHIJFT DISPLAY,SCHRIJFT PLL INDIEN PLLchCOUNT IS GEWIJZIGT EN WACHT OP INPUT
;HET EEPROM geheugen bevat een shaduw van de RAM geheugen De procedure LAADEPROM2RAM laat de geheugen waardes naar RAM
;************** spi routine ****************
include 16f877_bert
gie = 0
;-------------deler waarden voor 2 meterband 144.000 - 146.000------
var byte
STARTSCAN = 80 , ;VAR VOOR START KANAAL SCANNEN
STOPSCAN = 159 , ;VAR VOOR STOP KANAAL SCANNEN
PLLBNOWS= 0x74 , ; actuele word in de de deler 145.475
PLLANOWS= 0x26 ,
PLLBNOWR= 0x63 , ; actuele word in de de deler
PLLANOWR= 0x1A ,
PLLCHCOUNT = 118 , ;kanaal nummer voor index teller tabel array !! het gaat om het onvangst kanaal !!! ivm evt SHIFT bij zenden
BYTETOSEND = 0 ;var voor sendbyte routine
VAR BYTE kanaalnaarpll_RNOW = 119 ; waarden anders dan PLLCHCOUNT zodat routine zie dat deze moet worden geupdate
; variable is bedoelt om bij te houden of de funtie kanaalnaarpll_R()
;niet ovewr bodig is om uit te voeren
VAR BYTE MEMSCANBANK[10] = {128,29,80,131,132,133,134,135,136,137} ; EERSTE ellement DEFAULT CH bij aanzetten DE REPEATER KANALEN
VAR BYTE MEMSCANINDEX = 0 ; TELLER SCANNER
VAR BYTE FREQTEXT[8] = {"1","4","5",".","4","7","5","0"} ;string arrray voor display
VAR BIT SEND = 0 ; bit welke hoog is tijdens zenden
VAR BIT SHIFT = 0 ;bit welke actuele waarde shift aan geeft (SHIFT==1 >> -600khz)
VAR BIT UP_DOWN = 1 ; BIT = 1 OMHOOG SCANNEN BIT = 0 NAAR BENEDEN SCANNEN
;VAR BIT drie,vier,vijf,zes,zeven
;ini pic
TRISb = OUTPUT
TRISC = OUTPUT ;later anders
TRISD = OUTPUT ;Chip enable lijnen
PORTD = 0x00
delay_1ms(15)
ASM BCF PORTd,1 ;rs Display
;*********** spi ini ******************
GIE = 0
SSPEN = 0
SMP = 1
CKE = 1 ;welke flank
CKP = 0 ;idle waarde klok
SSPM3 = 0 ; VOOR FREQ KLOK
SSPM2 = 0
SSPM1 = 0 ;64
SSPM0 = 1 ; 16 BIJ HOGERE KLOK TREED ER ERNSTIGE VERVORMING OP IN DE DIGI PULSEN
sspen = 1
;*************************************************************************
PROCEDURE PULS() IS
asm bSf portB,6
DELAY_1ms(1)
asm bCf portB,6
DELAY_1ms(1)
END PROCEDURE
;*************************************************************************
;***************************************
procedure sendbyte is
;GIE = 0 ;interups uit
SSpif = 0 ;flag interupt 1 als data verzonden
sspbuf = bytetosend ;start zenden comando
WHILE (sspif==0) loop end loop ;Zolang nul wordt er no data verzonden
;GIE = 1
end procedure
;***************************************
procedure kloknaaruitgang() is
ASM BSF PORTD,3 ;klok naar de data naar uitgangnen 4094
ASM BCF PORTD,3
delay_1ms(8) ;ff wachteb !!!!! de grote hiervan nog bepalen bij grote freq sprong 2 mhz
end procedure
;****************************************************************************
;haal actuele deler insteligen op en SCHIJF de juiste deler waarde naar pll voor zenden
;en klok voor de 4094 dus
procedure SCHIJFPLLWORD_S is
BYTETOSEND = PLLBNOWS
sendbyte()
BYTETOSEND = PLLANOWS
sendbyte()
kloknaaruitgang()
end procedure
;*******************************************************************************
;****************************************************************************
;haal actuele deler insteligen op en SCHIJF de juiste deler waarde naar pll voor ontvangen
;en klok voor de 4094 dus
procedure SCHIJFPLLWORD_R is
BYTETOSEND = PLLBNOWR
sendbyte()
BYTETOSEND = PLLANOWR
sendbyte()
kloknaaruitgang()
end procedure
;***********************************************************************
;Dexe procedure zet het kanaal nummer om in de juiste deler instelingen
;voor ontvangst en schrijft ze naar de actuele pll deler instelingen register
;PLLBNOWR en PLLANOWR en roep dan de routime aan op deze in de pll zet zetten
Procedure kanaalnaarpll_R() is
VAR byte B
var byte BTEL = 98, ;144000mhz start waardes
ATEL = 08 ;" "
B = 0 ;lus teller
WHILE(B!=PLLCHCOUNT) loop
ATEL = ATEL + 1
if (ATEL==100) then BTEL = BTEl + 1
ATEL = 0
else end if
B = B + 1
end loop
PLLBNOWR = BTEL
PLLANOWR = ATEL
schijfpllword_R() ;EN SCHRIJF NAAR PLL
kanaalnaarpll_RNOW = PLLCHCOUNT ; ververs zodat te zien is dat deze routine al gedaan is
end procedure
;***********************************************************************
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
STARTSCAN = 80
STOPSCAN = 120
; !!up_down kan door rotery scan richting bepalen
if (PLLCHCOUNT<=120) then PLLCHCOUNT = PLLCHCOUNT + 1
else PLLCHCOUNT = 80
end if
end PROCEDURE
;*******************************************************************
;Geheugen bank scan Array van 10 ellement ( 10 geheugens)
PROCEDURE MEMSCAN() IS
PLLCHCOUNT = MEMSCANBANK[MEMSCANINDEX]
MEMSCANINDEX = MEMSCANINDEX + 1
IF (MEMSCANINDEX>9) THEN MEMSCANINDEX = 0 ;WANT TELLER INDEX 0 TOT 9 = 10
ELSE END IF
end PROCEDURE
;**********************************************************************
;**********************************************************************
;kanaal omhoog
PROCEDURE UP1CH() IS
PLLCHCOUNT = PLLCHCOUNT + 1
IF (PLLCHCOUNT>=160) THEN PLLCHCOUNT = 0
ELSE END IF
end PROCEDURE
;**********************************************************************
;**********************************************************************
;kanaal omlaag
PROCEDURE DOWN1CH() IS
IF (PLLCHCOUNT==0) THEN PLLCHCOUNT = 160
ELSE END IF
PLLCHCOUNT = PLLCHCOUNT - 1
end PROCEDURE
;**********************************************************************
;**********************************************************************
;stuur comamdo naar lcd 4780
PROCEDURE SENDCMDLCD() IS
asm bcf portd,1 ;het gaat om comando
SENDBYTE()
ASM BSF PORTD,2 ;klok naar de data naar uitgangnen 4094
ASM BCF PORTD,2
ASM BSF PORTD,0 ;enable bit hoog klok in het lcd !!!! kan dit kleiner !!!!!
delay_1ms(1)
ASM BCF PORTD,0 ;weer laag
end PROCEDURE
;**********************************************************************
;**********************************************************************
;stuur charter naar lcd 4780
PROCEDURE SENDCHARLCD() IS
asm bsf portd,1 ;het gaat om character
SENDBYTE()
ASM BSF PORTD,2 ;klok naar de data naar uitgangnen 4094
ASM BCF PORTD,2
ASM BSF PORTD,0 ;enable bit hoog klok in het lcd !!!! kan dit kleiner !!!!!
delay_1ms(1)
ASM BCF PORTD,0 ;weer laag
end PROCEDURE
;**********************************************************************
;**********************************************************************
PROCEDURE INILCD() IS
bytetosend = 0x38
sendcmdlcd()
bytetosend = 0x0e
sendcmdlcd()
bytetosend= 0x06
sendcmdlcd()
bytetosend = 0x01
sendcmdlcd()
delay_1s(1)
bytetosend = 0b10000011
sendcmdlcd()
end PROCEDURE
;**********************************************************************
;***************************************
;Als er gezonden word de zend frequentie en anders de onvangst
procedure FREQ2DISPLAY() is
VAR word KANAALmaalRaster ;0-80 X 125
VAR byte Teller,AantalSUBTRACTIES
if ((SHIFT==1)&(SEND==1)) then Teller = PLLCHCOUNT - 48 ; - 600khz idien nodig alleen tijdens zenden uitgevoert
else Teller = PLLCHCOUNT end if
if (teller<80) then FREQTEXT[2] = "4" else end if
if (teller>=80) then FREQTEXT[2] = "5" Teller = teller - 80 else end if
Kanaalmaalraster = TEllER
Kanaalmaalraster = Kanaalmaalraster * 125
AantalSUBTRACTIES = 0
While (Kanaalmaalraster>=1000) loop
Kanaalmaalraster = Kanaalmaalraster - 1000
AantalSUBTRACTIES = AantalSUBTRACTIES + 1
end loop
FREQTEXT[4] = AantalSUBTRACTIES + 48
AantalSUBTRACTIES = 0
While (Kanaalmaalraster>=100) loop
Kanaalmaalraster = Kanaalmaalraster - 100
AantalSUBTRACTIES = AantalSUBTRACTIES + 1
end loop
FREQTEXT[5] =AantalSUBTRACTIES + 48
AantalSUBTRACTIES = 0
While (Kanaalmaalraster>=10) loop
Kanaalmaalraster = Kanaalmaalraster - 10
AantalSUBTRACTIES = AantalSUBTRACTIES + 1
end loop
FREQTEXT[6] = AantalSUBTRACTIES + 48
if (Kanaalmaalraster==5) then FREQTEXT[7] = "5" else end if
if (Kanaalmaalraster==0) then FREQTEXT[7] = "0" else end if
bytetosend = 0b10000011 ;positie op scherm
sendcmdlcd()
var byte xx = 0
while (xx<8) loop ;shrijf text
bytetosend = FREQTEXT[xx]
sendcharlcd()
xx = xx + 1
end loop
end procedure
;*********************************************************************************
;***************************************
; KOPIEEER DE GEGEVENS UIT EEPROM NAAR WERK GEHEUGEN (ram)
; ADRESS 0 -> FREQUENTIE ALS T813 AAN GAAT = PLLCOUNT
; ADRESS 32 -> TABEL 10 GEHEUGEN KANALEN
; ADRESS 64 -> CALL GEBRUIKER
; ADRESS 98 -> SCAN FUNTIE START CH# EN STOP CH#
; ADRESS 128 ->
procedure EEPROM2RAM() is
var byte adresscount = 0
PLLCHCOUNT = Data_EEprom(0)
adresscount = 32
While(adresscount<42) loop
MEMSCANBANK[adresscount-32] = Data_EEprom(adresscount)
adresscount = adresscount + 1
end loop
adresscount = 64
;While(adresscount<71) loop
;; CALL[adresscount-64] = Data_EEprom(adresscount)
;; adresscount = adresscount + 1
; end loop
STARTSCAN = Data_EEprom(98)
STOPSCAN = Data_EEprom(99)
end procedure
;*********************************************************************************
;******************************************************
;FUNCTIE WORDT AAN GEROEPEN NAAR HET DRUKKEN VAN ENTER
; KOPIEEER DE GEGEVENS UIT RAM NAAR EEPROM
; ADRESS 0 -> FREQUENTIE ALS T813 AAN GAAT = PLLCOUNT
; ADRESS 32 -> TABEL 10 GEHEUGEN KANALEN
; ADRESS 64 -> CALL GEBRUIKER
; ADRESS 98 -> SCAN FUNTIE START CH# EN STOP CH#
; ADRESS 128 ->
procedure RAM2EEPROM () is
var byte adresscount = 0
Data_EEprom_write(0,PLLCHCOUNT)
adresscount = 32
While(adresscount<42) loop
Data_EEprom_write(adresscount,MEMSCANBANK[adresscount-32])
adresscount = adresscount + 1
end loop
adresscount = 64
;While(adresscount<71) loop
; Data_EEprom_write(adresscount,CALL[adresscount-64])
; adresscount = adresscount + 1
; end loop
Data_EEprom_write(98,STARTSCAN)
Data_EEprom_write(99,STOPSCAN)
end procedure
;*********************************************************************************
;EEPROM2RAM() ;laad de gebruiker gegevens uit het EEprom
INILCD()
;RAM2EEPROM ()
;********************** MAIN LOOP ********************************
WHILE (TRUE) loop
;knaalnaarpll_S deze procedure zal iets uitgebruider zijn omdat hier ook naar SHIFT -600KHZ GEKEKEN MOET WORDEN
if (PLLCHCOUNT!=kanaalnaarpll_RNOW) then kanaalnaarpll_R else end if ;bereken de pll istelingen ONTVANGST de waades
;PLLBNOWR EN PLLANOWR idien nodog en schrijf deze naar pll
FREQ2DISPLAY ()
;PLLCHCOUNT = PLLCHCOUNT + 1
delay_10ms(10)
SCANBAND()
STARTSCAN = 80
STOPSCAN = 120
;STARTSCAN = 80 , ;VAR VOOR START KANAAL SCANNEN
;STOPSCAN = 159 ;VAR VOOR STOP KANAAL SCANNENSCANBAND()
;FREQ2DISPLAY ()
end loop
Probleem treed op met STARTSCAN EN STOPSCAN .... STARTSCAN WORDT STEEDS 0 op een af andere manier en STOPSCAN 1 . In het geval dat dat ik voor STARTSCAN 80 in vul en STOPSCAN ALS VARIABLE gebruik gaat de routine ook niet goed ..DE routine werkt alleen als ik geen variablen gebruik .... maar dan kan ik deze niet wijzigen en de routine niet echt nuttig
VEEL DANK voor je reactie iig !!!
[Bericht gewijzigd door Henry S. op (1%)]
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
> ASM BCF PORTd,1 ;rs Display
doe dat iig niet, zo werk je om de port shadow heen
==========================
je zegt dat de waarden 0 en1 worden, maar hoe weet je dat?
[Bericht gewijzigd door Wouter van Ooijen op (36%)]
bedankt voor je reactie .... 0 en 1 vermoed ik om dat hij dan gaat scannen tussen 144.000 en en stap verder 144.0125 ..dit komt overeen met 0 en 1
Nu moet ik je helaas wel vragen wat een port shadow is ?? Wat is dan de wel de juist manier ?? want ik vond dit juist een mooie korte methode in assembly
Vind jij het niet raar dat een variable met bijvoorbeeld waarde 80 en een vaste waarde van 80 niet het zelfde doen in mijn routine ?
ik heb alle ASM BCF PORTd,1 vervangen door pin_D1 = low ...en alle andere poort bit wijzigingen die ik in assembly had ook ..is nu het shadow probleem opgelost ??
Het probleeem met de variablen in me procedure scanband() bestaat nog steeds.
[Bericht gewijzigd door Henry S. op (22%)]
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Hoe weet je zo zeker dat die waarden op 1 en 0 worden gezet, is dat een directe waarneming of een deductie?
Dat is deductie omdat ik wel kan horen dat de zender naar een bepaalde frequentie gaat ,die met deze waardes in overeen stemming zijn. Ik wil je echter wijzen op iets vreemds ,het volgende
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
; PULSOP6()
bytetosend = STOPSCAN
sendcharlcd()
;delay_100ms(1)
else PLLCHCOUNT = STARTSCAN
;if (STARTSCAN==0) then PULSOP7() else end if
bytetosend = STARTSCAN
sendcharlcd()
;delay_100ms(10)
end if
Als ik dat toevoeg om te debuggen doet hij het goed !
end PROCEDURE
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Ik zie niet meteen wat je toevoegd, maar zou het niet iets met de SPI timing te maken kunnen hebben?
En deze procedure
met STARTSCAN = 80 en STOPSCAN 120
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
bytetosend = STOPSCAN
else PLLCHCOUNT = STARTSCAN
end if
end PROCEDURE
werkt "een beetje" ,daarmee bedoel ik te zeggen dat PLLCOUNT wel gewijzigt wordt als PLLCOUNT>STOPSCAN ("hij komt goed in het else gedeelte) maar wijzigt vervolgens PLLCOUNT niet naar STARSCAN maar naar 0. (De boven grens werkt wel)
ECHTER
met STARTSCAN = 80 en STOPSCAN 120
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
bytetosend = 80
else PLLCHCOUNT = STARTSCAN
end if
end PROCEDURE
Nu werkt hij zodat PLLCOUNT wisselt tussen nul en 1
Het is toch raar dat de variable bytetosend invloed heeft op deze routine en dan ook nog met wisselende effecten nagelang zijn waarde ?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Als je er code tags omheen zet, en niet steeds 10 lege regels ertussen, dan wordt alles tenminste leesbaar...
Zou je me een kunnen zeggen waar ik dan aan moet denken als je zegt spi timing?
je zegt; "Ik zie niet meteen wat je toevoegd,"
ik voeg toe in if deel
bytetosend = STOPSCAN
sendcharlcd()
else deel
bytetosend = STARTSCAN
sendcharlcd()
Dit deed ik om te debuggen maar levert tevens op dat routine wel juist werkt
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
- je conclusie is gebaseerd op wat er over de SPI naar je chip gestuurd wordt
- als je iets toevoegd of iets kleins veranderd lijkt het goed te gaan
Als je ipv die sendchar een vertraging invoegd, gaat het dan nog steeds goed?
Het is nu als volgt :
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
bytetosend = STOPSCAN
delay_10ms(1)
else PLLCHCOUNT = STARTSCAN
bytetosend = STARTSCAN
delay_10ms(1)
end if
end PROCEDURE
dit gaat gaat goed
maar verander ik de waarde bytetosend in iets anders bv
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
bytetosend = 44
delay_10ms(1)
else PLLCHCOUNT = STARTSCAN
bytetosend = STARTSCAN
delay_10ms(1)
end if
end PROCEDURE
gaat het weer mis en komt hij alleen nog in het else gedeelte
De var bytetosend staat er alleen maar voor het debuggen en zou een waarde moeten zijn voor de procedure sendchar() ! das toch raar ? ...sendchar() stuurt de bytetosend var naar het display
De gewenste code is
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN) then PLLCHCOUNT = PLLCHCOUNT + 1
else PLLCHCOUNT = STARTSCAN
end if
end PROCEDURE
bytetosend is een var die de door spi te verzenden waarde vertegenwoordigt, deze wordt gebruikt voor gegevens naar de display of de naar de deler van de pll te sturen.
Ik heb iets ontdekt.. als ik de variablen local declareer gaat de procedure goed
als volgt :
PROCEDURE SCANBAND() IS ;SCAN TUSSEN 2 FREQ
var byte
STARTSCAN = 80, ;VAR VOOR START KANAAL SCANNEN
STOPSCAN = 159
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
else PLLCHCOUNT = STARTSCAN
end if
end PROCEDURE
Nu heb ik vervolgens dit gemaakt:
Procedure SCANBAND( byte in STARTSCAN,byte in STOPSCAN) IS ;SCAN TUSSEN 2 FREQ
if (PLLCHCOUNT<=STOPSCAN ) then PLLCHCOUNT = PLLCHCOUNT + 1
else PLLCHCOUNT = STARTSCAN
end if
end PROCEDURE
dit werkt prima ik ben blij !!! maar waarom het andere niet werkt is me een raadsel ??
[Bericht gewijzigd door Henry S. op (19%)]
Een waarschuwing voor de TS wegens topickicken, het wordt tijd om dit eens goed door te lezen.