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
PORTX
Die gewünschten PORT und PIN Zuordnung werden in folgender Weise angegeben:
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:
Befehlsreferenz
writePortx()
setPortx()
resetPortx()
readPINX()
Beispiel
Alles anzeigen
Download
port_remap.lib
Implementierung
PORTX
Die gewünschten PORT und PIN Zuordnung werden in folgender Weise angegeben:
BASCOM-Quellcode
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:
Befehlsreferenz
writePortx()
Beschreibung | PORTX, bzw. dessen zugeordnete PORT-Bits werden entsprechend der Wertigkeit des Parameters gesetzt. |
Deklaration | declare sub writePortx(byreg r17 as byte) |
Parameter | Byte Variable oder Konstante |
Beispiel |
setPortx()
Beschreibung | Selektives Setzen. PORTX, bzw. dessen zugeordnete PORT-Bits werden =1 gesetzt, wenn die korrespondierende Bitposition in der übergebenen Bitmaske =1 ist. |
Deklaration | declare sub setPortx(byreg r17 as byte) |
Parameter | Byte Variable oder Konstante |
Beispiel |
resetPortx()
Beschreibung | Selektives Zurücksetzen. PORTX, bzw. dessen zugeordnete PORT-Bits werden =0 gesetzt, wenn die korrespondierende Bitposition in der übergebenen Bitmaske =1 ist. |
Deklaration | declare sub resetPortx(byreg r17 as byte) |
Parameter | Byte Variable oder Konstante |
Beispiel |
readPINX()
Beschreibung | PORTX, bzw. dessen korrespondierende PIN-Register-Bits werden gelesen. |
Deklaration | declare function readPinX() as byte |
Rückgabe | Byte Variable |
Beispiel |
Beispiel
BASCOM-Quellcode
- '(
- Präsentationsbeispiel zur port_remap.lib am Arduino Mega
- Autor: Galahat
- Date: 17th November 2017
- ')
- 'ARDUINO MEGA
- '------------------------------------------------
- $Regfile="m2560def.dat"
- $Crystal=16000000
- $hwstack=40
- $swstack=16
- $framesize=32
- Config PORTD.PD0 = output
- Config PORTD.PD1 = output
- Config PORTD.PD2 = output
- Config PORTD.PD3 = output
- Config PORTH.PH0 = output
- Config PORTH.PH1 = output
- Config PORTJ.PJ0 = output
- Config PORTJ.PJ1 = output
- '------------------------------------------------
- $lib "port_remap.lib":$external _remapX
- declare sub writePortx(byreg r17 as byte)
- declare sub setPortx(byreg r17 as byte)
- declare sub resetPortx(byreg r17 as byte)
- declare function readPinX() as byte
- '------------------------------------------------
- const PORTX0 = PORTD : const PX0 = PD0
- const PORTX1 = PORTD : const PX1 = PD1
- const PORTX2 = PORTD : const PX2 = PD2
- const PORTX3 = PORTD : const PX3 = PD3
- const PORTX4 = PORTH : const PX4 = PH0
- const PORTX5 = PORTH : const PX5 = PH1
- const PORTX6 = PORTJ : const PX6 = PJ0
- const PORTX7 = PORTJ : const PX7 = PJ1
- 'zur Demonstration eine Sub die einen üblichen Weg aufzeigt
- declare sub Write_NORMAL(byval parameter as byte)
- 'Bsp: "den ganzen Port beschreiben"
- '---------------------------------
- Write_NORMAL &B10101010 ' 116 Takte
- writePortX &B01010101 ' mit lib 38 Takte
- 'Bsp. toggeln
- '----------------------------------
- do
- resetPortX &B10101010 ' selektives Rücksetzen
- waitms 500
- setPortX &B10101010 ' selektives Setzen
- waitms 500
- loop
- '***************************************************************************************
- 'Eine der vielen Möglichkeiten, gepackt in eine Sub.
- 'Hier wurde bereits eine einfache optimierung vorgenommen, in dem die Bits für PORTD
- 'in einem Schritt beschrieben werden.
- '***************************************************************************************
- sub Write_NORMAL(byval parameter as byte)
- PORTH.0 = parameter.4
- PORTH.1 = parameter.5
- PORTJ.0 = parameter.6
- PORTJ.1 = parameter.7
- PortD = PORTD and &Hf0
- parameter = parameter and &H0f
- Portd = Portd or Parameter
- end sub
- end
Download
port_remap.lib
9.288 mal gelesen