Alias funktioniert nicht Bitweise?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Hast du deine verwendeten ports als output configert? Ansonsten sehe ich nix falsches, weil ja port2.x ein bit der Variable port3 ist.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • @elektron du kannst recht haben. Wenn jetzt ein Wert an port3 übergeben wird, werden zwar die einzelnen bit gesetzt, wird aber die alias-Werte nicht beeinflussen. Aber es gibt doch was im Lexikon dazu...

      port_remap.lib
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Durch ein alias wird beim compilieren die Aliasbezeichnung, was einer Variablen entspricht, durch den zugewiesenen Variable ersetzt. Wenn du schreibst 'port3.2 alias portb.7' wird beim compilieren überall wo port3.2 steht das durch portb.7 ersetzt. Mehr nicht. Darum passiert auch bei deinem Versuch nix, weil du zwar port3 setzt, aber das den Wert der bit-Variablen port3.2 nicht beeinflusst. Wenn du die lib nicht verwenden willst, dann bastle dir eine sub, die die bits der Variable port3 auf die realen ports verteilt. Diese sub ruft du nach jeder Aktualisierung der Variable port3 auf. Dann hast du das,was du willst.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Pluto25 schrieb:

      Die hälfte sind Ausgänge an den anderen kommen Taster die durchs beschreiben ausgelöst werden könnten oder mit eingelesen werden können. Die lib ist sicher schneller aber auch unflexibler (Portx=portx or 3) würde nicht gehen oder Portx.6=0 auch nicht. Für diereckte Ausgangsbefehle ist sie sicher besser .
      Und sie braucht weniger Flash-speicher.
      Das ist nicht richtig....außer das mit dem "schneller" vielleicht.


      Zwei Beispiele.

      BASCOM-Quellcode

      1. setPortX 3
      entpricht PortX = Portx or 3.


      Quellcode

      1. resetPortX 2^6
      entspräche Portx.6 = 0.



      Dein Wunsch ist ja, das der Compiler eine Sram Variable Bit für Bit mit der Hardware verdrahtet, dass geht natürlich nicht, dafür ist ja die Software da.
      Und genau für solch strubbeligen Pin-Zuordnungen habe ich einst diese Lib geschrieben. Sie zu verwenden steht dir frei. Man muss die paar Funktionen lediglich verstehen, dann ist es recht easy.

      Ich habe Dir mal ein Beispiel geschrieben, wie ich das für Deinen Fall angehen würde.

      BASCOM-Quellcode

      1. '------------------------------------------------
      2. $lib "port_remap.lib":$external _remapX
      3. declare sub writePortx(byreg r17 as byte)
      4. declare sub setPortx(byreg r17 as byte)
      5. declare sub resetPortx(byreg r17 as byte)
      6. declare function readPinX() as byte
      7. '------------------------------------------------
      8. Config PORTb.PB7 = output
      9. Config PORTb.Pb6 = output
      10. Config PORTb.Pb2 = output
      11. Config PORTD.PD5 = output
      12. const PORTX0 = PORTB :const PX0 = PB7 'Pumpe Ost
      13. const PORTX1 = PORTB :const PX1 = PB6 'Pumpe West
      14. const PORTX2 = PORTB :const PX2 = pb2 'Lcd Hintergrundbeleuchtung
      15. const PORTX3 = PORTD :const PX3 = pd5 'freier Ausgang
      16. const Pumpe_ost = 2^0
      17. const Pumpe_West = 2^1
      18. const LCD_Hintergrundbeleuchtung = 2^2
      19. const spare = 2^3
      20. 'Beispiel:
      21. 'PunpeOst Ein und alles was vorher gesetzt war wird null.
      22. writePortX Pumpe_ost
      23. 'PumpeWest Ein und LCD Beleuchtung Ein
      24. setPortx Pumpe_west or LCD_Hintergrundbeleuchtung
      25. 'Pumpen Aus
      26. resetPortX Pumpe_west or Pumpe_ost
      27. end
      Alles anzeigen