Here is a bit of code you may find useful.
;FADES THREE LEDS IN SEQUENCE AT ABOUT ONE HERTZ WHEN ENABLE IS APPLIED
;
#INCLUDE <P10F200.INC> ; PROCESSOR SPECIFIC VARIABLES
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
ORG 0X1FF
CBLOCK .16
COUNT ;COUNT BUFFER
COUNT1 ;COUNT BUFFER #1
PWM_BUF ;PWM BUFFER
ENDC
ORG .0
; MOVWF OSCCAL ; LOADS THE OSCILLATOR CALIBRATION FACTOR AUTOMATICALY.
INIT
;-----[OPTION]---------------------------------------------------------------
; 7 = GLOBAL WAKE UP ON CHANGE - GP0,GP1,GP3 - 1=ON 0=OFF
; 6 = GLOBAL WEAK PULL UP - GP0,GP1,GP3 - 1=ON 0=OFF
; 5 = T0CS - TIMER 0 CLOCK SOURCE SELECT - 1=EXTERNAL 0=INTERNAL
; 4 = T0SE - TIMER 0 SOURCE EDGE SELECT - 1=HIGH TO LOW 0=LOW TO HIGH
; 3 = PSA - PRE SCALE ASSIGNMENT - 1=WDT 0=TIMER 0
; 2:1 = PRE SCALER RATE
MOVLW B'10000111' ; SET PULL-UPS ONLY, MAX PRE-SCALER
OPTION ;
;-----[TRIS]-----------------------------------------------------------------
; 3 = GPIO 3 - INPUT ONLY
; 2 = GPIO 2 - I/O
; 1 = GPIO 1 - I/O
; 0 = GPIO 0 - I/O
MOVLW B'00001000' ; SET GPIO PIN 3 TO INPUT, PINS 0,1,2 TO OUTPUT.
TRIS GPIO ;
;-----[CMCON0 FOR 10F204 AND 10F206 ONLY]-------------------------------------
; 7 = CMPOUT - 1=VIN+ > VIN : 0=VIN+ < VIN
; 6 = COUTEN - OUTPUT PLACED ON COMPARATOR PIN 1=YES : 0=NO
; 5 = POL - COMPARATOR OUTPUT BIT IS INVERTED 1=NOT : 0=IS
; 4 = CMPT0CS - 1=TMR0 SOURCE BY T0CKS BIT : 0=COMP OUT USED AS SOURCE
; 3 = CMPON - 1=COMPARATOR ON : 0=COMPARATOR OFF
; 2 = CNREF - NEGATIVE REF SELECT 1=CIN : 0=INTERNAL VOLTAGE
; 1 = CPREF - POSITIVE REF SELECT 1=CIN+ :0= CIN-
; 0 = CWU - COMPARATOR WAKE UP ON CHANGE 1=DISABLED 0=ENABLED
;-----[MAIN ROUTINE]---------------------------------------------------------
MAIN
BCF GPIO,0 ; START WITH LED TURNED OFF
BCF GPIO,1 ; START WITH LED TURNED OFF
BCF GPIO,2
; BTFSC GPIO,3 ; PRESS THE PUSHBUTTON TO BEGIN
; GOTO MAIN ; ...LOOP, IF THE PUSHBUTTON IS NOT PRESSED
CLRF COUNT ; THE REG COUNT CAUSES THE SUBROUTINE TO LOOP 255 TIMES.
CLRF COUNT1 ; THE REG COUNT1 SETS THE PWM VALUE
CLRF PWM_BUF ; THE REG PWM_BUF HOLDS THE PWM RATIO OF 'ON' TO 'OFF'
MAIN1
MOVF COUNT1,W ; TRANSFER THE VALUE IN REG COUNT1 TO REG PWM_BUF
MOVWF PWM_BUF
CALL PWM
INCFSZ COUNT1,F ; HAS COUNT1 COUNTED FROM 0 TO 255?
GOTO MAIN1 ; ...NO, LOOP AGAIN
MAIN2
DECF COUNT1,F ; ...YES, AND NOW COUNT1 HOLDS THE DECREMENTING PWM VALUE
MAIN3
MOVF COUNT1,W ; TRANSFER THE VALUE IN REG COUNT1 TO REG PWM_BUF
MOVWF PWM_BUF
CALL PWMA
DECFSZ COUNT1,F ; HAS COUNT1 COUNTED FROM 255 TO 0?
GOTO MAIN3 ; ...NO, LOOP AGAIN
MAIN4
MOVF COUNT1,W ; TRANSFER THE VALUE IN REG COUNT1 TO REG PWM_BUF
MOVWF PWM_BUF
CALL PWMB
INCFSZ COUNT1,F ; HAS COUNT1 COUNTED FROM 0 TO 255?
GOTO MAIN4 ; ...NO, LOOP AGAIN
MAIN5
DECF COUNT1,F ; ...YES, AND NOW COUNT1 HOLDS THE DECREMENTING PWM VALUE
MAIN6
MOVF COUNT1,W ; TRANSFER THE VALUE IN REG COUNT1 TO REG PWM_BUF
MOVWF PWM_BUF
CALL PWMC
DECFSZ COUNT1,F ; HAS COUNT1 COUNTED FROM 255 TO 0?
GOTO MAIN6 ; ...NO, LOOP AGAIN
GOTO MAIN
PWM
MOVLW .255 ; MOVE THE LITERAL COUNT OF 255 TO REG 'W'
MOVWF COUNT ; ...THEN STORE IT IN THE REGISTER 'COUNT'
PWM1
MOVF PWM_BUF,F ; TEST IF THE REGISTER PWM_BUF IS ZERO
BTFSC STATUS,Z ; ...IS PWM_BUF = 0?
GOTO LED_OFF ; ...NO, NOT YET, SKIP THIS INSTRUCTION FOR NOW.
LED_ON
BSF GPIO,0 ; ...YES, SET GPIO PIN-0 HIGH, TURN ON LED
BCF GPIO,1 ; ...YES, SET GPIO PIN-1 LOW, TURN OFF LED
DECF PWM_BUF,F ; DECREMENT THE REGISTER PWM_BUF
GOTO EXIT
LED_OFF
BCF GPIO,0 ; SET GPIO PIN-0 LOW, TURN-OFF LED
BSF GPIO,1 ; SET GPIO PIN-1 HIGH, TURN-ON LED
NOP
GOTO EXIT ;
EXIT
DECFSZ COUNT,F ; HAS THIS SUBROUTINE LOOPED 255 TIMES?
GOTO PWM1 ; ...NO, KEEP LOOPING
RETLW 0 ; ...YES, RETURN TO THE CALLING PROGRAM
PWMA
MOVLW .255 ; MOVE THE LITERAL COUNT OF 255 TO REG 'W'
MOVWF COUNT ; ...THEN STORE IT IN THE REGISTER 'COUNT'
PWM1A
MOVF PWM_BUF,F ; TEST IF THE REGISTER PWM_BUF IS ZERO
BTFSC STATUS,Z ; ...IS PWM_BUF = 0?
GOTO LED_OFFA ; ...NO, NOT YET, SKIP THIS INSTRUCTION FOR NOW.
LED_ONA
BSF GPIO,0 ; ...YES, SET GPIO PIN-0 HIGH, TURN ON LED
BCF GPIO,2 ; ...YES, SET GPIO PIN-2 LOW, TURN OFF LED
DECF PWM_BUF,F ; DECREMENT THE REGISTER PWM_BUF
GOTO EXITA
LED_OFFA
BCF GPIO,0 ; SET GPIO PIN-0 LOW, TURN-OFF LED
BSF GPIO,2 ; SET GPIO PIN-2 HIGH, TURN-ON LED
NOP
GOTO EXITA ;
EXITA
DECFSZ COUNT,F ; HAS THIS SUBROUTINE LOOPED 255 TIMES?
GOTO PWM1A ; ...NO, KEEP LOOPING
RETLW 0 ; ...YES, RETURN TO THE CALLING PROGRAM
PWMB
MOVLW .255 ; MOVE THE LITERAL COUNT OF 255 TO REG 'W'
MOVWF COUNT ; ...THEN STORE IT IN THE REGISTER 'COUNT'
PWM1B
MOVF PWM_BUF,F ; TEST IF THE REGISTER PWM_BUF IS ZERO
BTFSC STATUS,Z ; ...IS PWM_BUF = 0?
GOTO LED_OFFB ; ...NO, NOT YET, SKIP THIS INSTRUCTION FOR NOW.
LED_ONB
BSF GPIO,0 ; ...YES, SET GPIO PIN-0 HIGH, TURN ON LED
BCF GPIO,2 ; ...YES, SET GPIO PIN-2 LOW, TURN OFF LED
DECF PWM_BUF,F ; DECREMENT THE REGISTER PWM_BUF
GOTO EXITB
LED_OFFB
BCF GPIO,0 ; SET GPIO PIN-0 LOW, TURN-OFF LED
BSF GPIO,2 ; SET GPIO PIN-2 HIGH, TURN-ON LED
NOP
GOTO EXITB ;
EXITB
DECFSZ COUNT,F ; HAS THIS SUBROUTINE LOOPED 255 TIMES?
GOTO PWM1B ; ...NO, KEEP LOOPING
RETLW 0 ; ...YES, RETURN TO THE CALLING PROGRAM
PWMC
MOVLW .255 ; MOVE THE LITERAL COUNT OF 255 TO REG 'W'
MOVWF COUNT ; ...THEN STORE IT IN THE REGISTER 'COUNT'
PWM1C
MOVF PWM_BUF,F ; TEST IF THE REGISTER PWM_BUF IS ZERO
BTFSC STATUS,Z ; ...IS PWM_BUF = 0?
GOTO LED_OFFC ; ...NO, NOT YET, SKIP THIS INSTRUCTION FOR NOW.
LED_ONC
BSF GPIO,0 ; ...YES, SET GPIO PIN-O HIGH, TURN ON LED
BCF GPIO,1 ; ...YES, SET GPIO PIN-1 LOW, TURN OFF LED
DECF PWM_BUF,F ; DECREMENT THE REGISTER PWM_BUF
GOTO EXITC
LED_OFFC
BCF GPIO,0 ; SET GPIO PIN-O LOW, TURN-OFF LED
BSF GPIO,1 ; SET GPIO PIN-1 HIGH, TURN-ON LED
NOP
GOTO EXITC ;
EXITC
DECFSZ COUNT,F ; HAS THIS SUBROUTINE LOOPED 255 TIMES?
GOTO PWM1C ; ...NO, KEEP LOOPING
RETLW 0 ; ...YES, RETURN TO THE CALLING PROGRAM
END ;