Hola a todos! Es la primera vez que escribo y acabo de empezar en esto de los PICs. He comenzado con el 16F876 porque me lo recomendaron como uno de los más sencillos. 
Mi problema aparece al empezar a probar con el PIC, para lo que escribí un simple programa que lee del puerto A y escribe lo que ha leido en el puerto B. Cuando simulo con Pic Simulator IDE funciona correctamente, pero al meterlo al micro la cosa no funciona. Aparentemente es tan simple que no se que falla. LLevo días dándole vueltas y no se que hacer ya.  Agradecería que alguien me echara una mano. Os pongo el programa a continuación:
; Leer/escribir en puertos
   LIST P=16F876
   RADIX HEX
;***********************************************
;*******           Registros             *******
;***********************************************
TMR_OPT EQU 0x01                         ;Timer
STATUS  EQU 0x03                          ;Estado
PUERTOA EQU 0x05                         ;Puerto A
PUERTOB EQU 0x06                          ;Puerto B
ADCON   EQU 0x1F                            ;Configuración del Puerto A
   ORG 0
   goto inicio
   ORG 5   
inicio         movlw   0x00                   ;Escribo 00 en todos los puertos
   movwf   PUERTOA      ;para limpiar la salida de datos latcheada
   movwf   PUERTOB
   bsf     STATUS,5                        ;Acceso al banco 1
                                      ;Configuracion e inicialización de registros
   movlw   b'00000000'                   ;CLK interno,flanco bajada,preescalado de 2
   movwf     TMR_OPT                    ;En el banco 1 este es el OPTION_REG. 
                          ;Con este valor habilita PullUp internas del
                           ;Puerto B para que sea salida 
   movlw   0x00                    ;Escribimos 00 en el registro TRISB 
   movwf   PUERTOB                       ;para que PUERTO B sea SALIDA de datos    
   movlw   b'00000111'                     ;Todo el puerto A queda como puerto 
   movwf   ADCON                            ;Digital. Escribimos en reg ADCON1
   movlw   b'11111111'                       ;Escribimos FF en el registro TRISA 
   movwf   PUERTOA                         ;Todo el Puerto A como ENTRADA, A6 y A7 se leeran siempre como 0   
   bcf     STATUS,5                            ;Acceso al banco 0
bucle   movf  PUERTOA,0                          ;Leemos el puerto A    PuertoA -> W
   nop
   movwf   PUERTOB                       ;Llevamos lo de W al puerto B    W->PuertoB
   goto    bucle
   END
        Os agradecería cualquier comentario porque de verdad no se que probar ya.
Por si sirve de algo, genero el HEX con MPlab, utilizo un programador Te20 y descargo con IcProg.
Gracias a todos