Newsgroup: it.hobby.elettronica.digitale
Titolo: Pic 16f876 e seriale

Ciao a tutti,
Volevo chiedervi gentilmente alcuni consigli sulla prog. del pic
16f876. Ho
provato fare un prog. col suddetto pic che gestisce le uscite del pic
dal
PC. In pratica ho realizzato un prog. in MIKROBASIC sul PIC e un prog.
in
V.B. sul PC. comunicanti fra loro in RS232. Il mio intento era quello
di
poter accendere e spegnere i led da PC a mio piacimento.
Sono riuscito nel mio intento, però il grande inghippo dove mi sono
imbattuto è quello che ad ogni carattere ACII che invio da tastiera
sono
costretto ad aggiornare tutte le uscite del PIC. Mi spiego meglio: Per
spegnere il led sul pin 0 della porta A sono costretto ad
evidenziare lo stato anche degli altri pin, in questo modo per gestire
3 led
ho bisogno di 2^3=8 tasti sul PC per avere il corretto funzionamento.
In sostanza io vorrei spegnere o accendere un led senza variare lo
stato
degli altri, in modo che per accendere o spegnere tre led ho bisogno
solo di
tre pulsanti sul PC (realizzati in VB).
Grazie a tutti,
Ciao

Grazie per la risposta mmm.
Ti invio il prog. che ho scritto in mikrobasic per spiegarmi meglio:
program Marcoprogetto
dim tasto as byte
   main:
trisa = 0
Usart_init(2400)
while true
if Usart_Data_Ready = 1 then
tasto = Usart_Read
Usart_Write(tasto)
if tasto = 48 then 'se premo lo zero tutta la porta A
porta = %00000000
end if
if tasto = 49 then 'se premo 1 la porta A.0 accesa
porta = %00000001
end if
if tasto = 50 then
porta = %00000010 'se premo 2 la porta A.1 accesa
end if
if tasto = 51 then 'se premo 3 mi attiva le porta A.2
porta = %00000100
end if
if tasto = 52 then 'se premo 4 mi lascia accesa la A.2 la A.0
porta = %00000101
end if
if tasto = 53 then 'se premo 5 mi lascia accesa la A.2 e la A.1
porta = %00000110
end if
if tasto = 54 then
porta = %00000111  'se premo 6 mi accende A.2 A.1 A.0
end if
if tasto = 55 then
porta = %00000011 'se premo 7 mi accende A.1 A.0
end if
end if
wend
end.
Come avrai certamente notato come ho scritto io il prog. ad ogni
carattere ASCII inviato dalla tastiera, specifico lo stato di tutta la
porta A del PIC. Facendo cosi però sono costretto a realizzare in VB 8
tasti (2^3), per avere tutte le possibili conbinazioni delle uscite. Il
mio intento era appunto quello di accendere un led su di una uscita del
pic, senza variare lo stato delle altre uscite. In questo modo potrei
realizzare 3 tasti in VB sul PC, anzichè 8.
Cosa intendi per mascherare i bit nel prog?
Potresti farmi un esempio di combinazione AND  OR da utilizzare nel mio
caso?
Grazie ancora
CIAO!!!

 ha scritto nel messaggio 


>> imbattuto č quello che ad ogni carattere ACII che invio da tastiera


 
una possibile risposta se esiste il setbit , clearbit te l'hanno passato 
altri
io ti continuo la mia strada
porta=0 corrisponde ai led spenti
ora
porta = porta OR %00000001
accendera' il primo led ( e lascia intoccati gli altri ...
porta = porta OR %00000010
accende il secondo e cosi via
per spegnere selettivamente basta usare qualcosa del tipo
porta = porta AND %11111101
indovina un po' quale led si spegne ?
ancora piu' bello se hai a disposizione un operatore XOR
porta = porta XOR %00000001
inverte il solo primo bit di porta
resta a te integrare nel tuo programma queste cosa


OK ho capito,
grazie a tutti per le risposte ed i preziosi consigli.
Ciao