Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

CheckKeyRow und UsbPowerGraphic2

Hilfe beim Programmieren mit dem fx-9860G SDK.

CheckKeyRow und UsbPowerGraphic2

Beitragvon Casimo » Fr 15. Feb 2013, 16:26

Wie lässt sich das
Code: Alles auswählen
unsigned char CheckKeyRow(unsigned char code)
{
   unsigned char result=0;
   short*PORTB_CTRL=(void*)0xA4000102;
   short*PORTM_CTRL=(void*)0xA4000118, ;
   char*PORTB=(void*)0xA4000122;
   char*PORTM=(void*)0xA4000138;
   char*PORTA=(void*)0xA4000120;
   short smask;
   char cmask;
   unsigned char column, row;

   column = code>>4;
   row = code &0x0F;

   smask = 0x0003 << (( row %8)*2);
   cmask = ~( 1 << ( row %8) );
   if(row <8)
   {
      *PORTB_CTRL = 0xAAAA ^ smask;
      *PORTM_CTRL = (*PORTM_CTRL & 0xFF00 ) | 0x00AA;
      delay();
      *PORTB = cmask;
      *PORTM = (*PORTM & 0xF0 ) | 0x0F;
   }
   else
   {
      *PORTB_CTRL = 0xAAAA;
      *PORTM_CTRL = ((*PORTM_CTRL & 0xFF00 ) | 0x00AA)  ^ smask;
      delay();
      *PORTB = 0xFF;
      *PORTM = (*PORTM & 0xF0 ) | cmask;
   }
   
   delay();
   result = (~(*PORTA))>>column & 1;
   delay();
   *PORTB_CTRL = 0xAAAA;
   *PORTM_CTRL = (*PORTM_CTRL & 0xFF00 ) | 0x00AA;
   delay();
   *PORTB_CTRL = 0x5555;
   *PORTM_CTRL = (*PORTM_CTRL & 0xFF00 ) | 0x0055;
   delay();
   
   return result;
}


Auf den neuen Taschenrechner portieren? Ich finde in den Docs kein Register für Port_M.
Bild
Benutzeravatar
Casimo
 
Beiträge: 111
Registriert: Fr 3. Aug 2012, 14:48
Taschenrechner: fx9860 GII USB Power Graphic 2
fxCG20

Re: CheckKeyRow und UsbPowerGraphic2

Beitragvon SimonLothar » Fr 15. Feb 2013, 17:45

Ich würde hierfür syscall 0x24A benutzen. Das ist ist kompatibel und so schnell wie jede Direkt-Register-Implementation. Ich benutze meist sogar 0x6C4. Das ist in Bezug auf die Ansprechzeit des LCD auch schnell genug, wenn man etliche Objekte auf der Benutzeroberfläche herumwandern lässt und ständig und schnell auf ein Tastaturereigneis reagieren muss.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: CheckKeyRow und UsbPowerGraphic2

Beitragvon Casimo » Fr 15. Feb 2013, 17:53

Ich habe es bisher über einen Zugriff auf das Keyboardregister gemacht, wollte aber eigentlich für alle OS den gleichen Code.
Naja, probiere ich es aus.
Edit: Nee, PRGM_GetKey ist viel zu langsam.
Die andere Funktion sieht interessant aus...
Bild
Benutzeravatar
Casimo
 
Beiträge: 111
Registriert: Fr 3. Aug 2012, 14:48
Taschenrechner: fx9860 GII USB Power Graphic 2
fxCG20

Re: CheckKeyRow und UsbPowerGraphic2

Beitragvon Casimo » Fr 15. Feb 2013, 18:00

Moment, 0x24A ist nicht gut. Ich suche eine Möglichkeit, mehrere Tasten gleichzeitig abzufragen. :|
Edit: Ich bin auch schlau... Ist 0x24B / 0x24C auch so schnell wie 0x24A?
Bild
Benutzeravatar
Casimo
 
Beiträge: 111
Registriert: Fr 3. Aug 2012, 14:48
Taschenrechner: fx9860 GII USB Power Graphic 2
fxCG20

Re: CheckKeyRow und UsbPowerGraphic2

Beitragvon SimonLothar » Fr 15. Feb 2013, 21:05

Mehrere gleichzeitig geht eigentlich kompatibel nur mit 0x24B / 0x24C.
Inkompatibel (also über Register) kannst du auf dem SH-7305 mal 0xA44B0000, ...02, ...04, ...06, ...08 und ...0A (jeweils als short) einlesen. Diese Registerinhalte repräsentieren die Tatstaturmatrix. Das System schaltet zwar während der Abfrage die Keyboard-Interrupts ab, aber vielleicht geht es auch so. Probier mal.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400


Zurück zu fx-9860G SDK (Alle fx-9860G Modelle)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast