Home    Impressum / Datenschutz    Shop    Download    Links     Blog  

I2C-Programmbeispiel für den C-Control von CONRAD

Code und Applikationsbeispiele für die Ansteuerung eines PCF8574 und den LM75-Temperatursensor

 Zitat:

S.g. Herr Horter,

anbei die Beispielprogramme für die C-Control.

8574EIN.BAS gibt den Zustand der Eingänge als Dezimalzahl (0 - 128) aus
(über die RS232 der C-Control mittels PRINT).

8574AUS.BAS erzeugt mit den LED´s der Ausgabeplatine ein kleines Lauflicht.

8574EA.BAS benötigt eine Eingabe und Ausgabeplatine und überträgt den Zustand
der Eingänge auf die (LED´s der) Ausgabeschaltung.

lm75.BAS liest die Temperatur vom LM75.

Beste Grüße, Christian P.

'**************************************
' C-Control/BASIC       8574EIN.BAS
' Ansteuerung eines PCF8574
' Das Programm liest die Eingänge des ICs und gibt den Binärwert
' als
Dezimalzahl aus,  wartet dann eine Sekunde und
' das ganze beginnt von neuem.

'**************************************
' --- Definitionen --------------------

define SDA port[7]
define SCL port[8]
define Daten byte
define Komma byte
define Zaehler byte
define N byte

' --- Programmoperationen -------------
SDA = ON
SCL = ON

#
Loop
    gosub Start
    Daten = 65    
'1. Adresse PFC 8574 beim lesen
    gosub I2C_Write
    gosub I2C_Read
    print daten
    gosub NoAck
    gosub
Stop
    pause 50
goto loop

#Start
  SDA = OFF
  SCL = OFF
  return

#
Stop
  SDA = OFF
  SCL = ON
  SDA = ON
  return

#I2C_WRITE
  for N = 1 to 8
    sda = off
    if (Daten AND 128) = 128 then SDA = ON
    pulse SCL
    Daten = Daten shl 1
'1 Bit nach links
  next
  pulse SCL            
' 9. Impuls  Ack vom IC
  return

#I2C_READ
  Daten = 0
  deact SDA
  for N = 1 to 8
    Daten = Daten shl 1
    SCL = on
    if SDA then Daten = Daten + 1
    SCL = off
  next
  return


#Ack
  SDA = 0
  pulse SCL
  return

#NoAck
  SDA = 1
  pulse SCL
  return

end


'**************************************
' C-Control/BASIC       8574AUS.BAS
' Ansteuerung eines PCF8574
' Das Programm löscht zuerst alle Ausgänge, und schaltet
' sie dann der Reihe nach ein
und wieder aus, 
' wartet dann eine Sekunde und das ganze beginnt von neuem.

'**************************************
' --- Definitionen --------------------

define SDA port[7]
define SCL port[8]
define Daten byte
define Komma byte
define Zaehler byte
define N byte

' --- Programmoperationen -------------
SDA = ON
SCL = ON

#
Loop
    gosub Start
    Daten = 66   
'1. Adresse PFC 8574 beim schreiben
    gosub I2C_Write
    daten = 0  
'alle ausgänge auf low setzen
    gosub I2C_Write
    daten = &B00000001 
'ausgang 1 auf high setzen  Dezimal 1
    gosub I2C_Write
    daten = &B00000010 
'ausgang 2 auf high setzen  Dezimal 2
    gosub I2C_Write
    daten = &B00000100 
'ausgang 3 auf high setzen  Dezimal 4
    gosub I2C_Write
    daten = &B00001000 
'ausgang 4 auf high setzen  Dezimal 8
    gosub I2C_Write
    daten = &B00010000 
'ausgang 5 auf high setzen  Dezimal 16
    gosub I2C_Write
    daten = &B00100000 
'ausgang 6 auf high setzen  Dezimal 32
    gosub I2C_Write
    daten = &B01000000 
'ausgang 7 auf high setzen  Dezimal 64
    gosub I2C_Write
    daten = &B10000000 
'ausgang 8 auf high setzen  Dezimal 128
    gosub I2C_Write
    gosub
Stop   'Leitung wieder freigeben
    pause 50
goto loop

#Start
  SDA = OFF
  SCL = OFF
  return

#
Stop
  SDA = OFF
  SCL = ON
  SDA = ON
  return

#I2C_WRITE
  for N = 1 to 8
    sda = off
    if (Daten AND 128) = 128 then SDA = ON
    pulse SCL
    Daten = Daten shl 1
'1 Bit nach links
  next
  pulse SCL            
' 9. Impuls  Ack vom IC
  return


#Ack
  SDA = 0
  pulse SCL
  return

#NoAck
  SDA = 1
  pulse SCL
  return

end


Die anderen Beispiele finden Sie entweder als Quellcode in der ZIP-Datei oder in einzelnen Textdateien unten.

C-Control Quellcode
ccontrol-bas.zip (4 kB)
Alle vier Beispiele als bas-Dateien gezippt.
(Autor: Christian P.)
cc_8574aus.txt (4kB)
cc_8574ea.txt (2kB)
cc_8574ein.txt (2kB)
cc_lm75.txt (2kB)
C-Control Quellcode  mit einem Beispiel das I2C-Modem angesprochen werden kann.
(Bitte mit der rechten Maustaste "speichern unter" wählen! )