Ik ben een beetje aan het spelen met BASCOM met een AVR.

nu krijg ik op 3 pinnen van schakelaars een signaal binnen. nu zou ik die 3 bits in een variabele (byte) willen hebben zodat ik via select case kan bepalen welke knop er ingedrukt is.


char car =0;

if(input_hoog){
    var =+ 1; // verhoog de waarde met 1
}
var << 1; // schuif alle bits 1 naar links.

zo zou ik het in c doen, maar dit kan in BASCOM ook vast. Dit moet je dan wel drie maal doen.

Dim b as byte
Dim bit1 as bit
Dim bit2 as bit
Dim bit3 as bit

Bit1 = 1
Bit2 = 0
Bit3 = 1

b.0 = Bit1
b.1 = Bit2
b.2 = Bit3

Resulteert in b = 5.

Weet ook nix van bascom, maar zo zou ik het in P+ doen:

inputbyte=PORTB
inputbyte=inputbyte & %00000111                 ;bitwise AND
Select Case inputbyte
    Case 0
        woef
    Case 1
        miauw
    Case 2
        kukeleku
    Case 4
        piep
End Select

kif; daar was ik net zelf ook opgekomen... hoe simpel kan het zijn.

@ galaxy; helaas gebruik ik de port ook nog voor andere zaken

bedankt.

Het is de eerste keer dat ik wat met bascom doe. maar het lijkt dat de compiler niet zo heel zuinig is. ik heb nog amper code maar de chip zit voor 50% vol zegt hij. klopt dit

[Bericht gewijzigd door Jan klaasen op (14%)]

@ galaxy; helaas gebruik ik de port ook nog voor andere zaken

Daar is juist die bitwise AND voor.
Daar filter je die 'andere zaken' mee uit, en kijk je uitsluitend naar portb.0 t/m portb.2

Op 30 december 2007 17:56:10 schreef Jan klaasen:
ik heb nog amper code maar de chip zit voor 50% vol zegt hij. klopt dit

Ligt er geheel aan wat voor chip je hebt en hoeveel code je erin wilt stoppen.

attiny2313... de code is nog niet klaar. waarschijnlijk kan ik wel nog wat verbeteren