Am einfachsten ist für sowas eine Tabelle mit Port-Adresse und Pin-Maske
(sieht schräger aus, als es ist)
Code:
PORT_TAB:
DATA &H3B, 1 ' PORTA Pin 0 virtuell 0
DATA &H3B, 2 ' PORTA Pin 1 virtuell 1
DATA &H3B, 4 ' PORTA Pin 2 virtuell 2
DATA &H3B, 8 ' PORTA Pin 3 virtuell 3
DATA &H3B, 16 ' PORTA Pin 4 virtuell 4
DATA &H3B, 32 ' PORTA Pin 5 virtuell 5
DATA &H3B, 64 ' PORTA Pin 6 virtuell 6
DATA &H3B, 128 ' PORTA Pin 7 virtuell 7
DATA &H38, 128 ' PORTB Pin 0 virtuell 8
DATA &H38, 128 ' Port B Pin 7 virtuell 9
DATA &H38, 2 ' Pin 1 virtuell 10
DATA &H38, 128 ' Pin 7 virtuell 11
u.s.w.
DATA &H35, 1 ' Port C Pin 0 virtuell xxx
DATA &H32, 1 ' Port D Pin 0 virtuell xxx
Code:
DIM Portadr as byte
DIM Portmsk as byte
DIM Tabv as word at Portadr overlay
DIM Temp as byte
Temp = datenspeicher(3)
Tabv = lookup ( temp, PORT_TAB)
' z.B. einzelnes PortPin setzen (die anderen nicht anrühren):
Temp = INP ( Portadr)
TEMP = TEMP OR Portmsk
OUT ( Portadr, TEMP)
' z.B. einzelnes PortPin löschen (die anderen nicht anrühren):
Temp = INP ( Portadr)
Portmsk = Portmsk XOR &HFF
TEMP = TEMP AND portmsk
OUT ( Portadr, TEMP)
Lesezeichen