- Messaggi: 16
- Ringraziamenti ricevuti 0
Problemi con la porta A
12 Anni 2 Mesi fa - 12 Anni 2 Mesi fa #1
da plastikino
Problemi con la porta A è stato creato da plastikino
Salve sul mio circuito ho impostato la porta a come ingresso di una tastiera solo che non riesco a leggere il segnale che proviene dai tasti.
questo codice codice dovrebbe leggere lo stato dei tasti e accendere dei led sulla porta d
movwf salva ;salvo il contenuto del registro W
movff LATA,pulsanti
rrncf pulsanti
; movlw 0xf
; andwf pulsanti
; movlw 4
; CPFSGT contatore
; movlw 8
bsf LATD,0
movff pulsanti,LATD
;su questo invece inizializzo la prota a "copiato dal data sheet"
CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0x1e ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<1:4> as inputs
questo codice codice dovrebbe leggere lo stato dei tasti e accendere dei led sulla porta d
movwf salva ;salvo il contenuto del registro W
movff LATA,pulsanti
rrncf pulsanti
; movlw 0xf
; andwf pulsanti
; movlw 4
; CPFSGT contatore
; movlw 8
bsf LATD,0
movff pulsanti,LATD
;su questo invece inizializzo la prota a "copiato dal data sheet"
CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0x1e ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<1:4> as inputs
Ultima Modifica 12 Anni 2 Mesi fa da plastikino.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- plastikino
- Autore della discussione
- New Member
Riduci
Di più
12 Anni 2 Mesi fa - 12 Anni 2 Mesi fa #2
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Re: Problemi con la porta A
Ciao, non conosco l'assembler e neanche il tipo di microcontrollore che stai usando per le tue prove ma provo a dire una scemenza: hai impostato gli ingressi come digitali e non come analogici?
EDIT: scusami, era proprio una scemenza: ho visto adesso nel codice assembler l'istruzione che dovrebbe impostarli come digitali...
EDIT: scusami, era proprio una scemenza: ho visto adesso nel codice assembler l'istruzione che dovrebbe impostarli come digitali...
Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 12 Anni 2 Mesi fa da Pinna.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
12 Anni 2 Mesi fa #3
da plastikino
Risposta da plastikino al topic Re: Problemi con la porta A
haha capita..
il pic che utilizzo e un 18f4550 lo stesso del Freedom II.
il pic che utilizzo e un 18f4550 lo stesso del Freedom II.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- plastikino
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 16
- Ringraziamenti ricevuti 0
12 Anni 2 Mesi fa #4
da nadalp00
Risposta da nadalp00 al topic Re: Problemi con la porta A
Ciao, la mia domanda è: riesci a compilare lo stesso codice in C?
perchè altrimenti ti basterebbe o testare un i sigoli bit, ad esempio:
if (PORTAbits.RA0==0)
{
........
}
oppure controllare tutti gli ingressi assieme ed agire di conseguenza, ad esempio:
//dichiari una variabile a 8 bit
usigned char Maschera;
//ipotiziamo che ti interessa RA0 RA1 RA2 RA3
//allora definisci
Maschera = 0b00001111;
//ora non fai altro che fare un AND tra la tua maschera e gli ingressi e scopri cosi il tasto premuto
Maschera = Maschera & PORTA;
e il gioco è fatto....
se invece ti serve in ASM mi dispiace è da un pochino che non ci lavoro e non riesco ad aiutarti.
buon lavoro
perchè altrimenti ti basterebbe o testare un i sigoli bit, ad esempio:
if (PORTAbits.RA0==0)
{
........
}
oppure controllare tutti gli ingressi assieme ed agire di conseguenza, ad esempio:
//dichiari una variabile a 8 bit
usigned char Maschera;
//ipotiziamo che ti interessa RA0 RA1 RA2 RA3
//allora definisci
Maschera = 0b00001111;
//ora non fai altro che fare un AND tra la tua maschera e gli ingressi e scopri cosi il tasto premuto
Maschera = Maschera & PORTA;
e il gioco è fatto....
se invece ti serve in ASM mi dispiace è da un pochino che non ci lavoro e non riesco ad aiutarti.
buon lavoro
Si prega Accedi o Crea un account a partecipare alla conversazione.
- nadalp00
- New Member
Riduci
Di più
- Messaggi: 5
- Ringraziamenti ricevuti 0
12 Anni 2 Mesi fa #5
da plastikino
Risposta da plastikino al topic Re: Problemi con la porta A
grazie nadalp00
il tuo messaggio mi ha aperto la mente, l'errore che mi sfuggiva proprio era leggevo dal registro LATA invece per la lettura si usa il registro PORTA piccoli errori che fanno perere ore per cercare di capire.
siccome leggo da A1:A4 bisogna spostare i ìl byte verso destra con la successiva operazione
rrncf pulsanti
la maschera che mi suggerisci la avevo già implementata solo che era disabilitata
; movlw 0xf
; andwf pulsanti
il tuo messaggio mi ha aperto la mente, l'errore che mi sfuggiva proprio era leggevo dal registro LATA invece per la lettura si usa il registro PORTA piccoli errori che fanno perere ore per cercare di capire.
siccome leggo da A1:A4 bisogna spostare i ìl byte verso destra con la successiva operazione
rrncf pulsanti
la maschera che mi suggerisci la avevo già implementata solo che era disabilitata
; movlw 0xf
; andwf pulsanti
Si prega Accedi o Crea un account a partecipare alla conversazione.
- plastikino
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 16
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.