Een dummy variabele (afgekort "dummy") is precies hetzelfde als een gewone variabele, alleen wordt deze op meerdere plaatsen in het programma voor verschillende handelingen gebruikt.
Een dummy heeft dan ook een nietszeggende naam zoals BD1 (= Byte Dummy 1).
Je moet er alleen voor zorgen dat de dummy maar binnen een paar regels die bij elkaar staan gebruikt wordt, anders loop je de kans op vergissingen.
Voorbeeld
De bedoeling van onderstaand voorbeeldprogramma is om een blokje op een bepaalde positie van regel 1 op het display te zetten,
afhankelijk van de waarde van variabele 'NTC'.
Als deze wordt gecompileerd geeft de PIC Basic compiler echter een foutmelding.
DEVICE 16F628A ;Gebruik een 16F628A type CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF ALL_DIGITAL TRUE ;Alle ingangen digitaal DIM NTC AS BYTE ;Bevat de NTC temperatuur waarde CLEAR ;Wis alle RAM geheugen DELAYMS 500 ;LCD stabilisering CLS ;LCD scherm wissen PRINT AT 1, (NTC + 16) / 16, 255 ;Zet blokje op berekende cursorpositie END ;Einde programma |
Aangezien een berekening voor de cursorpositie ( (NTC + 16) / 16 ) niet rechtstreeks in de PRINT AT instructie kan,
moet de uitkomst van die berekening eerst in een (dummy) variabele gezet worden.
Daarna wordt de dummy op zijn beurt in de PRINT AT instructie geplaatst, op die manier kan het wel:
DEVICE 16F628A ;Gebruik een 16F628A type CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF ALL_DIGITAL TRUE ;Alle ingangen digitaal DIM NTC AS BYTE ;Bevat de NTC temperatuur waarde DIM BD1 AS BYTE ;Byte Dummy 1 CLEAR ;Wis alle RAM geheugen DELAYMS 500 ;LCD stabilisering CLS ;LCD scherm wissen BD1 = (NTC + 16) / 16 ;Bereken cursorpositie, plaats uitkomst in BD1 PRINT AT 1, BD1, 255 ;Zet blokje op cursorpositie BD1 END ;Einde programma |
Zie je het verschil?
Maar om alleen hiervoor een hele variabele te reserveren (= declareren) die verder nooit meer in het programma gebruikt gaat worden is zonde van de geheugenruimte.
Vooral omdat dit soort dingen veel vaker voor (gaan) komen zou het zonde zijn om steeds een nieuwe variabele aan te maken.
Een dummy variabele is dus een hulpvariabele, een soort tussenstation waar je een waarde of berekeninguitkomst even inparkeert,
om die waarde in de paar regels die er na komen er weer uit te halen.
Je gebruikt deze variabele op meerdere plekken in het programma, voor verschillende taken.
De (dummy) variabele BD1 in bovenstaand voorbeeld is na de PRINT AT opdracht weer vrij om voor wat anders gebruikt te worden.
Het is natuurlijk niet de bedoeling dat je een dummy variabele aan het begin van het programma een waarde geeft en
pas halverwege het programma die waarde gaat gebruiken, daarvoor moet je 'gewone' variabelen met duidelijke namen gebruiken, zoals in een programma,
waar de variabele 'Weerstand' in het hele programma alleen voor de gemeten weerstandswaarde van een potmeter wordt gebruikt.
Natuurlijk kun je deze variabele 'Weerstand' ook voor andere dingen gebruiken maar dan worden er snel vergissingen gemaakt.
Met een dummy variabele kan je dat natuurlijk ook overkomen, maar omdat een dummy variabele een nietszeggende naam heeft
(bijvoorbeeld x, y of zoals hier BD1) ben je er eerder verdacht op.
Ikzelf gebruik voor dummy's in elk programma de volgende namen:
ID1 | BIT Dummy 1 |
BD1 | BYTE Dummy 1 |
BD2 | BYTE Dummy 2 |
BD3 | BYTE Dummy 3 |
WD1 | WORD Dummy 1 |
... | enzovoort |
Door de eerste letter kan ik meteen zien of ik een BIT, BYTE of WORD (dummy) variabele heb te pakken.
Soms zijn er een paar dummy's tegelijk nodig, daarvoor is dus dat cijfer (WD1, WD2, enz.)
Ook een dummy variabele moet net als elke andere variabele boven in het programma opgegeven worden met DIM (= declareren),
logisch, het is immers een gewone variabele, net als elke andere variabele.
Alleen de naam is nietszeggend, omdat de dummy variabele voor meerdere doeleinden gebruikt wordt.