; CONFIGURA UNA TABLA DE 16 DATOS CON LA INSTRUCCION retlw
; LEE UNO A UNO CADA ELEMENTO DE LA TABLA Y
; LO MUESTRA EN LOS LEDS DEL PUERTO B, CON RETRASOS DE 1 SEGUNDO
; PARA HACER LA SIMULACION EN MPLAB, ORG=0
; PARA CORRER EL PROGRAMA EN BOLT, ORG=800

	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
		movlw H'8'			;MODIFIQUE A H'0' PARA SIMULACION EN MPLAB
		movwf PCLATH 			;PARTE ALTA DEL CONTADOR DEL PROGRAMA
		clrf CLAVE100
UNO		movf CLAVE100,w			;PREPARA VALOR DE W PARA DIRECCIONAR LA TABLA
		call TABLA
		movwf PORTB			;REGRESA CON ELEMENTO DE LA TABLA
		call retrobolt
  		incf CLAVE100,f			;INCREMENTA 2 UNIDADES PARA DIRECCIONAR EL SIGUIENTE ELEMENTO
		incf CLAVE100,f
		movlw D'32'			;SON 32 BYTES EN LA TABLA DE DATOS
		subwf CLAVE100,w
		btfss STATUS,Z 
		goto UNO
		sleep

		org 0x860			;MODIFIQUE A ORG 0X60 PARA SIMULACION EN MPLAB
TABLA		addwf PCL,f
		retlw H'0'			;CADA INSTRUCCION OCUPA 2 BYTES
		retlw H'1'
		retlw H'2'
		retlw H'3'
		retlw H'4'
		retlw H'5'
		retlw H'6'
		retlw H'7'
		retlw H'8'
		retlw H'9'
		retlw H'A'
		retlw H'B'
		retlw H'C'
		retlw H'D'
		retlw H'E'
		retlw H'F' 


;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 := 255 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
	

