www.mikrocontroller.net

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


Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
angenommen du hast den wert in einem word gespeichert

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

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!
ich bekomme aber den ganzen Salat fehlerfrei nicht zusammen.
 $regfile = "m16def.dat"
$crystal = 8000000

Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4

Initlcd

Dim A , B As Byte
dim result as word

A = Pina
B = Pind

Dim Zahl As Byte


Cls
Cursor Off
Do
Cls

Zahl = Pina
Zahl = Zahl And &B1111111111110000
Zahl = Gray2bin(zahl)



Locate 1 , 1
Lcd Zahl



Waitms 70
Loop

End
wo ist der Fehler?
Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hilft ein Screenshot weiter.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt steht zu diesen 2 Zeilen:

Result = 256 * B
Result = Result + A

Error 31    Invalid Datatyp

oder muss man "result" noch definiren?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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 . . .  :-(

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt schon.
War aber nicht DIE Absicht!
Es funktioniert übrigens!
Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.