Forum: Mikrocontroller und Digitale Elektronik Port von AtMega16 etweitern? Bascom


von michi (Gast)


Lesenswert?

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.

von Sebastian Heyn (Gast)


Lesenswert?

angenommen du hast den wert in einem word gespeichert

byte2.0=word.8
byte2.1=word.9
.
.
.
.
portd=byte2

von michi (Gast)


Lesenswert?

>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

von Falk B. (falk)


Lesenswert?

@ 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

von michi (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von michi (Gast)


Lesenswert?

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!

von Karl H. (kbuchegg)


Lesenswert?

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.

von michi (Gast)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft ein Screenshot weiter.

von Karl H. (kbuchegg)


Lesenswert?

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.

von michi (Gast)


Lesenswert?

jetzt steht zu diesen 2 Zeilen:

Result = 256 * B
Result = Result + A

Error 31    Invalid Datatyp

oder muss man "result" noch definiren?

von Falk B. (falk)


Lesenswert?

@ 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 . . .  :-(

von Niels H. (monarch35)


Lesenswert?

> 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"

von michi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.