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