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 

 Re: Problem mit I2C Tastatur Kategorie: C-Control I V1.1 (von Hanns - 30.08.2010 13:36)
 Als Antwort auf Problem mit I2C Tastatur von Markus - 30.08.2010 9:52
Hanns nutzt:  CC1-M-Unit V1.1, Open-Mini, Open-Midi, Open-Macro
> 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.

hallo
liegt am Compiler
lade diesen neu herunter

hanns

 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: