; ARCHIVO CONTADORBCD.ASM
; CUENTA EN LOS LEDS DEL 1 AL 20 EN BCD
; CODIGO FUENTE PARA EL MICROCONTROLADOR EDUPIC/16F628 

; RETRASO DE 0.5 SEGUNDO.
; VERSION PARA OSCILADOR CRISTAL 4 MHZ

; CPU configuration
; 	(It's a 16F84, XT OSCILADOR
; 	watchdog timer off, power-up timer on)

	processor 16f628
	include	  <p16f628.inc>
	__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF 


J	equ	H'20'	  
K	equ	H'21'	 


			org	0	  
			movlw           0x7
			movwf           CMCON        
			movlw           0x0
			movwf           VRCON

inicio:		movlw	B'00000000'
			tris	PORTB		; bits del puerto B son salidas
			movlw	B'00000000'	; w := 00000000 
			movwf	PORTB		; inicializa port B =0
increment:	incf	PORTB,F
			call	retro
			call	retro
			call	retro
			call	retro
			movf	PORTB,w
			xorlw	B'00001001'
			btfss	STATUS,Z
			goto	noesnueve			
			goto 	esnueve
esnueve:	movf	PORTB,w
			addlw	D'6'
			movwf	PORTB
			goto 	increment
noesnueve:	movf	PORTB,w
			xorlw	B'00011001'
			btfss	STATUS,Z
			goto	noesdiezy
			goto	esdiezy
noesdiezy:	goto 	increment		
esdiezy:	movlw	H'20' 
			movwf	PORTB
			sleep

	; RETRASO DE 0.5 SEGUNDOS

retro:		movlw	D'250'	; 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
			return

			end	

