Hoe kan je in MikroBasic een poort en pin doorgeven aan een procedure/functie?
Ik bedoel dus bv:
Sub procedure poortpinaan(dim poort as word, dim pin as byte)
poort.pin = 1
End sub
poortpinaan(PORTA, 1)
Ik vermoed dat hiervoor ^ of @ nodig zijn, maar ik geraak er niet goed aan uit hoe dit werkt.
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Ik ken Mikrobasic niet zo goed, maar ik denk niet dat je een pin kunt indexeren, dus als variabele kunt gebruiken.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Poort moet by reference worden doorgegeven...
Sub procedure poortpinaan(dim byref poort as word, dim pin as byte)
poort.pin = 1
End sub
En hoe kan je dat opslaan in een variabele die je in de rest van je programma ook kan gebruiken?
Wat ik wil is dit:
Dim byref poort as word
Dim pin as byte
Sub procedure poortpinaan_Init(dim byref poortf as word, dim pinf as byte)
poort = poortf
pin = pinf
End sub
Sub procedure poortpinaan
poort.pin = 1
End sub
poortpinaan
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ik begrijp je niet. Wat wil je opslaan? (PORTA status kun je al teruglezen; dat is tenslotte ook gewoon een variabele)
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco, soms is het handig om een generieke functie te hebben die iets regelt.
Dus dat je in je code led_aan (); en led_uit (); kan aanroepen (ik spreek geen microbasic, sorry).
Om dan de code die dit doet generiek te houden en de plek waar de led-pin gedefinieerd wordt op 1 plaats, zorg je dat je "led-bibliotheek" een init functie heeft die je moet vertellen op welke poort/pin je led zit.
Dat kan ook anders. In C met een "define". maar elektronica vraagt of het ook zo kan... in microbasic.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ah, op die manier. Nooit nodig gehad, ik weet vooraf altijd waar de leds zitten... 
(dit soort generieke functies voor simpele taken geeft meestal meer overhead)
Defines in C zijn toch constants? (dus niet van nut in dit geval)
Dim Poort As ^Word
Pin As Byte
Sub procedure poortpinaan_Init(dim byref poortf as word, dim pinf as byte)
poort = @poortf
pin = pinf
End sub
Sub procedure poortpinaan
poort^.pin = 1
End sub
Ja, dat bedoelde ik, bedankt!
Het is eigenlijk voor een library te maken voor een extern SRAM geheugen. Als ik daar nu een functie in maak waarin je de poorten en pinnen waarop het aangesloten is kan aangeven, kan ik dat later in andere programma's nog makkelijk veranderen.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Meestal wordt dan in het hoofdprogramma de pin zo gedefinieerd:
Dim Led_1 As sBit At PORTA.1
Je kunt Led_1 dan in je library gebruiken.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/