
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
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 |