Rogerk radioamatori e cb forum

Elettronica e Radiotecnica => Programmazione microcontrollori => Pic micro => Discussione aperta da: Santo iw9hlk il 25 Luglio 2011, 23:55:07

Titolo: Controllo tastiera 16 tasti
Inserito da: Santo iw9hlk il 25 Luglio 2011, 23:55:07
Ciao a tutti, vi scrivo sotto una routine per il controllo di una tastiera a 16 tasti.

   #define b0 PORTB,0   ;prima definisco gli 8 bit della tastiera
   #define b1 PORTB,1   ;
   #define b2 PORTB,2   ;
   #define b3 PORTB,3   ;
   #define b4 PORTB,4   ;
   #define b5 PORTB,5   ;
   #define b6 PORTB,6
   #define b7 PORTB,7





                bcf      b0           ;azzera i primi 4 bit della porta B
      bcf      b1
      bcf      b2
      bcf      b3   
   
      bsf    b0         ; mette a 1 (positivo) il primo bit della porta B
      
      btfsc   b4                     ; inizia il controllo dei 4 bit finali della porta B
      goto    b4a         ;
      btfsc   b5
      goto   b5a         ;
      btfsc   b6
      goto   b6a
      btfsc   b7
      goto   b7a
      bcf    b0              ;azzera la porta B
      
      
      bsf   b1           ;mette a 1 (positivo) il secondo bit della porta B
      btfsc   b4
      goto   b4b         
      btfsc   b5
      goto   b5b         
      btfsc   b6
      goto   b6b
      btfsc   b7
      goto   b7b
      bcf    b1
      
      
      bsf   b2
      btfsc   b4
      goto   b4c         
      btfsc   b5
      goto   b5c         
      btfsc   b6
      goto   b6c
      btfsc   b7
      goto   b7c
      bcf    b2
      
      
      bsf   b3
      btfsc   b4
      goto   b4d         
      btfsc   b5
      goto   b5d         
      btfsc   b6
      goto   b6d
      btfsc   b7
      goto   b7d
      bcf    b3
      
Mi sono scordato di fare lo schema elettrico della tastiera e del collegamento
      
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: scienziato il 26 Luglio 2011, 02:04:58
Citazione di: Santo il 25 Luglio 2011, 23:55:07
Ciao a tutti, vi scrivo sotto una routine per il controllo di una tastiera a 16 tasti.

   #define b0 PORTB,0   ;prima definisco gli 8 bit della tastiera
   #define b1 PORTB,1   ;
   #define b2 PORTB,2   ;
   #define b3 PORTB,3   ;
   #define b4 PORTB,4   ;
   #define b5 PORTB,5   ;
   #define b6 PORTB,6
   #define b7 PORTB,7





                bcf      b0           ;azzera i primi 4 bit della porta B
      bcf      b1
      bcf      b2
      bcf      b3   
   
      bsf    b0         ; mette a 1 (positivo) il primo bit della porta B
      
      btfsc   b4                     ; inizia il controllo dei 4 bit finali della porta B
      goto    b4a         ;
      btfsc   b5
      goto   b5a         ;
      btfsc   b6
      goto   b6a
      btfsc   b7
      goto   b7a
      bcf    b0              ;azzera la porta B
      
      
      bsf   b1           ;mette a 1 (positivo) il secondo bit della porta B
      btfsc   b4
      goto   b4b         
      btfsc   b5
      goto   b5b         
      btfsc   b6
      goto   b6b
      btfsc   b7
      goto   b7b
      bcf    b1
      
      
      bsf   b2
      btfsc   b4
      goto   b4c         
      btfsc   b5
      goto   b5c         
      btfsc   b6
      goto   b6c
      btfsc   b7
      goto   b7c
      bcf    b2
      
      
      bsf   b3
      btfsc   b4
      goto   b4d         
      btfsc   b5
      goto   b5d         
      btfsc   b6
      goto   b6d
      btfsc   b7
      goto   b7d
      bcf    b3
      
Mi sono scordato di fare lo schema elettrico della tastiera e del collegamento
      
ciao santo ottimo ma funziona anche con la tastiera con numeri da 1 a 9 e asterisco e cancelletto ?? io ho questa ma senza le lettere !
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Lino il 26 Luglio 2011, 06:51:16
Citazione di: scienziato il 26 Luglio 2011, 02:04:58
Citazione di: Santo il 25 Luglio 2011, 23:55:07
Ciao a tutti, vi scrivo sotto una routine per il controllo di una tastiera a 16 tasti.

   #define b0 PORTB,0   ;prima definisco gli 8 bit della tastiera
   #define b1 PORTB,1   ;
   #define b2 PORTB,2   ;
   #define b3 PORTB,3   ;
   #define b4 PORTB,4   ;
   #define b5 PORTB,5   ;
   #define b6 PORTB,6
   #define b7 PORTB,7





                bcf      b0           ;azzera i primi 4 bit della porta B
      bcf      b1
      bcf      b2
      bcf      b3   
   
      bsf    b0         ; mette a 1 (positivo) il primo bit della porta B
      
      btfsc   b4                     ; inizia il controllo dei 4 bit finali della porta B
      goto    b4a         ;
      btfsc   b5
      goto   b5a         ;
      btfsc   b6
      goto   b6a
      btfsc   b7
      goto   b7a
      bcf    b0              ;azzera la porta B
      
      
      bsf   b1           ;mette a 1 (positivo) il secondo bit della porta B
      btfsc   b4
      goto   b4b         
      btfsc   b5
      goto   b5b         
      btfsc   b6
      goto   b6b
      btfsc   b7
      goto   b7b
      bcf    b1
      
      
      bsf   b2
      btfsc   b4
      goto   b4c         
      btfsc   b5
      goto   b5c         
      btfsc   b6
      goto   b6c
      btfsc   b7
      goto   b7c
      bcf    b2
      
      
      bsf   b3
      btfsc   b4
      goto   b4d         
      btfsc   b5
      goto   b5d         
      btfsc   b6
      goto   b6d
      btfsc   b7
      goto   b7d
      bcf    b3
      
Mi sono scordato di fare lo schema elettrico della tastiera e del collegamento
      
ciao santo ottimo ma funziona anche con la tastiera con numeri da 1 a 9 e asterisco e cancelletto ?? io ho questa ma senza le lettere !


Funziona ugualmente anche con la tastiera 4x3; volendo puoi eliminare le righe di controllo del PORTB,7.
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Santo iw9hlk il 26 Luglio 2011, 22:16:25
Esempio nel mio caso:
(http://s1.postimage.org/1fds0wbic/P2010032.jpg) (http://postimage.org/image/1fds0wbic/)
ora cerco di fare lo schema...
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Santo iw9hlk il 27 Luglio 2011, 00:18:50
Ecco fatto, se non si capisce domandate...
(http://s1.postimage.org/1hlpo06ro/tasti.jpg) (http://postimage.org/image/1hlpo06ro/)
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Santo iw9hlk il 24 Dicembre 2011, 18:47:28
Ciao a tutti, in questo sistema di tastiera ho riscontrato che a 4Mhz funziona bene ma a 20Mhz non riesce a leggere il segnale della porta che va in positivo, cioè la porta che commuta il positivo è così veloce che quella che dovrebbe leggere il cambiamento di stato da 0 a 1 (5volt) non percepisce i 5volt. Infatti se prendo un ponticello e metto a positivo la porta del controllo funziona ma se viene gestita da un'altra porta del pic no, anche se ho controllato che con il tester c'è una variazione di volt nella porta ma vuol dire che non basta.
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Lino il 25 Dicembre 2011, 07:55:42
Citazione di: Santo il 24 Dicembre 2011, 18:47:28
Ciao a tutti, in questo sistema di tastiera ho riscontrato che a 4Mhz funziona bene ma a 20Mhz non riesce a leggere il segnale della porta che va in positivo, cioè la porta che commuta il positivo è così veloce che quella che dovrebbe leggere il cambiamento di stato da 0 a 1 (5volt) non percepisce i 5volt. Infatti se prendo un ponticello e metto a positivo la porta del controllo funziona ma se viene gestita da un'altra porta del pic no, anche se ho controllato che con il tester c'è una variazione di volt nella porta ma vuol dire che non basta.


Ciao Santo e Buon Natale.

Potrebbe essere un problema di tempistica, cerco di spiegarmi.

Considerato che la porta viene "alimentata" tramite un resistore serie, comunque ci vorrà, anche se minimo, un certo tempo t per raggiungere il livello "alto" che dovresti poi leggere.
Ti suggerisco di inserire un ritardo di alcuni cicli tra l'istruzione per settare la riga e la routine di lettura delle colonne; non mi sembra che ci debbano essere altre cause che ti creano il problema.

Ciao, Lino
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Santo iw9hlk il 25 Dicembre 2011, 08:22:39
Buon Natale a Te e a Tutti gli Utenti, si ho provato a ritardare ma non va, ho messo così tanto ritardi che non mi funzionava più il display, poi mi è venuta una idea, cioè che se invertivo la polarità essendo che non doveva aspettare il fronte di salita ma bensi azzerarlo poteva funzionare... fortunatamente la mia teoria ha funzionato, ho messo le porte a positivo (stato logico 1) poi ne mettevo uno a negativo e qulle del controllo messe con una resistenza da 10k a positivo, così quando promo il pulsante della tastiera diventa negativo. Non so se sono stato chiaro, ma funziona  :birra:
Titolo: Re: Controllo tastiera 16 tasti
Inserito da: Lino il 25 Dicembre 2011, 09:35:28
Tutto chiaro  :up:
EhPortal 1.39.5 © 2024, WebDev