port_remap.lib

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!

  • Mit dieser Library kann ein virtuell gebildeter PORTX, bestehend aus PINs unterschiedlicher PORTS, schnell und kompakt schreibend bedient werden.
    Die port_remap.lib stellt obendrein noch eine Funktion zur Verfügung, die es erlaubt, die dem PORTX zugehörigen PIN-Register Bits zu lesen.


    Implementierung

    BASCOM-Quellcode

    1. $lib "port_remap.lib" : $external _remapX
    2. declare sub writePortx(byreg r17 as byte)
    3. declare sub setPortx(byreg r17 as byte)
    4. declare sub resetPortx(byreg r17 as byte)
    5. declare function readPinX() as byte





    PORTX

    Die gewünschten PORT und PIN Zuordnung werden in folgender Weise angegeben:

    BASCOM-Quellcode

    1. const PORTX0 = PORTA :const PX0 = PA1
    2. const PORTX1 = PORTB :const PX1 = PB0
    3. const PORTX2 = PORTC :const PX2 = 2
    4. const PORTX3 = PORTD :const PX3 = 3
    5. const PORTX4 = PORTE :const PX4 = 4
    6. const PORTX5 = PORTF :const PX5 = 5
    7. const PORTX6 = PORTG :const PX6 = 6
    8. const PORTX7 = PORTH :const PX7 = 7


    Definieren kann man PORTX0 bis PORTX7. Werden nicht alle Ausgänge benötigt, können die entsprechenden Zeilen auskommentiert oder gelöscht werden.Doppel- und Mehrfachdefinitionen sind auch erlaubt, d.h.das z.B. PORTX0 und PORTX1 durchaus dem gleichen physikalischen PORT-PIN zugeordnet sein können.




    Anwenden

    Ein definierter PORTX kann ebenfalls auch (ohne Wirkung der Library)mit BASCOM-Befehlen bedient werden:

    BASCOM-Quellcode

    1. set PORTX0.PX0
    2. set PORTX1.PX1
    3. set PORTX2.PX2
    4. set PORTX3.PX3
    5. set PORTX4.PX4
    6. set PORTX5.PX5
    7. set PORTX6.PX6
    8. set PORTX7.PX7

    Quellcode

    1. writePortX 255 ' den ganzen Port beschreiben
    2. resetPortX &B10101010 ' selektives Rücksetzen
    3. setPortX &B10101010 ' selektives Setzen




    Befehlsreferenz
    writePortx()
    BeschreibungPORTX, bzw. dessen zugeordnete PORT-Bits werden entsprechend der Wertigkeit des Parameters gesetzt.
    Deklarationdeclare sub writePortx(byreg r17 as byte)
    ParameterByte Variable oder Konstante
    Beispiel



    setPortx()
    BeschreibungSelektives Setzen. PORTX, bzw. dessen zugeordnete PORT-Bits werden =1 gesetzt, wenn die korrespondierende Bitposition in der übergebenen Bitmaske =1 ist.
    Deklarationdeclare sub setPortx(byreg r17 as byte)
    ParameterByte Variable oder Konstante
    Beispiel



    resetPortx()
    BeschreibungSelektives Zurücksetzen. PORTX, bzw. dessen zugeordnete PORT-Bits werden =0 gesetzt, wenn die korrespondierende Bitposition in der übergebenen Bitmaske =1 ist.
    Deklarationdeclare sub resetPortx(byreg r17 as byte)
    ParameterByte Variable oder Konstante
    Beispiel



    readPINX()
    BeschreibungPORTX, bzw. dessen korrespondierende PIN-Register-Bits werden gelesen.
    Deklarationdeclare function readPinX() as byte
    RückgabeByte Variable
    Beispiel

    BASCOM-Quellcode

    1. dim PINX as byte
    2. pinx = readPinX()





    Beispiel

    BASCOM-Quellcode

    1. '(
    2. Präsentationsbeispiel zur port_remap.lib am Arduino Mega
    3. Autor: Galahat
    4. Date: 17th November 2017
    5. ')
    6. 'ARDUINO MEGA
    7. '------------------------------------------------
    8. $Regfile="m2560def.dat"
    9. $Crystal=16000000
    10. $hwstack=40
    11. $swstack=16
    12. $framesize=32
    13. Config PORTD.PD0 = output
    14. Config PORTD.PD1 = output
    15. Config PORTD.PD2 = output
    16. Config PORTD.PD3 = output
    17. Config PORTH.PH0 = output
    18. Config PORTH.PH1 = output
    19. Config PORTJ.PJ0 = output
    20. Config PORTJ.PJ1 = output
    21. '------------------------------------------------
    22. $lib "port_remap.lib":$external _remapX
    23. declare sub writePortx(byreg r17 as byte)
    24. declare sub setPortx(byreg r17 as byte)
    25. declare sub resetPortx(byreg r17 as byte)
    26. declare function readPinX() as byte
    27. '------------------------------------------------
    28. const PORTX0 = PORTD : const PX0 = PD0
    29. const PORTX1 = PORTD : const PX1 = PD1
    30. const PORTX2 = PORTD : const PX2 = PD2
    31. const PORTX3 = PORTD : const PX3 = PD3
    32. const PORTX4 = PORTH : const PX4 = PH0
    33. const PORTX5 = PORTH : const PX5 = PH1
    34. const PORTX6 = PORTJ : const PX6 = PJ0
    35. const PORTX7 = PORTJ : const PX7 = PJ1
    36. 'zur Demonstration eine Sub die einen üblichen Weg aufzeigt
    37. declare sub Write_NORMAL(byval parameter as byte)
    38. 'Bsp: "den ganzen Port beschreiben"
    39. '---------------------------------
    40. Write_NORMAL &B10101010 ' 116 Takte
    41. writePortX &B01010101 ' mit lib 38 Takte
    42. 'Bsp. toggeln
    43. '----------------------------------
    44. do
    45. resetPortX &B10101010 ' selektives Rücksetzen
    46. waitms 500
    47. setPortX &B10101010 ' selektives Setzen
    48. waitms 500
    49. loop
    50. '***************************************************************************************
    51. 'Eine der vielen Möglichkeiten, gepackt in eine Sub.
    52. 'Hier wurde bereits eine einfache optimierung vorgenommen, in dem die Bits für PORTD
    53. 'in einem Schritt beschrieben werden.
    54. '***************************************************************************************
    55. sub Write_NORMAL(byval parameter as byte)
    56. PORTH.0 = parameter.4
    57. PORTH.1 = parameter.5
    58. PORTJ.0 = parameter.6
    59. PORTJ.1 = parameter.7
    60. PortD = PORTD and &Hf0
    61. parameter = parameter and &H0f
    62. Portd = Portd or Parameter
    63. end sub
    64. end
    Alles anzeigen



    Download
    port_remap.lib

    9.256 mal gelesen