Hallo! ich bin´s noch mal. ich muss einen 12bit code auswerten. Der potr (z.b. PortA) hat ja nur 8bit (8pins) Kann man dazu noch den portD verknüpfen? gibt es so einen Bafehl in Bascom? Geht das überhaupt? Danke sehr.
angenommen du hast den wert in einem word gespeichert byte2.0=word.8 byte2.1=word.9 . . . . portd=byte2
>angenommen du hast den wert in einem word gespeichert
sorry, ich habe es nicht ganz verstanden.
kannst du es noch etwas genauer erklähren, bitte?
Danke
@ michi (Gast) >ich muss einen 12bit code auswerten. >Der potr (z.b. PortA) hat ja nur 8bit (8pins) Ja. >Kann man dazu noch den portD verknüpfen? Ja. >gibt es so einen Bafehl in Bascom? Sicher. dim a,b as byte dim result as word a = PINB b = PIND result = a and (shift b, left, 8) So in etwa, bin bein BASCOMer >Geht das überhaupt? Sicher. MFG Falk
Danke! ich bekomme aber den ganzen Salat fehlerfrei nicht zusammen.
1 | $regfile = "m16def.dat" |
2 | $crystal = 8000000 |
3 | |
4 | Config Lcd = 16 * 4 |
5 | Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4 |
6 | |
7 | Initlcd
|
8 | |
9 | Dim A , B As Byte |
10 | dim result as word |
11 | |
12 | A = Pina |
13 | B = Pind |
14 | |
15 | Dim Zahl As Byte |
16 | |
17 | |
18 | Cls
|
19 | Cursor Off |
20 | Do
|
21 | Cls
|
22 | |
23 | Zahl = Pina |
24 | Zahl = Zahl And &B1111111111110000 |
25 | Zahl = Gray2bin(zahl) |
26 | |
27 | |
28 | |
29 | Locate 1 , 1 |
30 | Lcd Zahl |
31 | |
32 | |
33 | |
34 | Waitms 70 |
35 | Loop
|
36 | |
37 | End
|
wo ist der Fehler? Danke
michi wrote: > wo ist der Fehler? Wo ist welcher Fehler? Ich sehe in deinem Code nirgends eine Stelle an der das von PinA und PinD eingelesene auch nur ansatzweise zu einer kompletten Zahl zusammengesetzt wird. Du liest hier > A = Pina > B = Pind die beiden Werte ein. Und dann? Dann machst du nichts mehr damit. Ganz im Gegenteil. Innerhalb der nachfolgenden Schleife wird PINA, und nur PinA wieder eingelesen. Mach doch mal vernünftige Einrückungen. Dann sieht man auch was innerhalb einer Schleife gesetzt ist und was nicht.
sorry, ich komme nicht darauf.. habe schon was probiert, aber nichts ist darausgekommen. wenn jemand weiss, wie das geht, soll er das bitte mal posten. wäre sehr dankbar!
Falls das von Falk vorgeschlagene nicht funktioniert (bin auch kein BASCOM-er) dann kann man immer noch auf schnöde Mathematik zurückgreifen und hoffen, das der Compiler das schon sauber ausoptimiert. A = PinA B = PinD ' von A werden alle 8 Bit genommen, von B nur die untersten ' 4 Bit. Das ganze wird zu einem Endergebnis zusammengesetzt ' sodass die Bits so angeordnet sind ' BBBBAAAAAAAA ' 321076543210 Result = 256 * B Result = Result + A In B vorher noch die obersten 4 Bit mit einem AND ausmaskieren kann auch nicht schaden.
michi wrote:
> Vielleicht hilft ein Screenshot weiter.
Wenn ich mir die BASCOM Doku mal ansehe und beim DIM nachlese,
dann sehe ich dort nichts, was die Annahme stützt, dass man
mit einem DIM gleich mehrere Variablen definieren kann.
Die gepostete Fehlermeldung "AS expected" an der Stelle
an der das Komma steht, unterstützt diese Auffassung noch mal
stark.
Also
DIM A AS BYTE
DIM B AS BYTE
Vielleicht solltest du mal ein Tutorial über BASCOM durcharbeiten,
bevor du dich an schwierigere Problemstellungen wagst. Und auch
das Helpfile zu BASCOM ständig parat zu haben, schadet auf
keinen Fall.
jetzt steht zu diesen 2 Zeilen: Result = 256 * B Result = Result + A Error 31 Invalid Datatyp oder muss man "result" noch definiren?
@ michi (Gast)
>oder muss man "result" noch definiren?
Ja LOGISCH!
DIM result as word
MFG
Falk
P.S. Und wieder mal wird das BASCOMer Vorurteil bestätigt . . . :-(
> P.S. Und wieder mal wird das BASCOMer Vorurteil bestätigt . . . :-( Ne, ich glaube, der hier ist schon sehr sehr speziell; das zeigt sich auch in einem anderem Thread, den dieser Nutzer zuerst unter einem anderen Namen startete: Beitrag "Hilfe beim Quellecode"
Stimmt schon. War aber nicht DIE Absicht! Es funktioniert übrigens! Danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.