; Begin
	R0L EQU 0xC
	R0H EQU 0xD
	R1L EQU 0xE
	R1H EQU 0xF
	R2L EQU 0x10
	R2H EQU 0x11
	R3L EQU 0x12
	R3H EQU 0x13
	R4L EQU 0x14
	R4H EQU 0x15
	R5L EQU 0x16
	R5H EQU 0x17
	ORG 0x0000
	BCF PCLATH,3
	BCF PCLATH,4
	GOTO L0003
	ORG 0x0004
	RETFIE
L0003:
; 1: AllDigital
; 2: TRISA = 1
	BSF STATUS,RP0
	MOVLW 0x01
	MOVWF 0x05
	BCF STATUS,RP0
; 3: TRISB = 0
	BSF STATUS,RP0
	CLRF 0x06
	BCF STATUS,RP0
; 4: Dim a As Word
;       The address of 'a' is 0x18
	a EQU 0x18
; 5: a = 650
	MOVLW 0x8A
	MOVWF 0x18
	MOVLW 0x02
	MOVWF 0x19
; 6: inicio: 
L0001:
; 7: PORTA = %0000
	CLRF 0x05
; 8: 
; 9: PORTB = %0000
	CLRF 0x06
; 10: If PORTA.0 = 1 Then Goto ciclo
	BTFSS 0x05,0
	GOTO L0004
	GOTO L0002
L0004:	MOVLW 0x1F
	ANDWF STATUS,F
; 11: If PORTA.0 = 0 Then Goto inicio
	BTFSC 0x05,0
	GOTO L0005
	GOTO L0001
L0005:	MOVLW 0x1F
	ANDWF STATUS,F
; 12: ciclo: 
L0002:
; 13: PORTB.0 = 1
	BSF 0x06,0
; 14: WaitMs a
	MOVF 0x18,W
	MOVWF R0L
	MOVF 0x19,W
	MOVWF R0H
	CALL W001
; 15: PORTB.0 = 0
	BCF 0x06,0
; 16: PORTB.1 = 1
	BSF 0x06,1
; 17: WaitMs a
	MOVF 0x18,W
	MOVWF R0L
	MOVF 0x19,W
	MOVWF R0H
	CALL W001
; 18: PORTB.1 = 0
	BCF 0x06,1
; 19: PORTB.2 = 1
	BSF 0x06,2
; 20: WaitMs a
	MOVF 0x18,W
	MOVWF R0L
	MOVF 0x19,W
	MOVWF R0H
	CALL W001
; 21: Goto inicio
	GOTO L0001
; End of program
L0006:	GOTO L0006
; Waitms Routine
W001:	MOVF R0L,F
	BTFSC STATUS,Z
	GOTO W002
	CALL W003
	DECF R0L,F
	NOP
	NOP
	NOP
	NOP
	NOP
	GOTO W001
W002:	MOVF R0H,F
	BTFSC STATUS,Z
	RETURN
	CALL W003
	DECF R0H,F
	DECF R0L,F
	GOTO W001
W003:	MOVLW 0x0C
	MOVWF R2H
W004:	DECFSZ R2H,F
	GOTO W004
	NOP
	NOP
	MOVLW 0x12
	MOVWF R1L
W005:	DECFSZ R1L,F
	GOTO W006
	CALL W007
	CALL W007
	NOP
	NOP
	RETURN
W006:	CALL W007
	GOTO W005
W007:	MOVLW 0x0D
	MOVWF R2L
W008:	DECFSZ R2L,F
	GOTO W008
	NOP
	RETURN
; End of listing
	END
