Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC16F84: usare RB0, con RB1..RB7 usati per un display 7seg.

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] PIC16F84: usare RB0, con RB1..RB7 usati per un display 7seg.

Messaggioda Foto Utentefranx » 5 ago 2013, 8:34

PIC16F84A

I pin RB1...RB7 li ho impegnati per un display LED sette segmenti.

Il pin RB0/INT lo vorrei usare come pin di interrupt esterno.

Non c'è verso di far funzionare l'interrupt (ho ovviamente configurato INTCON ecc.)

Come ho capito, quando si dà il classico PORTB per accendere i segmenti, ne viene coinvolto pure il pin RB0 e quindi o scaturisce un interrupt (se imposto l'edge a 1) oppure viene ignorato (se imposto l'edge su 0)

C'è una soluzione al problema?

In effetti su google, trovo tutti che collegano il sette-segmenti a RB0-RB6, dando per scontato che RB0 non si possa usare. E' così?

Uso (devo usare :-) mikroBasic

Grazie
Avatar utente
Foto Utentefranx
465 3 10
Frequentatore
Frequentatore
 
Messaggi: 199
Iscritto il: 28 feb 2010, 17:43

1
voti

[2] Re: PIC16F84: usare RB0, con RB1..RB7 usati per un display 7

Messaggioda Foto Utentec1b8 » 5 ago 2013, 8:48

Il problema credo sia che scrivendo direttamente sulla porta PORTB coinvolgi anche lo stato di RB0, cambiandolo, e quindi scatta l'interrupt.
Ci sono 2 possibili soluzioni, dopo essersi assicurati che RB0 sia impostato come input:
1) Non scrivere direttamente sulla PORTB ma impostare a '0' o '1' i singoli bit da RB1 a RB7
2) Quando vai a scrivere sulla PORTB procedi in questo modo:
- fai una AND tra il valore da scriver in PORTB e il valore 0xFE (in modo da azzerare solo quello che andrebbe scritto in RB0)
- salvi il valore ottenuto
- Leggi la PORTB
- fai un AND con il valore 0x01 (per azzerare tutto tranne RB0)
- fai un OR con il valore salvato precedentemente
- scrivi in PORTB
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[3] Re: PIC16F84: usare RB0, con RB1..RB7 usati per un display 7

Messaggioda Foto Utentefranx » 9 ago 2013, 9:17

c1b8 ha scritto:Il problema credo sia che scrivendo direttamente sulla porta PORTB coinvolgi anche lo stato di RB0, cambiandolo, e quindi scatta l'interrupt.


Ti ringrazio. La soluzione di accendere un segmento per volta, secondo me è preferibile rispetto a quella di scrivere sull'intera porta: per esempio il display LED potrebbe essere pilotato per una parte da un PORT e per un'altra parte da un altro PORT, come il caso del 16F688
Avatar utente
Foto Utentefranx
465 3 10
Frequentatore
Frequentatore
 
Messaggi: 199
Iscritto il: 28 feb 2010, 17:43


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti