Accensioni determinati led

di il
1 risposte

Accensioni determinati led


; ********************************************************************************
; sorgente     
; PROGRAMMA DI 	
;              
; MICROCONTROLLORE PIC 16F877A
; A.S. 2013-2014
; IST. SUP. " S. D'ARZO "
; LINGUAGGIO DI PROGRAMMAZIONE : ASSEMBLER
; NOME SORGENTE : prog_vac.asm
; **********************************************************************ROMEI*****
;DEFINIZIONE DEI PIN DEL MICROCONTROLLORE
;
; INGRESSI
; RB0 : pulsante P1  
; RB1 : pulsante P2  
; RB2 : pulsante P3  
; USCITE
; RB5 : uscita led DL1  
; RB6 : uscita led DL2  
; RB7 : uscita led DL3  
;
; N.B. TRA PARENTESI SONO INDICATI I PIN DEL PACKAGING DIP DEL uC
;
;
		#INCLUDE	"p16F877A.inc"
		LIST	P=16F877A,	F=INHX8M
__CONFIG 0X3F3A
NOMEVAR	EQU	20H	; DEFINIRE VARIABILE E LOCAZIONE DI MEMORIA (NOME MAX 6 CARATTERI)
;
;

		ORG	00			; INDIRIZZO INIZIO PROGRAMMA
 		GOTO	INIZIO	; SALTA SUBROUTINE INTERRUPT
			
		ORG	04					 					; INDIRIZZO SUBROUTINE INTERRUPT
		;
		; 
		;	
		RETFIE				; RITORNA AL PUNTO IN CUI L'INTERRUPT E' STATO ATTIVATO
		
INIZIO:	; PROGRAMMA PRINCIPALE, VIENE ESEGUITO DOPO UN RESET O BLACK OUT
;   DA QUI IN AVANTI VA SCRITTO IL PROGRAMMA
	

	BSF	STATUS,5      ;passo al banco 1
	BCF	STATUS,6;	
	MOVLW	0x1F     ;definisco I/O sulla PORTB
	MOVWF	TRISB;
;
	

	BCF	STATUS,5      ; passo al banco 0
	BCF	PORTB,5       ; azzero le uscite
	BCF	PORTB,6;
	BCF	PORTB,7;
;




MAIN:
	
	BTFSC	PORTB,0     ;controllo se è premuto P1
	GOTO	Pulsante1;
	BTFSC	PORTB,1     ;controllo se è premuto P2
	GOTO	Pulsante2;
	BTFSC	PORTB,2      ;controllo se è premuto P3
	GOTO	Pulsante3;
	GOTO	MAIN;
	




Pulsante1: ;subroutine che gestisce il pulsante 1
	
	BTFSC	PORTB,2      ; è premuto anche P3
	GOTO	Pulsanti13   ;
	BCF	PORTB,5          ;spengo il DL1
	BSF	PORTB,6          ;accendo il DL2
	BCF	PORTB,7          ;spengo il DL3
	GOTO MAIN;
			


Pulsante2: ;subroutine che gestisce il pulsante 2
	
	BSF	PORTB,5      ;accendo il DL1
	BCF	PORTB,6		 ;spengo il DL2
	BSF	PORTB,7		 ;accendo il DL3
	GOTO MAIN;	



Pulsante3: ;subroutine che gestisce il pulsante 3
	
	BTFSC	PORTB,0      ; è premuto anche P3
	GOTO	Pulsanti13   ;
	BSF	PORTB,5          ;accendo il DL1
	BSF	PORTB,6          ;accendo il DL2
	BSF	PORTB,7          ;accendo il DL3
	GOTO MAIN;



Pulsanti13:              ;subroutine che gestisce il pulsante 1+3
	
	BCF	PORTB,5          ;accendo il DL1
	BCF	PORTB,6          ;accendo il DL2
	BCF	PORTB,7          ;accendo il DL3
	GOTO MAIN;
	
		END	             ;ISTRUZIONE CHE INDICA AL COMPILATORE CHE E' FINITO 
Consegna:

1- se premi P1 si accende il led 2
2- se premi P2 si accendono i led 1 e 3
3- se premi P3 si accendono i led 1, 2 e 3

se premo P1+P3 si spengono tutti i led


Mi dite dove sbaglio perfavore? io proprio non riesco a capire......

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte