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
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.