Toon posts:

[binair] 4 LSB en 4 MSB uit byte

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een LCD aan te sturen vanuit een AVR (μc). programmeren doe ik in bascom-avr. (lijkt veel op andere basic-talen zoals visual basic)
Om pinnen te besparen wil ik de lcd in 4-bits-mode aansturen.

ik ben geen kei in het binaire systeem en ik zit nu dus met een probleempje:
stel ik wil een "A" naar de lcd schrijven.
een A (in ascii-tabel) is decimaal: 65 = binair: 0100 0001
nu moet ik dat dus in twee delen versturen, eerste de 4 MSB dan de 4 LSB
dus eerst:
0100 (decimaal 4)
dan:
0001 (decimaal 1)

het probleem is nu, hoe kan ik het getal 65 zo "bewerken" dat ik eerst die 4 er uit kan krijgen en dan die 1 ? (moet natuurlijk ook toepasbaar zijn op andere getallen ;))

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Binary AND'en met 11110000 en dan 4 naar rechts shiften? :?

Professionele website nodig?


  • EXX
  • Registratie: Juni 2001
  • Laatst online: 19-05 18:19

EXX

EXtended eXchange

Precies.

C:

upper nibble = (byte & 0xf0) >> 4
lower nibble = (byte & 0x0f)

BASIC:

upper_nibble = (byte AND &HF0) / 16
lower_nibble = (byte AND &H0F)

[ Voor 42% gewijzigd door EXX op 11-02-2004 17:28 ]

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 27-05 19:13

Dido

heforshe

Delen door 16, de quotient is je MSHB en je rest is je LSHB :)

Wat betekent mijn avatar?


Verwijderd

Topicstarter
oh, wacht naar dat shiften had ik nog nooit gekeken :/

zo te zien zou het ook lukken door:
4 shiften naar rechts voor de MSB
4 shiften naar links en dan delen door 2^4 voor LSB
zou ook moeten werken ?

edit:
ok, tnx voor de replys :)

[ Voor 9% gewijzigd door Verwijderd op 11-02-2004 17:30 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

curry684 schreef op 11 februari 2004 @ 17:23:
Binary AND'en met 11110000 en dan 4 naar rechts shiften? :?
van tevoren anden hoeft niet, aangezien de bits toch eruit schuiven. Ik zal wel erna anden, omdat het mogelijk is dat er een arithmetic shift wordt gebruikt waardoor de most significant bit wordt gerepliceerd (als ook alleen maar daadwerkelijk de eerste 4 bits worden doorgestuurd dan maakt dat natuurlijk niet uit, maar je weet maar nooit)

dus:
lower = value & 0x0f
upper = (value >> 4) & 0x0f

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1