Hier werden (falls Notwendig) in unregelmässigen Abständen [highlight=yellow:09ca723bda]Tipps[/highlight:09ca723bda] veröffentlicht


[highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)
Appbrd-Demo1.bas
Code:
'ApplicationBoard 1
'Protobed ATmega16-32
'
'AppBrd-1 LCD Header an Portobed ATmega 16-32 Port-C angeschlossen
'AppBrd-1 I2C Header an Portobed ATmega 16-32 angeschlossen

'=================================================================

' CPU konfigurieren
$regfile = "m32def.dat"
$crystal = 16000000                               ' Quarzfrequenz

' I2C konfigurieren
Config Scl = Portc.0                              ' Ports fuer IIC-Bus
Config Sda = Portc.1

' Konstanten definieren
Const Appbrd_adr = &H42                           ' Adresse des PCF8574 A0 auf ON
Const Appbrd_adr2 = &H43                          ' Adresse des PCF8574 A0 auf ON

Const Text1 = "Applicat.Board 1"


' LCD konfigurieren
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2

' Variablen deklarieren
Dim M As Byte
Dim N As Byte
Dim X As Byte

I2cinit                                           ' I2C - BUS initialisoeren
Initlcd                                           ' LCD initialisieren
Display Off                                       ' LCD Anzeige ausschalten
Cls                                               ' LCD löschen
Cursor Off Noblink                                ' Schalte den Cursor aus

Display On                                        ' LCD Anzeige einschalten

I2csend Appbrd_adr , 0                            ' den PCF8574 auf 0 stellen (alle LED aus)

' Variablen initialisieren
M = 0
N = 0
X = 0

Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd Text1                                         ' Ausgabe von Text1 auf LCD

Locate 2 , 1                                      ' Cursor auf 2. Zeile, 1. Spalte setzten
Lcd "Demonstration"                               ' Ausgabe von "Demonstration" auf LCD

Wait 3                                            ' kurze Pause

Einsprung:
M = 0
N = 0
X = 0


Cls                                               ' Anzeige löschen
Wait 1
Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "Achte auf ......"
Locate 2 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "       die LED's"
Wait 1

Do

   For N = 0 To 7
      M = 2 ^ N
      I2csend Appbrd_adr , M                         ' den PCF8574 Daten senden
      Waitms 100                                  ' kurze Zeit zum gucken ;-)
   Next N
   X = X + 1                                      ' Zähler erhöhen
Loop Until X >= 10                                ' solange wieder holen bis die Bedingung erfüllt ist

I2csend Appbrd_adr , 0                            ' den PCF8574 auf 0 stellen (alle Ports aus)

Cls                                               ' Anzeige löschen
Wait 1
Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "Noch einmal ?   "
Locate 2 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "JA          NEIN"

I2csend Appbrd_adr , &B10000001                   ' den PCF8574 stellen 1. und letzter Port

Do
  I2creceive Appbrd_adr2 , N                      ' Beachte es können nur Ports abgefragt werden
  If N = 128 Then                                 ' welche einen HI Pegel haben
   Exit Do                                        ' Der PCF meldet aber die Summe der aktiven Bits
  End If                                          ' Werte der Bits beachten

  Locate 2 , 6
  Lcd "["
  Lcd N
  Lcd "]  "

  Loop Until N = 1
I2csend Appbrd_adr , 0                            ' den PCF8574 stellen alle Ports aus

If N = 128 Then Goto Einsprung

Cls

Locate 1 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "Jetzt Tasten    "
Locate 2 , 1                                      ' Cursor auf 1. Zeile, 1. Spalte setzten
Lcd "druecken ["

M = &B11111111                                    ' Binäre Darstellung alle Ports auf HI
'                                                 ' Hexadezimal ginge es so M = &HFF
'                                                 ' und selbtverfreilich auch in dezimal M = 255

I2csend Appbrd_adr , M                            ' den PCF8574 Daten senden (alle Ports an)


Do
 I2creceive Appbrd_adr2 , N
 Locate 2 , 11
 Lcd N
 Lcd "]  "
 Waitms 10
Loop


End                                               'end program
[highlight=yellow:09ca723bda]Demoprogramm[/highlight:09ca723bda] (ist auch in der Doku bereits enthalten)
Appbrd-Demo2.bas
Code:
'ApplicationBoard 1
'Protobed ATmega16-32
'
'AppBrd-1 LCD Header an Portobed ATmega 16-32 Port-C angeschlossen
'AppBrd-1 I2C Header an Portobed ATmega 16-32 angeschlossen

'=================================================================

' CPU konfigurieren
$regfile = "m32def.dat"
$crystal = 16000000                               ' Quarzfrequenz

' I2C konfigurieren
Config Scl = Portc.0                              ' Ports fuer IIC-Bus
Config Sda = Portc.1

' LCD konfigurieren
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2

' Prozeduren deklarieren
Declare Sub Prog1
Declare Sub Prog2
Declare Sub Prog3
Declare Sub Prog4
Declare Sub Prog0
Declare Sub Flash(byval Z As Byte)

' Konstanten definieren
Const Appbrd_w_adr = &H42                         ' Adresse des PCF8574 zum schreiben (ADR - A0 auf ON)
Const Appbrd_r_adr = &H43                         ' Adresse des PCF8574 zum lesen     (ADR - A0 auf ON)

' I2C initialisieren
I2cinit                                           ' I2C - BUS initialisoeren
' Slave initialisieren
I2csend Appbrd_w_adr , &B00000000                 ' den PCF8574 auf 00000000

' LCD initialisieren
Initlcd                                           ' LCD initialisieren
Display Off                                       ' LCD Anzeige ausschalten
Cls                                               ' LCD löschen
Cursor Off Noblink                                ' Schalte den Cursor aus

Display On                                        ' LCD Anzeige einschalten


' Variablen deklarieren
Dim M As Byte
Dim N As Byte
Dim X As Byte


' Hauptprogramm
Do
   Locate 1 , 1
   Lcd "Programm waehlen"
   Locate 2 , 1
   Lcd "1 2 3 4     ENDE"
   I2csend Appbrd_w_adr , &B10001111              ' Eingabemaskierung
   '                                                 (Anzeige am Board Seitenverkehrt)

   Do
      I2creceive Appbrd_r_adr , N                 ' solange wiederholen bis
   Loop Until N <> &B10001111                     ' ein selektierter Port geändert wird

   I2csend Appbrd_w_adr , &B00000000              ' den PCF8574 auf 00000000

  Select Case N
    Case &B10001110 : Prog1
    Case &B10001101 : Prog2
    Case &B10001011 : Prog3
    Case &B10000111 : Prog4
    Case &B00001111 : Prog0
    Case Else : Call Flash(20)
  End Select

Loop


   Cls
   Locate 1 , 1
   Lcd N
   Locate 2 , 1
   Lcd "Ende"
   End                                            'end program

  ' +++ +++ +++ +++ +++
  ' +++ +++ +++ +++ +++

    Sub Prog1
      Cls
      Locate 1 , 1
      Lcd "Programm 1"
      Locate 2 , 1
      Lcd "wurde gewaehlt"
      Waitms 500
      Call Flash(3)
      Wait 1
   End Sub

  ' +++ +++ +++ +++ +++

   Sub Prog2
      Cls
      Locate 1 , 1
      Lcd "Programm 2"
      Locate 2 , 1
      Lcd "wurde gewaehlt"
      Waitms 500
      Call Flash(3)
      Wait 1
   End Sub

  ' +++ +++ +++ +++ +++

   Sub Prog3
      Cls
      Locate 1 , 1
      Lcd "Programm 3"
      Locate 2 , 1
      Lcd "wurde gewaehlt"
      Waitms 500
      Call Flash(3)
      Wait 1
   End Sub

  ' +++ +++ +++ +++ +++

   Sub Prog4
      Cls
      Locate 1 , 1
      Lcd "Programm 4"
      Locate 2 , 1
      Lcd "wurde gewaehlt"
      Waitms 500
      Call Flash(3)
      Wait 1

   End Sub

  ' +++ +++ +++ +++ +++

   Sub Prog0
      Cls
      Locate 1 , 1
      Lcd "Programm ENDE"
      Locate 2 , 1
      Lcd "wurde gewaehlt"
      Wait 2
      Call Flash(10)
      Cls
  End
  End Sub

  ' +++ +++ +++ +++ +++

  Sub Flash(byval Z As Byte)                      ' Ein Lichterspiel von definierbarer Anzahl
      For X = 1 To Z
         I2csend Appbrd_w_adr , &HFF              ' 11111111
         Waitms 50
         I2csend Appbrd_w_adr , &H00              ' 00000000
         Waitms 150
      Next X

  End Sub

End