Newsgroup: it.hobby.elettronica.digitale
Titolo: PIC 16F84 - Questo Sconosciuto -   :   Help!!..

Salve ragazzi .. ho un problema.. , per me un vero dilemma..
Ok.. son attratto tantissimo dalla programmazione dei pic 16F84 , continuo a 
bruciarne (il che non è facile..)  ma non mi arrendo .. devo far girare un 
mio programmino su quel chip e ci riusciro'!..
Ho scaricato degli esempi di San. Tittopower ( e colgo l'occasione per 
ringraziarlo )  che funzionano a meraviglia , ma quando provo a far girare 
il mio programma, mi succede uan cosa strana:
Il programma è semplicissimo , deve far lampeggiare tre led posti sui pin 
R1,R2,R4 e tenere sempre spenti i led posti sui pin R0 e R3
mi aspetterei quindi, durante l'esecuzione del programma , di trovare 
continuamente a potenziale 0 i pin  R0 e R3, mentre vedere oscillare i 
potenziali di R1,R2,R4 da 0 a +5V  (cosa che succede con il programma 
compilato di Tittopower )
ED INVECE.........
mi trovo che il mio pic gestisce le uscite come fossero negate.. R0 ed R3 
sono costantemente a +5V
R1,R2,R3 sono invece a Massa, oppure come fossero disconnessi ..
In pratica per far lampeggiare i miei tre led devo collefare ai tre pin in 
questione i relativi led+resistenza invece che a massa al +5V
Da quello che ho capito sembra che il pic si comporti come fosse un 
interrutore,  tra i pin e la massa, quando dico di accendere i led lui 
collega i pin a massa e quando dico di spegnerli  è comese li isolasse come 
se staccase quei pin dal circuito, non sono a massa, sono proprio 
disconnessi ..
Ragazzi ma che succede??
allego il listato del programma
Grazie
Gigi
 LIST P=16F84
 list r=hex
 CONSTANT PORTA=05H,PORTB=06H,TRISA=85H,TRISB=86H,STATUS=03H
 CONSTANT EEDATA=08H,EEADR=09H,EECON1=88H,EECON2=89H
 CONSTANT TMR0=01H,INTCON=0BH,OPZION=81H
 CONSTANT RIT0=0CH,RIT1=0DH,USER=0EH,ANTIR=0FH,QVOLTE=10H
 CONSTANT REI=11H,TIMES=12H
 CLRF PORTA  ; Azzeramento iniziale registri
 CLRF PORTB
 BSF STATUS,5  ; Vai al Bamk 1 per le direzioni e altro
ANCORA MOVLW 00H  ; Porta 0,1,2 In Input; Porta 3 Output
 MOVWF TRISA   ; (0000 0111 In binario) 1=In,0=0ut
 MOVLW 0AAH   ; Porta B Tutta come Output
 MOVWF TRISB  ; Sono glo 8 led del tempo impostato
ACCESI MOVLW 016H  ; Tutti i led accesi
 MOVWF PORTA
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 MOVLW 000H  ; Tutti i led spenti
 MOVWF PORTA
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
 CALL DELAY   ; Attesa Stabilizzazione di tenzione
ACCESI1 GOTO ACCESI
 ;*** SUBROUTINE DELAY **
DELAY MOVLW 0FFH  ; Due registri pieni
 MOVWF RIT1  ; Che sono 0d & 0E
LOOPE MOVLW 0FFH
 MOVWF RIT0
REDEC DECFSZ RIT0,1
 GOTO REDEC
 DECFSZ RIT1,1
 GOTO LOOPE
 RETURN
 END

  MOVWF PORTA
Non direi, cosi' va a 1 solo il pin RA4 (016H=00010000B), che pero' essendo
open collector non puo' in ogni caso fornire corrente verso la massa, gli
altri pin (da RA0 a RA3) invece restano a 0.
ciao
Claudio F

Saresti cosě gentile da correggere il mio programma .. ?..
Non voglio fare altro che impostare la porta B Come Output ed settare i pin 
della porta B allo stato logico Alto e successivamente ad uno stato logico 
basso , in un loop infinito
Grazie
Gigi
LIST P=16F84
list r=hex
CONSTANT PORTA=05H,PORTB=06H,TRISA=85H,TRISB=86H,STATUS=03H
CONSTANT EEDATA=08H,EEADR=09H,EECON1=88H,EECON2=89H
CONSTANT TMR0=01H,INTCON=0BH,OPZION=81H
CONSTANT RIT0=0CH,RIT1=0DH,USER=0EH,ANTIR=0FH,QVOLTE=10H
CONSTANT REI=11H,TIMES=12H
         CLRF     PORTA         ; Azzeramento iniziale registri
         CLRF     PORTB
         BSF STATUS,5           ; Vai al Banco 1 per le direzioni e altro
ANCORA   MOVLW 00H              ; Uscite 0,1,2 In Input; Porta 3 Output
         MOVWF TRISA            ; (0000 0000 In binario) 1=In,0=0ut
         MOVLW 0AAH             ; Porta B Tutta come Output
         MOVWF TRISB            ; Sono glo 8 led del tempo impostato
ACCESI   MOVLW 016H             ; (10110B)  RA0 0v,RA1 +5v,RA2 +5v,RA3 
+0v,RA4 +5v
         MOVWF PORTA
         CALL DELAY             ; Attesa Stabilizzazione di tenzione
         MOVLW 000H             ; Tutti i led spenti
         MOVWF PORTA
         CALL DELAY             ; Attesa Stabilizzazione di tenzione


 Saresti cosě gentile da correggere il mio programma .. ?..
Bč, mi pare che Claudio F sia stato estremamente disponibile. Hai tutte le
informazioni per proseguire da solo, su via......
SB

 basso , in un loop infinito
Dovrebbe andare (l'ho modificato in 2 minuti e non l'ho provato)
 LIST P=16F84
 list r=hex
 CONSTANT PORTA=05H,PORTB=06H,TRISA=85H,TRISB=86H,STATUS=03H
 CONSTANT EEDATA=08H,EEADR=09H,EECON1=88H,EECON2=89H
 CONSTANT TMR0=01H,INTCON=0BH,OPZION=81H
 CONSTANT RIT0=0CH,RIT1=0DH,USER=0EH,ANTIR=0FH,QVOLTE=10H
 CONSTANT REI=11H,TIMES=12H
          CLRF     PORTB         ; Azzeramento iniziale registri
          BCF STATUS,6          ; Vai al Banco 1 per le direzioni e altro
          BSF STATUS,5          ; Vai al Banco 1 per le direzioni e altro
          CLRF     TRISB          ; Porta B Tutta come Output
          BCF STATUS,5          ; Vai al Banco 0
ACCESI
          MOVLW 016H           ; (10110B)  RB0 0v,RB1 +5v,RB2 +5v,RB3
+0v,RB4 +5v
          MOVWF PORTB
          CALL DELAY             ; Attesa Stabilizzazione di tensione
          CLRF PORTB
          CALL DELAY             ; Attesa Stabilizzazione di tensione
          GOTO ACCESI
 ;*** SUBROUTINE DELAY **
 DELAY
         MOVLW 0FFH  ; Due registri pieni
         MOVWF RIT1  ; Che sono 0d & 0E
         MOVWF RIT0
 LOOPE
         CLRWDT
         DECFSZ RIT0,1
         NOP
         NOP
         NOP
         GOTO LOOPE


Grazie assai
dopo lo provo
ciao
"Robby" <roberto...@LEVAMI2ainfo.it> ha scritto nel messaggio 
news:clqu94$780$1...@fata.cs.interbusiness.it...


 Hai tutte le informazioni per proseguire da solo, su via......
Eh mica tanto... dopo aver parlato di confusione sulla numerazione
esadecimale ho scritto che 016H=00010000B !!! se questo non e' confondere le
idee ;))))
ovviamente 016H=00010110B ! :)