- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: bascom portpins zu virtuellem port kombinieren

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776

    bascom portpins zu virtuellem port kombinieren

    Anzeige

    E-Bike
    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

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2005
    Ort
    Berlin
    Beiträge
    116
    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

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.11.2005
    Beiträge
    272
    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:

    Code:
    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
    Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
    Sir Isaac Newton

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    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

    Code:
    $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
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests