Guten Tag Gerhard,
wollte doch auf keinen Fall, irgend eine Programmiersprache, als gut oder schlecht beurteilen.
In meiner Antwort wollte ich nur beschreiben warum ich Bascom nutze.
Hatte mein Code Zentrale_Test.bas ungekürzt veröffentlicht, da auch Lösungen für ( DCF77, 1wire,Touch, 2Controller mit UART verbinden und Lösungen für I2C –Bus auch eine LCD hängt daran) als eigenständige Gosubs. Wie zum Beispiel 2 PCF8574 der eine als Eingang der andere in Abhängigkeit als Ausgang.
Hier ein Ausschnitt:
'Slaveadressen für Porterweiterung LCD
Const Pcf8574_lcd = &H70 '&B01110000 Dez = 112
'Slaveadressen für Porterweiterung D1
Const Bus_d1 = &H72 '&B01110010 Dez = 114
'Slaveadressen für Porterweiterung D2
Const Bus_d2 = &H74 '&B01110100 Dez = 116
'==== Adressen Variable zuweisen ====
Const Taster_schreib_adresse_t = &B01110010 ' ist IC1
Const Taster_lese_adresse_t = &B01110011
Const Led_schreib_adresse_t = &B01111000 ' ist IC3
Const Led_lese_adresse_t = &B01111001
'----- Beispiel I²C-Bus Ein-und Ausgänge für 2 ICs verknüpfen.----
' IC1 = Eingang (Taster) IC3 = Ausgang (LED)
Ibus_dig:
I2cstart
I2cwbyte Taster_schreib_adresse_t
I2cwbyte &B11111111 ‘saubere Startbedingung
I2cstop
I2cstart
I2cwbyte Taster_lese_adresse_t
'I2crbyte Tasten , Ack 'lese nochmal ist sicher aber muss nicht sein
I2crbyte Tasten , Nack
I2cstop
'### Abfrage Bit von Tasten_Byte #########
'das Toggeln ist nur für Doppelabfrage 1x drücken EIN nochml AUS
'ein Beispiel für Kontakte ist Bit7 vom Tasten-Byte.
If Tasten.0 <> Alte_tasten.0 Then
If Tasten.0 = 0 Then 'ist Bit0 vom Byte
'steigende Flanke
Toggle Leds.0
Cls 'alte Anzeige löschen
Gosub Anzeigen 'gehe zur LCD-Anzeige
Else
'fallende Flanke
End If
End If
'-- Abfrage Bit1 vom Byte Tasten ---
If Tasten.1 <> Alte_tasten.1 Then
If Tasten.1 = 1 Then
'steigende Flanke
Toggle Leds.1
Cls 'alte Anzeige löschen
Gosub Anzeigen 'gehe zur LCD-Anzeige
Else
'fallende Flanke
End If
End If
'-- Abfrage Bit2 vom Byte Tasten --
If Tasten.2 <> Alte_tasten.2 Then
If Tasten.2 = 1 Then
' steigende Flanke
Toggle Leds.2
Else
' Fallende Flanke
End If
End If
'-- Abfrage Bit3 vom Byte Tasten --
If Tasten.3 <> Alte_tasten.3 Then
If Tasten.3 = 1 Then
' steigende Flanke
Toggle Leds.3
Else
' Fallende Flanke
End If
End If
'-- Abfrage Bit4 vom Byte Tasten --
If Tasten.4 <> Alte_tasten.4 Then
If Tasten.4 = 1 Then
' steigende Flanke
Toggle Leds.4
Else
' Fallende Flanke
End If
End If
'-- Abfrage Bit5 vom Byte Tasten --
If Tasten.5 <> Alte_tasten.5 Then
If Tasten.5 = 1 Then
' steigende Flanke
Toggle Leds.5
Else
' Fallende Flanke
End If
End If
'-- Abfrage Bit6 vom Byte Tasten --
If Tasten.6 <> Alte_tasten.6 Then
If Tasten.6 = 1 Then
' steigende Flanke
Toggle Leds.6
Else
' Fallende Flanke
End If
End If
'-- Abfrage Bit7 vom Byte Tasten --
If Tasten.7 = 0 Then
Print "habe EIN geschalten" 'Pin auf GND
Else
Print "habe AUS geschalten" 'Pin auf Vcc oder offen (liegen ja int. auf H)
End If
'----------letzen Tastendruck merken----------
Alte_tasten = Tasten
'--- Tastendruck an LED weitergeben-----------
I2cstart
I2cwbyte Led_schreib_adresse_t
I2cwbyte Leds
I2cstop
'--- Tastendruck an Anzeige-Modus weitergeben--
Lcd_aktualisieren = Leds
Gosub Anzeigen
Return
Gruß
Fred
Lesezeichen