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- NC
Ringrazio anticipatamente tutti coloro che parteciperanno alla discussione Saluti Rccardo