Hallo Burki,
hab es noch einmal ganz einfach zusammen geschrieben.
Das erste Listing war einfach nur aus Codeschnipsel zusammenkopiert.
Schau es Dir mal an!
Sieht doch etwas übersichtlicher aus.Code:'****************************************************************************** $regfile = "m32def.dat" $baud = 9600 $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer I2C-Bus Config Sda = Portc.1 'Eingänge Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2 Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2 'Power-Port Const Writepowerport_adr = &H72 'I2C Adr PCF 1 Const Readpowerport_adr = &H73 'I2C Adr PCF 1 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim Taste1 As Byte 'Größe für Variable festlegen Dim Taste2 As Byte 'Größe für Variable festlegen I2cinit I2cstart I2cwbyte &H74 'Schreibbefehl an PCF3 schicken 'Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv) I2cwbyte &B00000010 'Datenbyte an PCF3 I2cstop Portd.6 = 0 'Schrittmotoren erst mal ausschalten(vorsichtshalber :-) ) Taste1 = 247 'Taste 1 (Eingangsport-Port3) Variable für den Eingang Taste2 = 251 'Taste 2 (Eingangsport-Port4) Variable für den Eingang '******************** Hauptprogramm ******************************************** Do I2cstart I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen I2cstop 'I2C STOP If I2cdaten = Taste1 Then Goto Relais_on 'Vergleich-> ist Taste1 dann gehe zu Unterprogramm Relais_on If I2cdaten = Taste2 Then Goto Relais_off 'Vergleich-> ist Taste2 dann gehe zu Unterprogramm Relais_off Loop '********************* Unterprogramme ****************************************** Relais_on: I2cinit 'I2C Initilisieren I2cstart 'I2C START I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF1 schicken I2cwbyte &B00100000 'Datenbyte an PCF1 -> PowerPort 6 einschalten 'binäre Darstellung, Port 6 auf High geschaltet I2cstop 'I2C STOP Return 'Rücksprung in Hauptprogramm Relais_off: I2cinit 'I2C Initilisieren I2cstart 'I2C START I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF1 schicken I2cwbyte &B00000000 'Datenbyte an PCF1 -> PowerPort ausschalten 'binäre Darstellung, wenn Ports 1-8 auf Low geschaltet I2cstop 'I2C STOP Return 'Rücksprung in Hauptprogramm![]()
Beim RNBFRA-Board mußt man bei den Eingängen und Ausgängen alles über I2C-Routinen machen.
Aber wenn man mal das Ganze vereinfacht anschaut, fragt man in der Hauptschleife die Eingänge ab, vergleicht sie und stößt ein Unterprogamm an.
Nach dem Abarbeiten des Unterprogrammes, erfolgt ein Rücksprung in die Hauptschleife.







Zitieren

Lesezeichen