Port von AtMega16 etweitern? Bascom

#695437
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
Gast #695450
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
#695462
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.
#695482
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.
#695505
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren