Auteur | Message |
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
|
Revenir en haut | Permalien | |
|
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
Posté le 16/05/2012 12:02 | | RE : problème clavier sur CCS PCWH et ISIS |
quelq'un pour l'aide ?
|
|
|
Revenir en haut | Permalien | |
salem
Member
Messages : 102 Inscrit(e) le: 09/01/2008
|
Posté le 17/05/2012 02:55 | | RE : problème clavier sur CCS PCWH et ISIS |
/////////////////////////////////////////////////////////////////////////// //// KBDD.C //// //// Generic keypad scan driver //// //// //// //// kbd_init() Must be called before any other function. //// //// //// //// c = kbd_getc(c) Will return a key value if pressed or /0 if not //// //// This function should be called frequently so as //// //// not to miss a key press. //// //// //// /////////////////////////////////////////////////////////////////////////// //// (C) Copyright 1996,2003 Custom Computer Services //// //// This source code may only be used by licensed users of the CCS C //// //// compiler. This source code may only be distributed to other //// //// licensed users of the CCS C compiler. No other use, reproduction //// //// or distribution is permitted without written permission. //// //// Derivative programs created using this software in object code //// //// form are not restricted in any way. //// ///////////////////////////////////////////////////////////////////////////
////////////////// The following defines the keypad layout on port D
// Un-comment the following define to use port B // #define use_portb_kbd TRUE
// Make sure the port used has pull-up resistors (or the LCD) on // the column pins
#if defined(__PCH__) #if defined use_portb_kbd #byte kbd = 0xF81 // This puts the entire structure #else #byte kbd = 0xF83 // This puts the entire structure #endif #else #if defined use_portb_kbd #byte kbd = 6 // on to port B (at address 6) #else #byte kbd = 8 // on to port D (at address 8) #endif #endif
#if defined use_portb_kbd #define set_tris_kbd(x) set_tris_b(x) #else #define set_tris_kbd(x) set_tris_d(x) #endif
//Keypad connection: (for example column 0 is B2) // Bx:
#ifdef blue_keypad ///////////////////////////////////// For the blue keypad #define COL0 (1 << 2) #define COL1 (1 << 3) #define COL2 (1 << 6)
#define ROW0 (1 << 4) #define ROW1 (1 << 7) #define ROW2 (1 << 1) #define ROW3 (1 << 5)
#else ////////////////////////////////////////////////// For the black keypad #define COL0 (1 << 5) #define COL1 (1 << 6) #define COL2 (1 << 7)
#define ROW0 (1 << 1) #define ROW1 (1 << 2) #define ROW2 (1 << 3) #define ROW3 (1 << 4)
#endif
#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3) #define ALL_PINS (ALL_ROWS|COL0|COL1|COL2)
// Keypad layout: char const KEYS[4][3] = {{'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'}};
#define KBD_DEBOUNCE_FACTOR 33 // Set this number to apx n/333 where // n is the number of times you expect // to call kbd_getc each second
void kbd_init() { }
char kbd_getc( ) { static BYTE kbd_call_count; static int1 kbd_down; static char last_key; static BYTE col;
BYTE kchar; BYTE row;
kchar='\0'; if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) { switch (col) { case 0 : set_tris_kbd(ALL_PINS&~COL0); kbd=~COL0&ALL_PINS; break; case 1 : set_tris_kbd(ALL_PINS&~COL1); kbd=~COL1&ALL_PINS; break; case 2 : set_tris_kbd(ALL_PINS&~COL2); kbd=~COL2&ALL_PINS; break; }
if(kbd_down) { if((kbd & (ALL_ROWS))==(ALL_ROWS)) { kbd_down=FALSE; kchar=last_key; last_key='\0'; } } else { if((kbd & (ALL_ROWS))!=(ALL_ROWS)) { if((kbd & ROW0)==0) row=0; else if((kbd & ROW1)==0) row=1; else if((kbd & ROW2)==0) row=2; else if((kbd & ROW3)==0) row=3; last_key =KEYS[row][col]; kbd_down = TRUE; } else { ++col; if(col==3) col=0; } } kbd_call_count=0; } set_tris_kbd(ALL_PINS); return(kchar); }
ce deux ligne inportant de lire
// Un-comment the following define to use port B // #define use_portb_kbd TRUE
// Make sure the port used has pull-up resistors (or the LCD) on // the column pins
|
|
|
Revenir en haut | Permalien | |
salem
Member
Messages : 102 Inscrit(e) le: 09/01/2008
|
Posté le 17/05/2012 02:56 1337216172.C (5 Ko) | | RE : problème clavier sur CCS PCWH et ISIS |
utiluser ce driver
|
|
|
Revenir en haut | Permalien | |
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
Posté le 17/05/2012 17:31 | | RE : problème clavier sur CCS PCWH et ISIS |
merci pour l'aide salem^_^
j'ai nommé le driver keypad.C donc est ce que je met #include keypad.C dans le main.C ? merci pour la réponse ^_^
|
|
|
Revenir en haut | Permalien | |
salem
Member
Messages : 102 Inscrit(e) le: 09/01/2008
|
Posté le 17/05/2012 19:50 | | RE : problème clavier sur CCS PCWH et ISIS |
bien sur tu doit metre le nom que vous faite keypad.C
bonne courage
|
|
|
Revenir en haut | Permalien | |
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
Posté le 17/05/2012 20:14 | | RE : problème clavier sur CCS PCWH et ISIS |
baraka allah fik ^_^ j vais essayer. pour les résistance de pullup 1K ça fais l'affaire ?
|
|
|
Revenir en haut | Permalien | |
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
|
Revenir en haut | Permalien | |
bertrandbd
Junior Member
Messages : 74 Inscrit(e) le: 12/12/2010
|
Posté le 20/05/2012 23:44 | | RE : problème clavier sur CCS PCWH et ISIS |
Sedelec
Tu peux poster ton schéma sous Isis avec le code pour que je puisse y jeter un coup d'oeil?
A+
ps: je n'utilise pas les pic mais plutôt les atmega donc je ne maîtrise pas bien l'architecture ni l'environnement de développement
|
|
|
Revenir en haut | Permalien | |
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
Posté le 21/05/2012 12:25 | | RE : problème clavier sur CCS PCWH et ISIS |
voilà le schéma sur ISIS.
il est notée dans le driver KBD.C modifié par salem en keypad.C et un livre pour la programmation en C des pics que :
B1 = ligne 2 B2 = colonne 0 B3 = colonne 1 B4 = ligne 0 B5 = ligne 3 B6 = colonne 2 B7 = ligne1
|
|
|
Revenir en haut | Permalien | |
bertrandbd
Junior Member
Messages : 74 Inscrit(e) le: 12/12/2010
|
Posté le 21/05/2012 23:20 | | RE : problème clavier sur CCS PCWH et ISIS |
Bonsoir
je ne vois pas ta pièce jointe (schéma)?
A+
|
|
|
Revenir en haut | Permalien | |
salem
Member
Messages : 102 Inscrit(e) le: 09/01/2008
|
Posté le 22/05/2012 15:40 1337694026.rar (54 Ko) | | RE : problème clavier sur CCS PCWH et ISIS |
It work finalyyy
|
|
|
Revenir en haut | Permalien | |
bertrandbd
Junior Member
Messages : 74 Inscrit(e) le: 12/12/2010
|
Posté le 23/05/2012 00:14 | | RE : problème clavier sur CCS PCWH et ISIS |
Bonsoir
Cela marche effectivement sauf qu'Isis détecte un problème de contention sur le 5V. Tu peux configurer le moniteur (debug/configure diagnostic) pour t'aider.
A+
|
|
|
Revenir en haut | Permalien | |
sedelec
Junior Member
Messages : 12 Inscrit(e) le: 15/05/2012
|
Posté le 23/05/2012 16:46 | | RE : problème clavier sur CCS PCWH et ISIS |
merci infinement pour votre aide ^_^
bon j'utilise ISIS 7.1 SP4 et je crois que votre version et plus récente Salem et Bertrand donc un lien de téléchargement si vous pouvez en MP si se n'est pas autorisé sur la discussion .
sinon une capture écran pour le cablage. pour le programme je veux une un code PIN premièrement avant que l'utilisateur peux commander les LEDs premièrement et ensuite je l'implanterai dans mon programme principal pour la commande du moteur cc.
donc 3 digit comme code PIN ensuite une commande avec les trois touches.
merci encore.
|
Edité par sedelec le 23/05/2012 16:08 |
|
|
Revenir en haut | Permalien | |
salem
Member
Messages : 102 Inscrit(e) le: 09/01/2008
|
Posté le 23/05/2012 17:00 | | RE : problème clavier sur CCS PCWH et ISIS |
capture
|
|
|
Revenir en haut | Permalien | |
salem
Member
Messages : 102 Inscrit(e) le: 09/01/2008
|
Posté le 23/05/2012 17:03 1337785423.JPG (145 Ko) | | RE : problème clavier sur CCS PCWH et ISIS |
essalam
|
|
|
Revenir en haut | Permalien | |
|