;*******************************************************************
;	SISTEMA PER L'ACCENSIONE A ROTAZIONE DI 8 LED
;	di Walter Giocoso
;	http://digilander.iol.it/wgiocoso
;
;	compilato con MPASM
;	
;	L'accensione di un led avviene tutte le volte che viene premuto 
;	e rilasciato il tasto
;	Ogni pressione del tasto spegne il led precedente e accende 
;	il successivo
;*******************************************************************


	PROCESSOR 16F84
	__CONFIG  3FF1H
	RADIX 	DEC
	INCLUDE "P16F84.INC"
	ERRORLEVEL -302

	ORG	0CH		;prima locazione registri per uso generico
			
				;definizione delle porte in cui sono connessi i led
				;e definizione porta tasto	
LED_B1	EQU 	0		;RB0			
LED_B2	EQU 	1		;RB1
LED_B3	EQU 	2		;RB2
LED_B4	EQU 	3		;RB3
LED_B5	EQU 	4		;RB4
LED_B6	EQU 	5		;RB5
LED_B7	EQU 	6		;RB6
LED_B8	EQU 	7		;RB7

TASTO_A	EQU 	0		;RA0



	ORG	00H		;area programma del PIC
				
	BSF	STATUS, RP0	;seleziona il banco 1 per definire I/O
	MOVLW	00000000B	;definisci porte B in uscita
	MOVWF	TRISB		
	MOVLW	00000001B	;definisci porta RA0 in ingresso
	MOVWF	TRISA

	BCF	STATUS, RP0	;seleziona il banco 0 per definire H/L
	



; *******************************************************

MAIN
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B1
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B2
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B3
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B4
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B5
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B6
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B7
	CALL	LEGGI		;leggi tasto
	CLRF	PORTB		;spegni tutti i led
	BSF	PORTB,	LED_B8
	GOTO	MAIN		;ripeti indefinitivamente

; *******************************************************






LEGGI				;leggi tasto
	BTFSS	PORTA,	TASTO_A	;attendi pressione del tasto
	GOTO	LEGGI
ANTIRIMBALZO			;prosegui solo se rilasciato
	BTFSC	PORTA,	TASTO_A
	GOTO	ANTIRIMBALZO
	RETURN			;end leggi
;_______________________________________________________________


	
	END	