before your code and [/co[COLOR="Black"]de][/COLOR] after your code. This forces the web-site to keep your formatting so people can actually read your code. When you don't do this, it loses all indentation and turns into the unreadable lump in your original post.
I took the liberty of neatening up your code, adding a proper cblock for the variables and changing the bsf/bcf bank changes to banksel's (and removed one unnecessary bank change). I also changed most of it to what is, in my opinion, much easier to read lower case. All upper case makes my eyes go wonky when I code. Everything looks the same. :p
[CODE] #include <p12f629.inc>
__CONFIG _CP_OFF & _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF & _CPD_OFF &_PWRTE_OFF
cblock 0x20
original_pwm,temp
endc
org 0x000
clrf GPIO
movlw 07h
movwf CMCON
banksel OSCCAL ;bank 1
call 3FFh
movwf OSCCAL
movlw H'0038'
movwf TRISIO
banksel GPIO ;bank 0
start btfss GPIO,3 ;wait for ON/OFF
goto start
call read ;Restore previous PWM
restart_pwm
movwf original_pwm ;save EEDATA to register, for PWM cycle
movwf temp ;save to temporary counter
bsf GPIO,0 ;signal to output 0, high cycle
bsf GPIO,1 ;signal to output 1,high cycle
bsf GPIO,2 ;signal to output 2,high cycle
loop1 decfsz temp,1 ;PWM high cycle counter
goto loop1
movlw d'255' ;255 cycles
movwf temp ;save for counter
movf original_pwm,w
subwf temp,1
bcf GPIO,0 ;low cycle
bcf GPIO,1 ;low cycle
bcf GPIO,2 ;low cycle
loop2 decfsz temp,1 ;PWM low cycle counter
goto loop2
btfss GPIO,3 ;check for on/off switch
goto start
btfsc GPIO,4 ;check for PWM cycle increase
call increase ;increase PWM cycle
btfsc GPIO,5 ;check for PWM Cycle reduce
call decrease ;decrease PWM cycle
goto restart_pwm ;repeat all hi/lo pwm cycle
***********SUBROUTINE*************
read banksel EEADR ;bank 1
movlw 0x01 ;goto addr 0x01 in eeprom
movwf EEADR
bsf EECON1,RD ;read previously saved PWM cycle
movf EEDATA,w ;move saved data to w
banksel GPIO ;bank 0
return
write banksel EEADR ;bank 1
movlw 0x01 ;go to addr 0x01
movwf EEADR
movf original_pwm,w ;move new cycle to original_pwm
movwf EEDATA ;write 0x01 to EEDATA
bsf EECON1,WREN ;< follow the datasheet write process
bcf INTCON,GIE ;<
movlw H'0055' ;<
movwf EECON2 ;<
movlw H'00AA' ;<
movwf EECON2 ;<
bsf EECON1,WR ;<
bsf INTCON,GIE ;<
banksel GPIO ;bank 0
return
decrease
decf original_pwm,0 ;decrease cycle by 1
movwf original_pwm ;save to register
call write
goto restart_pwm
return
increase
incf original_pwm,0 ;increase cycle by 1
movwf original_pwm ;save to register
call write
goto restart_pwm
return
END