Dat kan
Je hebt 8 bits dus
0 0 0 0 0 0 0 0
Om een enkele lamp in te schakelen :
Lamp 1 = 00000001 = Out 888, 1
Lamp 2 = 00000010 = Out 888, 2
Lamp 3 = 00000100 = Out 888, 4
Lamp 4 = 00000001 = Out 888, 8
Lamp 5 = 00000010 = Out 888, 16
Lamp 6 = 00000100 = Out 888, 32
Lamp 7 = 00000001 = Out 888, 64
Lamp 8 = 00000010 = Out 888, 128
Bovenstaand voormeeld laat inderdaad andere lampen weer uitgaan.
Om dit op te lossen moet je eerst de huidige waarde van de poort inlezen met INP (888). Vervolgens kun je met de AND functie of de OR functie lampen bijvoegen of uitzetten.
Als je een beetje thuis bent in binair is het redelijk eenvoudig.
Stel je lampen 2 en 5 branden en je wilt lamp 6 ook aanzetten. Om lamp 6 in te schakelen moet je normaal de waarde 32 naar de poort sturen. Om nu te voorkomen dat de overige lampen uitgaan, gebruik je de OR functie.
Een OR maakt een bit 1 als een van de 2 bits in de vergelijking 1 zijn.
Nu het voorbeeld :
Code:
:lees de huidige waarde van de poort in:
Poortwaarde = INP(888)
:Nu voeg je dmv OR het bitje toe voor lamp 6:
Poortwaarde = Poortwaarde OR 32
:en schrijf deze weer terug:
OUT(888,Poortwaarde)
Om een lamp uit te schakelen gebruik je de AND functie
Een AND laat alleen dat bit op 1 als beide bits in de vergelijking 1 zijn.
Wat je dus maakt is een filter waarbij alle waarden 1 zijn behalkve die van de lamp die je wilt uitzetten
In bovenstaand voorbeeld branden nu 3 lampen. Dit komt overeen met de waarde
0 0 1 1 0 0 1 0
Als je nu bv lamp 2 wilt uitschakelen dan maak je een masker waarbij bit 2 op 0 staat. Dat geeft dan :
0 0 1 1 0 0 1 0
1 1 1 1 1 1 0 1 AND
-------------------
0 0 1 1 0 0 0 0 Resultaat
Je ziet dat lamp 2 nu uit is.
Hieronder even de code :
Code:
:lees de huidige waarde van de poort in:
Poortwaarde = INP(888)
:Nu dmv AND lamp 2 uitschakelen:
Poortwaarde = AND 253
:en schrijf deze weer terug:
OUT(888,Poortwaarde)
Ik hoop dat je hier iets mee kunt. (ik heb in bovenstaand voorbeeld trouwens Qbasic genomen. Klein en handig en werkt zelfs op 486

)
Ik zal binnenkort zelf ook eens met dat spul gaan experimenteren. Alleen lijkt mij een optocoupler iets veiliger voor de comp omdat je dan helemaal ontkoppeld blijft van de relaiskant. En die dingen zijn vaak net zo goedkoop als een transistor. Ik ben nl huiverig dat als de transistor doorbrand en sluiting gaat maken, je je printerpoort opblaast
