Article View: be.comp.programming
Article #15786Re: Statusport byte naar bits converteren.
From: Jan Van den Bergh
Date: Thu, 17 Aug 2000 07:53
Date: Thu, 17 Aug 2000 07:53
32 lines
2451 bytes
2451 bytes
In article <8nekll$iv2$1@news.planetinternet.be>, "RedX" <RedX@mail.dma.be> wrote: > Ik zit al een tijd met dit probleem. ik lees een byte in van de > Statuspoort van LPT1 ( C: byte = inp(poortadres); Pascal: byte := > port[poortadres];) > maar deze heeft andere waarden dan een byte ingelezen van een andere > poort: > Er worden maar 5 bits gebruikt: 8,16,32,64 en 128. bits 8,16,32 en 64 > zijn geinverteerd: ze hebben een waarde van -8, -16, -32 en -64. bit 128 > is normaal. daarbij wordt er ook nog 127 bij de waarde van de byte > geteld. Tot nu toe heb ik alle de 4 geinverteerde bits kunnen "losmaken" > van de byte. als ik de 5de probeer geeft dit verkeerde resultaten. Het > algoritme dat ik hiervoor gebruik is: (in pseudo-code) > > lees BYTE BYTE - 127 absolute waarde van BYTE BIT1 = (BYTE en 8) / 8 > BIT2 = (BYTE en 16) / 16 BIT3 = (BYTE en 32) / 32 BIT4 = (BYTE en 64) / > 64 BIT5 = (BYTE en 128) / 128 > > Dit werkt correct maar als ik een bit5 een 1 zou krijgen, geeft dit > verkeerde waarden. Weet iemand een betere manier hiervoor? Op deze > manier kan ik maar 4 bits invoer gebruiken op LPT1. Een goede manier om te kijken of een bit 1 is, is (in C): bit = (byte & (1 << bitnr)) != 0; Als je wil weten of de bit 0 is, vervang dan != door ==. (Voor de conversie naar Pascal: & is "bitsgewijze AND", << is "shift left", != is "verschillend van", == is "is gelijk aan".) Jan.
Technical Details
Message-ID:
<966495179.238356@marvin>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!sn-east!supernews.com!newscon01.news.prodigy.com!prodigy.com!newsfeed.cwix.com!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!umbra!janvReferences:
<8nekll$iv2$1@news.planetinternet.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,a3337484a0f4caf0 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2000-08-16 23:53:08 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!sn-east!supernews.com!newscon01.news.prodigy.com!prodigy.com!newsfeed.cwix.com!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!umbra!janv From: "Jan Van den Bergh" <janv@cs.kuleuven.ac.be> Newsgroups: be.comp.programming Subject: Re: Statusport byte naar bits converteren. Date: Thu, 17 Aug 2000 08:53:02 +0100 Organization: KULeuvenNet Lines: 33 Message-ID: <966495179.238356@marvin> References: <8nekll$iv2$1@news.planetinternet.be> NNTP-Posting-Host: marvin.kulnet.kuleuven.ac.be X-Trace: naxos.belnet.be 966495179 13380 134.58.127.3 (17 Aug 2000 06:52:59 GMT) X-Complaints-To: abuse@belnet.be NNTP-Posting-Date: Thu, 17 Aug 2000 06:52:59 +0000 (UTC) X-Newsreader: Pan 0.8.0 Cache-Post-Path: marvin!unknown@umbra.cs.kuleuven.ac.be X-Cache: nntpcache 2.3.3 (see http://www.nntpcache.org/)