; File DEMOF628.ASM
; Assembly code for PIC16F628 microcontroller

; Enciende leds del puerto B con un patrón de rotación
; Oscilador Cristal de 4 Mhz. Cada LED enciende durante 0.5 seg.

; Configuración del CPU
; 16F84, Oscilador cristal 4 Mhz,
; watchdog timer off, power-up timer on)
; incluye archivo p16f628.inc

	processor 16f628
	include	  <p16f628.inc>
	__config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF
J	equ	H'20'	  ; localidad 20 es J
K	equ	H'21'	  ; localidad 21 es K

; Programa

	org	0	  ; origen de memoria flash =0
	movlw           0x7
	movwf           CMCON        
	movlw           0x0
	movwf           VRCON


	movlw	B'00000000'	; w := 00000000 
	tris	PORTB		; puerto B=0 (bits son salidas)
	movlw	B'00000001'	; 
	movwf	PORTB		; port B =1
	bcf     STATUS,C  	;carry=0
mloop:	rlf	PORTB,f		;rotate left PORT B (incluye carry)
	movlw	D'202'		;retraso antes de seguir rotación
	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
	goto 	mloop

	end	

