Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Problem mit I2C Tastatur Kategorie: C-Control I V1.1 (von Markus - 30.08.2010 9:52)
Hallo zusammen,

ich benutze die C-Control 1 V2.0 und würde an ihr gerne die I2C Tastatur anschließen.
Das Problem ist nun, das wenn ich das Beispielprogramm PCF8574_Tastatur_2.bas (siehe unten)  verwende und dies Cmpilieren möchte kann er hiermit: define EXTPORT  byteport[10] nicht anfangen. Wenn ich den byteport auf 0 oder 1 setzte funktioniert es. Aber dann stimmt ja der Adressbereich der Tastatur nich. Denn die Adresse ist 70

Weiß vielleicht jemand Rat???

Markus


'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'IIIIIIIIIIIIIII      DEMO ZUR C-CONTROL M 2.0 / M 1.2     IIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'(by DIE HARD  01.05)
'
' ANWENDUNG:   IIC-BUS TASTATUR (19 83 56) MIT PCF8574 - DECODIERUNG -
'-----------------------------------------------------------------------
' Sie sehen hier die Anwendung der C-Control  mit einer PCF8574
' Porterweiterung für eine Matrix-Tastatur (als Zubehör 198356 erhältlich)

' Der PCF8574 befindet sich auf dem IIC-BUS TASTATUR MODUL.
' Er wird in diesm Beispiel als EXTENDED PORT angesprochen,
' welche vom Betriebssystem unterstützt werden und recht einfach
' zu benutzen sind.
'-----------------------------------------------------------------------
' Der Aufruf von GOSUB GET_MATRIX_KEY decodiert die 4x4 Matrix der Tastatur
' und liefert in der Variablen KEY den Tastencode der Matrix-Tastatur zurück
' Das Programm zeigt am LCD den Tastencode 0 bis 9 für die jeweiligen Ziffern
' und die Codes 11 bis 16 für Funktionstasten.
' Beachten Sie dass die PCF8574 jeweils auf unterschiedlichen Adressen
' laufen müssen, wenn weitere externe Ports in Betrieb sind.
'------------------------------------------------------------------------
' In diesem Beispiel ligt der PCF8574 auf Byteport[10], alle Adress-Jumper
' sind abgezogen.
'
' PCF 8574    ADR 0      Ports 17 - 24      BYTEPORT 3
' PCF 8574    ADR 1      Ports 25 - 32      BYTEPORT 4
' PCF 8574    ADR 2      Ports 33 - 40      BYTEPORT 5
' PCF 8574    ADR 3      Ports 41 - 48    BYTEPORT 6
' PCF 8574    ADR 4      Ports 49 - 56    BYTEPORT 7
' PCF 8574    ADR 5      Ports 57 - 64    BYTEPORT 8
' PCF 8574    ADR 6      Ports 65 - 72    BYTEPORT 9
' PCF 8574    ADR 7      Ports 73 - 80    BYTEPORT 10

' PCF 8574A  ADR 0      Ports 81 - 88    BYTEPORT 11
' PCF 8574A  ADR 1      Ports 89 - 96    BYTEPORT 12
' PCF 8574A  ADR 2      Ports 97 - 104    BYTEPORT 13
' PCF 8574A  ADR 3      Ports 105 - 112     BYTEPORT 14
' PCF 8574A  ADR 4      Ports 113 - 120     BYTEPORT 15
' PCF 8574A  ADR 5      Ports 121 - 128     BYTEPORT 16
' PCF 8574A  ADR 6      Ports 129 - 136     BYTEPORT 17
' PCF 8574A  ADR 7      Ports 137 - 144     BYTEPORT 18
'----------------------------------------------------------------------------
' Achtung, ganz wichtig:
' Die Ports müssen als Ausgang initialisiert werden bevor der IIC-Bus
' benutzt wird: SDA=on:SCL=on
' Achten Sie unbedingt darauf, dass das LCD initialisiert ist, wenn es
' angesteckt ist (auch wenn sie es nicht benutzen).
' Es teilt sich einen Teil seines Busses mit dem IIC-BUS
' print"#ON_LCD#";
' print"#INIT#";
' print"#OFF#";
'--------------------------------------------------------------------------
' Sie können SDA und SCL natürlich auch auf andere Digitalports legen,
' wenn Ihre Anwendung das erfordert.
'--------------------------------------------------------------------------
'--------------------------
'------ I/O PORTS ---------
'--------------------------
'--- IIC INTERFACE  -------
define SDA      port[9]
define SCL      port[10]
'---- PROGRAMM ------------
define LAMP     port[16]
define EXTPORT  byteport[10]
'--------------------------
'------ SYSTEM MEMORY -----
'--------------------------
'---- MATRIX DECODER ------
define OFFSET       byte[5]
define KEY          byte[6]
define VALUE        byte[7]





print"#ON_LCD#";"#INIT#";
LAMP=off
SDA=on:SCL=on

'------------------------------------------------
'---      MAIN LOOP DISPLAY KEYCODE            --
'------------------------------------------------

#LOOP
gosub GET_MATRIX_KEY
print"#L101#";"KEYCODE: ";KEY;"    ";
pause 5
goto LOOP

'------------------------------------------------
'---  TASTATURDECODER PCF8574 - 4x4 MATRIX     --
'-------------------------------------------------
#GET_MATRIX_KEY
'--------- DECODE COLUMN 1    1-5-9-C     --
EXTPORT=&B11101111
gosub DEC
if KEY<>255 then goto EXIT
'--------- DECODE COLUMN 2    2-6-0-D     --
EXTPORT=&B11011111
gosub DEC
if KEY<>255 then goto EXIT
'--------- DECODE COLUMN 3    3-7-A-E     --
EXTPORT=&B10111111
gosub DEC
if KEY<>255 then goto EXIT
'--------- DECODE COLUMN 2    4-8-B-F    --
EXTPORT=&B01111111
gosub DEC
#EXIT
RETURN
'-------------------------------------------------
'--------------- DECODE COL ----------------------
'-------------------------------------------------
#DEC
KEY=255:VALUE=EXTPORT
if (VALUE and &HF0) = &B11100000 then OFFSET=0
VALUE=VALUE and &H0F
if VALUE=&B00001110 then KEY=1+OFFSET
if VALUE=&B00001101 then KEY=5+OFFSET
if VALUE=&B00001011 then KEY=9+OFFSET
if VALUE=&B00000111 then KEY=13+OFFSET
IF KEY=10 THEN KEY=0
OFFSET=OFFSET+1
RETURN

 Antwort schreiben

Bisherige Antworten:

Re: Problem mit I2C Tastatur (von Hanns - 30.08.2010 13:36)