Salve a tutti, Ho un problema con il seguente codice:
### Inizializzazione.h ### BCF STATUS,7 ;disable all interrupts BSF STATUS,5 ;Switch to Bank 1 MOVLW b'00000001' ;Set the Port A pins MOVWF TRISA ;to output (except RA0). BCF STATUS,5 ;revert to Bank 0
### Main.asm ### #INCLUDE "P16F870.INC"
;Inizializzazione ORG 0x00 #INCLUDE "Inizializzazione.h" GOTO RESTART
ACCENDI_ROSSO BSF PORTA,1 BCF PORTA,2 GOTO RESTART
ACCENDI_GIALLO BSF PORTA,2 BCF PORTA,1 GOTO RESTART
RESTART BTFSS PORTA,0 ;se RA0 =E8 UP -> accendi ROSSO senn=F2 GIALLO GOTO ACCENDI_GIALLO GOTO ACCENDI_ROSSO END
Questo programma dovrebbe permettermi di cambiare il led acceso (rosso o giallo) a seconda della posizione dell'interruttore. Utilizzo MPLAB (ad oggi l'ultima versione) con cui ho creato un progetto in cui ho incluso i due file citati. Il problema =E8 che quando con un interruttore sposto la tensione da +5 a 0 V (e poi viceversa) resta accesa solo la luce gialla (su RA2) e non si accende mai quella rossa (su RA1). Il PIC =E8 collegato a dovere, ho provato con altre applicazioni pi=F9 semplici (come lampeggio led ed accensione led con pulsante) e tutto funziona.
Lista Pin collegati:
1- +5 V fisso (!MCRL) 2- uscita interruttore collegato a massa e a +5V (RA0) 3- uscita per il led rosso (RA1) 4- uscita per il led giallo (RA2) 5- NC 6- NC 7- NC 8- GND (VSS) 9- 3Kohm + 100pf (rispettivamente a +5 e a gnd, come vuole il datsheet DS30569B a pagina 90) 10-18- NC 19- GND (VSS) 20- +5V (VCC) 21-28- NCRingrazio anticipatamente tutti coloro che parteciperanno alla discussione Saluti Rccardo