MikroBasic: poort en pin doorgeven aan functie

Hoe kan je in MikroBasic een poort en pin doorgeven aan een procedure/functie?

Ik bedoel dus bv:

code:


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.

Ik ken Mikrobasic niet zo goed, maar ik denk niet dat je een pin kunt indexeren, dus als variabele kunt gebruiken.

Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Arco

Special Member

Poort moet by reference worden doorgegeven...

pic basic code:


Sub procedure poortpinaan(dim byref poort as word, dim pin as byte)
     poort.pin = 1
End sub
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Met byref werkt het inderdaad.

Bedankt!!!

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:

code:


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

Ik begrijp je niet. Wat wil je opslaan? (PORTA status kun je al teruglezen; dat is tenslotte ook gewoon een variabele)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

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.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

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)

pic basic code:


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

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

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

Meestal wordt dan in het hoofdprogramma de pin zo gedefinieerd:

pic basic code:


Dim Led_1 As sBit At PORTA.1                    

Je kunt Led_1 dan in je library gebruiken.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Of in het onderhavige geval SRAM_CE, SRAM_RW of SRAM_A0...

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/