PIC 16F84 - Questo Sconosciuto - : Help!!..

Oct 27, 2004 1 Replies

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


Un giorno, inconsapevole delle conseguenze, "Gigi" scrisse:

Se non vado errato il tuo errore è che cambi il banco dei registri (banco 1) per settare le direzioni ma non lo riporti al banco 0 quando fai i loop di accensione spegnimento... manca un BCF STATUS,

5 in questo punto:

MOVWF TRISB ; Sono glo 8 led del tempo impostato

aggiungi in questo punto: BCF STATUS, 5

ACCESI MOVLW 016H ; Tutti i led accesi MOVWF PORTA

Inoltre ricordati che l'uscita 4 (piedino 3 dell'IC) di portA è open drain.

Disc space, the final frontier! News 2000 [v 2.06] - http://www.akapulce.net/socket2000

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required