PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bascom portpins zu virtuellem port kombinieren



kolisson
08.11.2006, 12:45
hallo ihr da draussen,

habe mal folgende frage:

stellt euch vor, ich benötige für eine abfrage von peripherie einen 8 bit breiten port. aufgrund der bisherigen beschaltung meines mega32 habe ich jedoch nur noch einzelne pins auf verschiedenen ports verfügbar.
sagen wir ich hätte folgendes frei:

porta.0
porta.4
portb.3
portb.4
portb.5
portb.6
portd.6
portd.7

das sind ja 8 stück. ist es nun möglich diese pins per bascom definition zu einem virtuellen 8-bit port zusammenzufügen ? sagen wir mal portV.

ich frage das weil ein solches vorgehen die weitere programmierung (das handling) doch wesentlich vereinfachen würde.

gruss kolisson

milkbubi
08.11.2006, 13:13
ich bin leider auch neu hier

aber man kann doch so eine art funktion erstellen, die du beliebig nennen kannst sagen wir mal portV.
In dieser funktion musst du dann nur einmal festlegen was mit welchen pins gemacht wird.
Nur so als Ansatz.

mfg milkbubi

Olle_Filzlaus
08.11.2006, 20:19
Hallo,

ja kann man machen.

vergibst an die einzelnen ports einfach ein alias amen und dann nimmst du zum ansprechen nur noch den namen.

zb:



Action

Indicates that the variable can be referenced with another name.



Syntax

newvar ALIAS oldvar



Remarks

Oldvar Name of the variable such as PORTB.1
newvar New name of the variable such as direction
Aliasing port pins can give the pin names a more meaningful name.



See also

CONST

Example

Config Pinb.1 = Output
Direction Alias Portb.1 'now you can refer to PORTB.1 with the variable direction
Do
Set Direction 'has the same effect as SET PORTB.1
Waitms 1
Reset Directopn
Loop
End

steht auch in der Bascom Hilfe drin :-)

z.B.

Porta.4 alias Portz.0


cu arno

kolisson
09.11.2006, 11:38
das mit dem alias habe ich kürzlich schon gelesen. wir war nur nicht klar, dass eine konstruktion wie:

portv.0 alias porta.0
portv.1 alias porta.4
portv.2 alias portb.3
portv.3 alias portb.4
portv.4 alias portb.5
portv.5 alias portb.6
portv.6 alias portd.6
portv.7 alias portd.7

dann auch sinvoll über z.B. data = portv angesprochen werden kann.

gruss kolisson

oe9vfj
09.11.2006, 12:10
Das Konstrukt data = portv wird vom Compiler nicht akzeptiert.

portv.0 alias porta.0 ist die Definition eines HW-Pins.

Dass vom Compiler portv.0 als Namensdefinition akzeptiert wird, heisst nicht, dass der Namens-Teil PortV für sich allein eine Funktion erhält, nämlich quasi ein Zusammenfassung auf ein Byte.

Ich schlage vor die Zuweisung mit einer SUB zu erledigen:

Folgender Code-Schnipsel funktioniert zumindest im Simulator


$Regfile "M128def.dat"

portv.0 alias porta.0
portv.1 alias porta.4
portv.2 alias portb.3
portv.3 alias portb.4
portv.4 alias portb.5
portv.5 alias portb.6
portv.6 alias portd.6
portv.7 alias portd.7

Dim b1 as Byte


Declare Sub SetPortV (bPort as Byte)

Config PortA = Output
Config PortB = Output
Config PortC = Output
Config PortD = Output

b1 = &HFF

SetPortV b1

b1 = 0
SetPortV b1

end

Sub SetPortV (bPort as Byte)

portV.0 = bPort.0
PortV.1 = bPort.1
PortV.2 = bPort.2
PortV.3 = bPort.3
PortV.4 = bPort.4
PortV.5 = bPort.5
PortV.6 = bPort.6
PortV.7 = bPort.7

end sub