Hi, das geht viel einfacher.
Du musst zunächst mit Deinen Tastern den Port auf Gnd schalten (nicht auf 5Volt!). Wenn nicht gedrückt ist, dann wird der Port automatisch auf 5V gezogen und damit als "On" erkannt (also logisch gerade verkehrt herum).
Die Zustände der Relais werden schon im Byte "STATION_IO" als Bit-Zustände gespeichert. Die Tastenzustände müssen mit Not einfach invertiert werden und dem Relais-Bits zugewiesen werden. Fertig!
Schau Dir auch die Definition hier an, dass ist einfacher und führt nicht zu weiteren Kuddelmuddel:
define REL4 ref STATION_IO at bit[8]
Code:
define LIGHT as port[16]
define BPORT1 as byteport[1]
import "...\LIB\SHOW_BINARY.BAS"
import "...\LIB\PULLUP1_ENABLE.BAS"
define ADC8 ad[8]
define SDA as port[9]
define SCL as port[10]
define EXTPORT as byteport[4]
define STATION_IO as byte
define REL1 ref STATION_IO at bit[5]
define REL2 ref STATION_IO at bit[6]
define REL3 ref STATION_IO at bit[7]
define REL4 ref STATION_IO at bit[8]
define Taster1 as Port[1] ' Taster auf GND
define Taster2 as Port[2] ' Taster auf GND
define Taster3 as Port[3] ' Taster auf GND
define Taster4 as Port[4] ' Taster auf GND
PULLUP1_ENABLE()
LIGHT=off
LCD.INIT
SDA=on
SCL=on
STATION_IO=OFF
#HAUPTSCHLEIFE
REL1=Not(Taster1)
REL2=Not(Taster2)
REL3=Not(Taster3)
REL4=Not(Taster4)
EXTPORT=STATION_IO ' Auf Byteport schreiben
LCD.POS 1,1
LCD.PRINT "BINARY: "
SHOW_BINARY(BPORT1)
goto HAUPTSCHLEIFE
Lesezeichen