Sida 1 av 1
BS2 --> jämföra tal
Postat: 31 mars 2007, 16:00:27
av squiz3r
Hej, jag håller på o labba lite med min sumo robot som styrs av en BS2 och en PIC. Mit problem är att jag har 8 "separata" byte på BS2'an varje byte är (såklart) antingen 1 eller 0. Jag vill göra så att om variabel1 = 1 och variabel2 = 0 och variabel3 = 0 osv så ska den gå till en label. Hur gör jag lttast det? Hade det varit en PIC hadde man ju kunnat ta hela variablen som byte'an ligger i o jämfört men kan man det på en bs2? När jag ställer in byte'arna skriver jag ju "XXX VAR byte".
//Daniel A
Postat: 2 april 2007, 10:20:24
av squiz3r
Ingen som vet? Eller har jag beskrivit otydligt??
//Daniel A
Postat: 2 april 2007, 11:33:57
av Icecap
Vad ska man säga? Där har du en av "fördelarna" av att köra BASIC...
Men OK, kan du inte lägga in att du har en byte håller värdet och de bits du vill ha in motsvarar de enstaka bits i den byte är det bara kvar:
if(variabel1 = 0) and (variabel2 = 1) .... then .... endif.
En möjlig lösning kan vara att de enstaka bits i samma byte används:
om du istället för den avkänning som sätter >variabel1< till 1 eller 0 använder att den OR'a med ett binärt värde (1,2,4,8,16,32,64,128) när bitten ska settas och AND'ar med 255-detbinärevärde när den bit ska nollas.
Alltså:
Setta biten: MinVariabel = MinVariabel OR 128
Nolla bitten: MinVariabel = MinVariabel AND (255 - 128)
Postat: 2 april 2007, 13:11:32
av sodjan
> Mit problem är att jag har 8 "separata" byte på BS2'an varje byte är (såklart) antingen 1 eller 0.
Varför "såklart" ?? Kan dessa "variabler" enbart vara "0" eller "1" ?
I så fall är de mer som "flaggor" och behöver inte en hel byte. En enda bit i ett register räcker.
Men det kanske bli knöligt i Basic...
> Jag vill göra så att om variabel1 = 1 och variabel2 = 0 och variabel3 = 0
Men annars är det väl bara att köra en IF som Icecap sa, eller ??
Postat: 2 april 2007, 13:30:38
av BEEP
Jag skummade genom manualen och det verkar finnas stöd för bithantering så skriv bitarna direkt till en variabel istället för att bråka med 8 st variabler.
BASIC Stamp Syntax and Reference Manual 2.1
Postat: 2 april 2007, 15:31:01
av squiz3r
Jag menade bit, inte byte

Jag får kolla igenom manualen igen, jag trodde inte att man kunde ha som på en PIC att man hanterar varje bit för sig själv i en byte.
Men jag får testa som Icecap skrev.
//Daniel A
Postat: 2 april 2007, 16:10:05
av squiz3r
Ok, Nu har jag läst data blade en gång till mycket noga.
Om jag skriver:
Kod: Markera allt
databits var byte
databit1 var databits.bit1
osv...
databit1 = 1
databit2 = 1
databit3 = 1
databit4 = 0
databit5 = 0
databit6 = 0
databit7 = 0
databit8 = 1
så kan jag läsa av att databits = dec 135. om jag skriver in det på kalkulatorn (i datorn) ska jag väll börja med bit8
Edit: Nej!! Det blir väll dec 225 ?? jag börjar väll med bit 0 ??!!!
//Daniel A
Postat: 2 april 2007, 16:14:49
av sodjan
1x128 + 1x4 + 1x2 + 1 = 135 (decimalt).
Och det är inte "bit0" -> "bit7" !?
Bara som en dubbelkoll...
Postat: 2 april 2007, 16:41:57
av squiz3r
Jo

Det var förstås bit0-bit7. Jag är bara lite virig nu...
>1x128 + 1x4 + 1x2 + 1 = 135 (decimalt).
Tack!
//Daniel A
Postat: 2 april 2007, 16:46:20
av Limen
squiz3r >> 1x128 + 1x4 + 1x2 + 1 = 135 (decimalt).
bit 7 har positionsvärde 128, bit 2 har positionsvärde 4, bit 1 har positionsvärde 2 och bit 0 har positionsvärde 1. 128+4+2+1=135
Postat: 2 april 2007, 16:49:08
av squiz3r
Aha! Då förstår jag
Tack!
//Daniel A