;Realice un programa en lenguaje ensamblador que haga la siguiente función:
;Lee de los microswitches SW3..SW1, un número n con valores entre 0…7 (en decimal).
;Activa led Bn, los demás apagados.
;Si el usuario modifica el valor en los microswitches, automáticamente debe también 
;modificarse los leds activados.


	processor 18F2550
	include	  <p18F2550.inc>
	include	 "KEYBOLT2.inc"	;ARCHIVO AUXILIAR CONTIENE MACRO Y DEFINE

J	equ	H'80'	  
K	equ	H'81'
L	equ 	H'82'
CLAVE100 equ H'83'
	 
		org 	0x800	;MODIFIQUE A ORG=0 PARA SIMULAR EN MPLAB
		PUERTOS
INICIO: BOLTSWITCH
		CLRF	PORTB
		BCF		CLAVE100,3			;BIT PROVENIENTE DE SW3=0
		INCF	CLAVE100			;PREVINIENDO UN VALOR =0
		BSF		LED0				;PRENDE LED0
MALLA2:	DECFSZ	CLAVE100
		GOTO	UNO
		GOTO	DOS		
UNO:	RLNCF	PORTB
		GOTO	MALLA2
DOS:	CALL	retrobolt			;retraso para observar el bit encendido
		GOTO	INICIO				;repite programa
			
		


;SUBRUTINA DE RETRASO APROX DE 1 SEGUNDO.SE PUEDE MODIFICAR A (16.4 x L) MILISEGUNDOS

retrobolt:	movlw	D'61'	;valor de L. Modifique para cambiar el valor del retraso.
		movwf	L
lloop		movlw	D'255'	; w := 200 decimal
		movwf	J	; J := w
jloop:		movwf	K	; K := w
kloop:		decfsz	K,f	; K = K-1, skip next if zero
		goto 	kloop
		decfsz	J,f	; J = J-1, skip next if zero
		goto	jloop
		decfsz	L,f
		goto	lloop
		return


		end	

