Pagina 1 di 6
Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 11:44
da cassvs
Salve ragazzi! innanzitutto grazie per il tempo che mi dedicherete.
Allora: io devo programmare un PIC 16f84 in basic... devo realizzare questo:

Ovvero una pulsantiera per quiz, solo che al posto di 4 a me servono 5 pulsanti con altrettanti 5 led e serve anche un buzzer che mi emette un suono udibile alla pressione di uno dei pulsanti... inoltre vorrei che si resettasse con la pressione di un pulsante di reset. questo è il listato relativo allo schema di sopra.

grazie mille a todos!
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 11:57
da fairyvilje
http://www.google.com/url?sa=t&rct=j&q= ... tQ&cad=rjaSecondo le specifiche puoi usare le porte siglate con a. Vanno mappate con l'istruzione credo TRISA=%xxxx
e va aggiunto un altro blocco if end if. Se riscrivi il codice in formato modificabile posso anche correggertelo
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 11:59
da cassvs
Eccotelo e grazie mille!
Codice: Seleziona tutto
program quiz
TRISB=%00001111
portb=0
while true
if portb.0=1 then
portb.4=1
break
end if
if portb.1=1 then
portb.5=1
break
end if
if portb.2=1 then
portb.6=1
break
end if
if portb.3=1 then
portb.7=1
break
end if
wend
while true
wend
end.
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:08
da cassvs
Avrei anche un ulteriore problemino... voglio testare il tutto con il software Multisim 11... il problema è che non ha l'oscillatore da 4Mhz... come devo ovviare?
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:10
da fairyvilje
Codice: Seleziona tutto
program quiz
TRISA=%00001
TRISB=%00001111
porta=0
portb=0
while true
if portb.0=1 then
portb.4=1
break
end if
if portb.1=1 then
portb.5=1
break
end if
if portb.2=1 then
portb.6=1
break
end if
if portb.3=1 then
portb.7=1
break
end if
if porta.0=1 then
porta.1=1
break
end if
wend
while true
wend
end.
Ed ora modifichi lo schema aggiungendo lo spezzone che vedi sulle altre coppie di porte a porta.0 e porta.1.
Ad ogni modo non capisco l'utilità i usare il PIC per una cosa così :)
PS. Corretto
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:11
da cassvs
E come potrei realizzarlo in un modo più semplice?
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:17
da fairyvilje
Senza PIC... a meno che non sia un progetto per scuola. In fondo sono semplici interuttori che pilotano led :) un microprocessore è inutile.
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:21
da cassvs
beh io ho provato a farlo anche cosi...
http://www.electroyou.it/phpBB2/viewtopic.php?t=16714&p=310562#p310562 ma ho avuto molti probelmi ed ancora non ho trovato una soluzione... quindi siccome lo devo consegnare al prof appunto entro martedi ho deciso di farlo col microcontrollore...
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:23
da fairyvilje
Per il buzzer potresti abilitare con un transistor un ne555 visto che supporta carichi maggiori di 25mA. Magari qualcuno più esperto in elettronica di me può farti lo schema senza errori in quel caso il programma andrebbe modificato così, usando porta.2
Codice: Seleziona tutto
program quiz
TRISA=%00001
TRISB=%00001111
porta=0
portb=0
while true
if portb.0=1 then
portb.4=1
porta.2=1
break
end if
if portb.1=1 then
portb.5=1
porta.2=1
break
end if
if portb.2=1 then
portb.6=1
porta.2=1
break
end if
if portb.3=1 then
portb.7=1
porta.2=1
break
end if
if porta.0=1 then
porta.1=1
porta.2=1
break
end if
wend
while true
wend
end.
Re: Programmazione PIC 16F84 per pulsantiera
Inviato: 13 giu 2012, 12:31
da cassvs
fairyvilje ha scritto: Magari qualcuno più esperto in elettronica di me può farti lo schema senza errori in quel caso il programma andrebbe modificato così, usando porta.2
beh innanzitutto grazie per l'impegno donatomi fino ad ora... io potrei anche fare lo schema ma a me serve con multisim in quanto voglio anche testarlo... il problema è, come accennavo prima, che multisim non ha gli oscillatori da 4Mhz...