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

Reply to
Gigi
Loading thread data ...

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
Reply to
Due di Picche

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.