# Como programar y conectar un PIC16F628A



## ema95 (May 21, 2011)

Hola gente. Como andan? Queria preguntar como conectar un pic 16f628a. Yo hice un programa para prender y apagar un led utilzando como salida el RB0. Para programar utilice un JDM y el winpic800. El problema es que hice el circuito en protoboard pero no pasa nada. Yo creo que el problema esta en el oscilador. Si me puedieran ayudar seria espectacular. Gracias

JDM:


----------



## chapin (May 21, 2011)

deberias poner tu programa pues asi se podriamos ayudar mas pues podria no ser tu pogramador


----------



## mfpr2009 (May 21, 2011)

hola, si el circuito que armastes es ese que se ve arriba te falta el oscilador, que puede ser de cristal de unos 4000 a 12000 Hz, o podes hacer uno con resistencia y capacitor. pro te recomiendo el primero. pones las patas del cristal en las patas 15 y 16 del pic y a cada pata a su vez las desacoplas a maza con unos condensadores de 22pf. eso es lo mas simple


----------



## kiws (May 21, 2011)

ola que talasi como dice chapin deberías poner el código a lo mejor omitiste algo, ademas el circuito de arriba no es nada parecido a lo que dice que quieres hacer en la descripción


----------



## Rigeliano (May 21, 2011)

Ese es el circuito del programador JDM que usaste ?
Mejor pon el circuito que hiciste para para encender el Led y el codigo del PIC ya que supongo que grabaste el .hex con exito


----------



## ema95 (May 22, 2011)

gente miren para los q me preguntaron si ese era el circuito: no ese no es. ese es el programador.

El codigo en basic es (para pic simulator IDE):

AllDigital
TRISB = 0

inicio:
PORTB.0 = 0
WaitMs 100
PORTB.0 = 1
WaitMs 100
Goto inicio

el circuito es:






quiza esto q les voy a decir tambien les pueda ayudar a ayudarme:
en el winpic800, si yo quiero usar el oscilador interno, que configuracion tengo q grabarle?
esta es la q tengo:

OSC: XT
WDTE: Sin tildar
PWRTE: Tildado
MCLRE: Sin tildar
BOREN: Tildado
LVP: Sin tildar
CPD: Sin tildar

CP: OFF

el programador funciona bien. con el winpic puedo grabar y leer sin problemas

Saludos


----------



## ema95 (May 22, 2011)

muchachos ya resolvi el problema era q la configuracion. tenia q usar intosc y yo habia puesto xt.


----------



## KRLSNVRT (Ago 23, 2012)

Buenos dias estoy realizando un diseño con el pic 16f628a  en pbp  donde se requiere utilizar todos los pines del pic, pero no logro hacer que el oscilador interno me funcione correctamente y pueda utilizar los pines RA6, RA7, RA5 como entradas, eh buscado por internet un ejemplo pero tampoco lo consigo.

que puedo estar haciendo mal?
alguien tiene un ejemplo para pbp?

El codigo es :


```
'****************************************************************
'*  Name    : control de nivel agua.BAS                                      *
'*  Author  : [Carlos a Navarrete]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18/08/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :  sistem controller                                                  *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16f628A, INTRC_OSC_NOCLKOUT 'Reloj interno solo.-
@ DEVICE pic16f628A, WDT_OFF ' Watchdog Timer desconectado.-
@ DEVICE pic16f628A, PWRT_OFF ' Power-On Timer conectado.-
@ DEVICE pic16f628A, BOD_ON ' Brown-Out Detect conectado.-
@ DEVICE pic16f628A, MCLR_ON ' Master Clear Externo desconectado.-
@ DEVICE pic16f628A, LVP_OFF ' Low-Voltage Programming desconectado.-
@ DEVICE pic16f628A, CPD_OFF ' Data Memory Code Protect desconectado.-

DEFINE INTOSC

DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

CMCON = 7
FOSC2 = 1
FOSC1 = 0
FOSC0 = 0


NVL1  VAR BYTE
NVL2  VAR BYTE
NVL3  VAR BYTE
NVL4  VAR BYTE
NVL5  VAR BYTE
NVL6  VAR BYTE
PRES VAR  BYTE
WATER_P VAR   BYTE






'--------------------------------CONFIG PUERTOS------------------------------
TRISA   =   %11111111
TRISB   =   %00000000

TNK_SUP :

IF NVL6  = 0  THEN  GOTO N5
             GOTO   MENSN6
N5:
IF  NVL5 = 0  THEN  GOTO N4
             GOTO   MENSN5

N4:
IF  NVL4 = 0 THEN GOTO TNK_SUP
              GOTO  MENSN4
              

MOTOR1:

IF NVL3 = 0 THEN GOTO N2
            GOTO  MENSN3

N2:
IF  NVL2 = 0 THEN GOTO N1
            GOTO MENSN2
            
N1:
IF  NVL1 = 0 THEN GOTO VACIOS
            GOTO  MENSN1
            

MOTOR_ON:

IF PRES = 0 THEN GOTO SPRES
               GOTO WATER
               
IF  WATER_P =  1 THEN GOTO LLENADO
               GOTO WATER
                

                
MENSN6:

PAUSE 500
LCDOUT $FE,1
LCDOUT         "MAXIMO NIVEL DEL"
LCDOUT $FE,$0, "TANQUE # 2 OK "
PAUSE  2000
GOTO  MOTOR1
GOTO TNK_SUP

MENSN5:

PAUSE 500
LCDOUT $FE,1
LCDOUT         " NIVEL MEDIO DEL"
LCDOUT $FE,$0,  " TANQUE # 2  "
PAUSE  2000
GOTO MOTOR1
GOTO TNK_SUP


MENSN4:


PAUSE 500
LCDOUT $FE,1
LCDOUT         " NIVEL BAJO DEL"
LCDOUT $FE,$0,  " TANQUE # 2  "
PAUSE  2000
GOTO MOTOR1
GOTO TNK_SUP

MENSN3:


PAUSE 500
LCDOUT $FE,1
LCDOUT         " MAXIMO NIVEL DEL"
LCDOUT $FE,$0,   " TANQUE # 1  "
PAUSE  2000
GOTO MOTOR1
GOTO TNK_SUP

MENSN2                
                

PAUSE 500
LCDOUT $FE,1
LCDOUT         " MEDIO NIVEL DEL"
LCDOUT $FE,$0,   " TANQUE # 1  "
PAUSE  2000
GOTO MOTOR1
GOTO TNK_SUP

MENSN1

PAUSE 500
LCDOUT $FE,1
LCDOUT         " BAJO NIVEL DEL"
LCDOUT $FE,$0,   " TANQUE # 1  "
PAUSE  2000
GOTO TNK_SUP

VACIOS:

PAUSE 500
LCDOUT $FE,1
LCDOUT         " TANQUES VACIOS"
LCDOUT $FE,$0,   " NO HAY AGUA  "
PAUSE  2000
GOTO TNK_SUP

SPRES:


PAUSE 500
LCDOUT $FE,1
LCDOUT           " SOBRE PRESION "
LCDOUT $FE,$0,  " ABRA UNA LLAVE  "
PAUSE  2000
PORTB.6 = 0
PORTB.7 = 1
GOTO TNK_SUP

WATER:

PAUSE 500
LCDOUT $FE,1
LCDOUT         " LLENANDO TANQUES "
LCDOUT $FE,$0,   " ESPERA UN RATO "
PAUSE  2000
PORTB.6 = 1
PORTB.7 = 1
GOTO TNK_SUP

LLENADO :

PAUSE 500
LCDOUT $FE,1
LCDOUT         "  TANQUES LLENOS "
LCDOUT $FE,$0,   " BUEN DIA "
PAUSE  2000
PORTB.6 = 1
PORTB.7 = 1
GOTO TNK_SUP

END
```




 muchas gracias

.    :cabezon:


----------



## alies veltroen (Sep 19, 2012)

Hola muchachos!
Hice el mismo programa de intermitente en pin rb  y tengo el mismo problema de ema95, pues el programa esta ya compilado en c compiler y simulado en proteus y funciona;  en el momento de  conectar el pic en la protobard le coloque el cristal en el pin  y 17y despues de cada patilla del cristal conencte  los dos condensadores de lenteja en serie a tierra, y de rb0 saque una resistencia de 330 a un led
pero no funciona, que debo hacer????. Muchas gracias por sus aportes


----------



## ricbevi (Sep 19, 2012)

alies veltroen dijo:


> Hola muchachos!
> Hice el mismo programa de intermitente en pin rb  y tengo el mismo problema de ema95, pues el programa esta ya compilado en c compiler y simulado en proteus y funciona;  en el momento de  conectar el pic en la protobard le coloque el cristal en el pin  y 17y despues de cada patilla del cristal conencte  los dos condensadores de lenteja en serie a tierra, y de rb0 saque una resistencia de 330 a un led
> pero no funciona, que debo hacer????. Muchas gracias por sus aportes



Hola...el pin? y el pin17 no son los del oscilador(adjunto la disposición de los pines..son el 15 y 16)...los capacitores si no estas seguro de la capacidad("lenteja" no es medida de capacidad) no le pongas nada ...el cristal de que frecuencia usaste? ; definiste los fusibles en el compilador y/o en el programador a la hora de programar?, ¿cuales fueron?; etc. pueden ser solo alguna de las causas por la que el circuito no te funcione pero recuerda que tú sabes lo que haces y nosotros solo lo que tú cuentas aquí.
Saludos.

Ric.


----------



## alies veltroen (Sep 19, 2012)

cordial saludo,
de antemano agradezco su valiosa colaboración, si de hecho el cristal está entre el pin 15 y 16, el valor de los condensadores es de 22  pf, el cristal que utilize es de 4Mghz, el pin 6 (rb0/int) lo utilicé como salida para el led intermitente,  y a continuación dejo la programación que utilicé para mi pic a disposición de ustedes, aclaro el programa fue compilado sin errores en c compiler y simulado en proteus (en proteus funciona correctamente el programa).

#include <16f628.h>
#fuses XT,NOWDT
#use delay(clock=4M)

void main()

{
while(true)
{

output_high(pin_b0);
delay_ms(500);
output_low(pin_b0);
delay_ms(500);
output_high(pin_b0);
delay_ms(100);
output_low(pin_b0);
delay_ms(100);}

}


----------



## 1024 (Sep 19, 2012)

alies veltroen dijo:


> cordial saludo,
> de antemano agradezco su valiosa colaboración, si de hecho el cristal está entre el pin 15 y 16, el valor de los condensadores es de 22  pf, el cristal que utilize es de 4Mghz, el pin 6 (rb0/int) lo utilicé como salida para el led intermitente,  y a continuación dejo la programación que utilicé para mi pic a disposición de ustedes, aclaro el programa fue compilado sin errores en c compiler y simulado en proteus (en proteus funciona correctamente el programa).
> }



Hola, posiblemente te falte poner a nivel alto el pin MCLR (4)


----------



## alies veltroen (Sep 20, 2012)

gracias muchachos, efectivamente coloqué el pin mclr en alto (4), e inmediatamente funcionó el micro.
Me gustaría saber porque se necesita y si siempre se coloca en estado alto este pin para que funcione el micro o donde puedo buscar información al respecto, pues soy principiante y estoy interesado en el tema de programación


----------



## 1024 (Sep 20, 2012)

alies veltroen dijo:


> gracias muchachos, efectivamente coloqué el pin mclr en alto (4), e inmediatamente funcionó el micro.
> Me gustaría saber porque se necesita y si siempre se coloca en estado alto este pin para que funcione el micro o donde puedo buscar información al respecto, pues soy principiante y estoy interesado en el tema de programación



Hola, es el pin de reset, si necesitas informacion mas detallada lee el datasheet


----------



## ricbevi (Sep 20, 2012)

alies veltroen dijo:


> gracias muchachos, efectivamente coloqué el pin mclr en alto (4), e inmediatamente funcionó el micro.
> Me gustaría saber porque se necesita y si siempre se coloca en estado alto este pin para que funcione el micro o donde puedo buscar información al respecto, pues soy principiante y estoy interesado en el tema de programación



Eso pasa por no tomar en cuenta lo que te exprese en mi primer intervención " ; definiste los fusibles en el compilador y/o en el programador a la hora de programar?, ¿cuales fueron?"
El pin 4 es el MCLR y se puede usar o no dependiendo de la configuración de los fusibles si lo hubieras des-habilitador al colocarlos en tu programa,  el compilador lo habría interpretado y estarían incluidos en el archivo "hex" generado o si lo hubieras puesto manualmente en el programador antes de programar el chip si tú no se lo indicas a ninguno de los dos se colocan como están por defecto que es habilitado y necesariamente deberás mandar ese pin a estado alto.
Acostumbrate a colocar los fusibles en el encabezado de tu programa si como la definicion del micro-controlador usado. 

```
Ej: en basic.... 

  Device = 16F628A
Config HS_OSC,WDT_OFF, LVP_OFF, BODEN_OFF, CP_ON,PWRTE_OFF,MCLRE_OFF
     Declare Xtal = 4 

en ASM
 list         p=16f84
    radix         hex
    __config     0x3FF1    ;'PWT_ON,WDT_OFF,OSC_XT,CP_OFF
```
Saludos.

Ric.


----------



## lalinmartin (Sep 20, 2012)

hola tambien soy nuevo en el foro estoy aprendiendo y tenia un problema similar
en un pic 16F628 trabajar con el osc interno y lo configure de acuerdo a este video
y me trabajo bien espero te sirva Link


----------



## nf mv (Oct 14, 2012)

hola gente, soy nuevo en esto de los pic, y necesito que alguien me de una mano.. tengo un problema con pic 16f628a..
Resulta que me compre el programador pickit2 (clon); y baje un .hex de la web que hace encender y apagar un led (1segundo en cada estado), lo unico que pretendo hacer con este programita es ver si el programador y el circuito funcionan bien( el circuito es muuy simple), pero tengo un tema:
-lo programo...
-lo leo y, efectivamente esta programado
-pero a la hora de probar si anda, pasan dos cosas: 
    1-si lo pruebo desde el programa pickit2 v2.6.. (programador mediante) activando vdd(5v) funciona genial, un segundo prendido, un segundo apagado; pero...
    2- si lo conecto con una fuente externa, sin programador de por medio, o sea, como deberia funcionar el circuito de final NO anda, o queda encendido el led, o no enciende o "pira!"jeje

aclaro que estoy usando como "fuente externa" un cargador de celular con salida de usb(5v), y ese no es el problema...
talvez pueda ser algun problema con el clock, porq estoy usando el INTRC...

estoy entregado con todo esto de los pic.. y ya no me queda web ni tutorial por ver...
ayuda!!!
gracias.
desde uruguay, nico.


----------



## ricbevi (Oct 14, 2012)

nf mv dijo:


> hola gente, soy nuevo en esto de los pic, y necesito que alguien me de una mano.. tengo un problema con pic 16f628a..
> Resulta que me compre el programador pickit2 (clon); y baje un .hex de la web que hace encender y apagar un led (1segundo en cada estado), lo unico que pretendo hacer con este programita es ver si el programador y el circuito funcionan bien( el circuito es muuy simple), pero tengo un tema:
> -lo programo...
> -lo leo y, efectivamente esta programado
> ...


Hola....sin circuito, foto o programa es solo cuestión de adivinar...si usas el oscilador interno esta bien y que hay del MCLR lo usas? y si es así el pin correspondiente(pin 4 RA5) esta a +5V por que si no no arrancara la ejecución del programa....
Saludos.

Ric.


----------



## nf mv (Oct 14, 2012)

este es el programita.. en c..

#include<16f628a.h>
#fuses INTRC_IO,NOWDT,NOLVP,MCLR,NOPROTECT
#use delay(clock=4000000)
#byte TRISB=0x86
#byte PORTB=0x06

void main(void){
   TRISB=0x00;
   PORTB=0x00;
   do{
      output_high(PIN_B0);
      delay_ms(1000);
      output_low(PIN_B0);
      delay_ms(1000);
   }while(TRUE);   
}

me decis que si le saca el mclr de los fuses puede andar?



ya esta era eso nada más.. funcionó!!! muchas gracias..!!!
 tengo más preguntas, no quiero ser molesto pero me gustaria que me ayudes con lo que realmente quiero hacer... se trata de leer las combinaciones de una linea de 8 "cablecitos" y dimerizar una luz en funcion del codigo que llegue por el cable...
 en realidad el programa ya lo hice... pero no anda.. esta escrito en c queres que lo suba?
gracias..


----------



## nf mv (Oct 14, 2012)

Resuelto: (por si hay alguien buscando y encuentra este tema)
en los fuses puse :
#fuses INTRC_IO,NOWDT,NOLVP,MCLR,NOPROTECT,NOMCLR
Y ya no fue necesario alimentar la patita de MCLR con 5v basta con alimentar el pic(vdd y vss) para que el programa corra..
gracias de nuevo a Ric.!
saludos a todos!


----------



## patricko1508 (Oct 14, 2012)

Hola leyendo algunos comentarios anteriores expongo mi duda lo que pasa *e*s*-*q*ue* yo tengo este programa el cual me dice que mi pic no lleva ni oscilador ni reset pero al conectarlo se calienta el pic, entonces mi duda es como conectar si me marca que sin oscilador ni reset, que le hago a esas entradas las mando a tierra? o como 



```
bank0     macro
        bcf STATUS,RP1
        bcf STATUS,RP0
        endm
bank1    macro
        bcf STATUS,RP1
        bsf STATUS,RP0
        endm
;*******************************************************************************************
ORG    0x00            ; El programa empieza en 0x000 
goto   inicio

inicio  
;*******************************************************************************************
; Inhibe comparadores
        movlw 7
        movwf CMCON        ; CMCON=7 inhibir los comparadores
;******************************************************************************************
;configura Puertos
        clrf    PORTB
        clrf    PORTA
        bank1
        clrf    TRISB                    ;Puerto B como salida
        movlw    b'11111011'                ;Puerto A como entrada
        movwf    TRISA
        bank0
        bcf        INTCON,GIE
;********************************************************************************************
        bsf            PORTA,2
;Programa Principal

Sensores
    movf        PORTA,w
    andlw        b'00000011'
    call        tabla
    movwf        PORTB
    call        Retardo_100ms
    goto        Sensores
;********************************************************************************************
tabla
    sublw        b'00000011'
    btfsc        STATUS,Z
    goto        blanco
    sublw        b'00000010'
    btfsc        STATUS,Z
    goto        derecha
    sublw        b'00000001'
    btfsc        STATUS,Z
    goto        izquierda
    return
blanco    
          movlw        b'01111100'
          bcf        STATUS,Z
          return    
izquierda 
          movlw        b'01111000'
          bcf        STATUS,Z
          return    
derecha   
          movlw        b'00111100'
          bcf        STATUS,Z
          return    
include <RETARDOS.INC>
end
```


----------



## lalinmartin (Oct 16, 2012)

Hola Patricko1508
Te comento que también estoy apenas aprendiendo el proton basic, de ensamblador se muy poco.
Respecto a tu pregunta de los pines del oscilador, te recomiendo dejar sin conexión los pines del oscilador y configurarlos como entrada, y el RA5 del MCLR del reset, lo conectes con una resistencia de 10k a +5v,
si no no te trabaja correctamente el pic, suponiendo que usas el 16f628
Espero haberte ayudado.


----------



## jdchh (Feb 14, 2013)

Hola Amigos, en estos momentos ando empezando a programar los PICs en C ya que solo se programar ATmegas de Atmel y me interesa lo de PICs, la verdad es que hice un programa en C que prendiera y apagara un LED cada 500 ms en el pic 16F628A, lo simule en Proteus y anda bien, ahora lo programe con la ayuda del PICkit y se programa bien, lo malo es que al montarlo en la protoboard no me funciona... utilizo un cristal de 4MHz y dos capacitores de 22pF entre las patas 15 y 16, GND en 5 y Vcc en 14, porfa ayudenmennn...... gracias XD


----------



## KILLER7 (Feb 14, 2013)

Hiciste todo lo más complejo solo te faltaría lo más fácil que es unir todo.

La proto no es de confianza fijate que no te quedén cortos los cables, tambien el XTAL y los capacitores tiene que estar lo más cerca posible del micro. Controla la línea de reset que este inactiva ( es activa a bajo ), o que no este flotante. Los pines que no se usan se configuran como salidas y se unen todas a masa.


----------



## Nuyel (Feb 15, 2013)

KILLER7 dijo:


> Los pines que no se usan se configuran como *salidas y se unen todas a masa*.



Creo que te confundiste, si son salidas pueden dejarse flotando y de hecho siempre es así.
Yo también salí con problemas en mi intento de programar un PIC12F675, solo he programado los MSP430 y cuando intenté hacer parpadear el LED en el simulador va pero en la realidad no ¬¬, voy a seguir revisando esta cosa, cuando intentaba usar XOR no servia, pero poner dos lineas extra para apagar y encender si lo hacia, lo curioso es que cuando acerqué unas pinzas por sobre el PIC el LED comenzó a destellar. ¿Cuando se activan los pull-ups integrados que voltaje tiene que dar el pin?, intentaba encender un LED con un push y también me daba problemas.


----------



## Melghost (Feb 15, 2013)

Hola.

       Simplifica el circuito al máximo y cuando te funcione lo vas ampliando. Imprescindible lo del RESET, mándalo a +V para que no te dé problemas. Yo empezaría también sin cristal, te sorprendería ver la precisión que tienen los osciladores de esos chips incluso sin cristal. Asegúrate de poner bien los registros de configuración, qué oscilador utilizas, etc. Inhabilita todas las interrupciones por si acaso.
       Otra cosa: La primera prueba que yo hice con un PIC y un LED pensé que se quedaba bloqueado. En realidad funcionaba más rápido de lo que yo podía ver. Te recomiendo que primero pruebes a encender el LED y nada más (no lo apagues). Luego ya probarás a hacerlo oscilar. Y por último, no creo que sea tu caso, pero un día me ocurrió algo rarísimo con una salida de un PIC. Busca esto: "I2C se vuelve loco al activar salida RB0 en PIC18F26J50"

       Y los pines que no utilices déjalos al aire. Si es sólo para probar, no pasa nada aunque estén como entradas.

       Resuelve este pequeño bache, que luego vendrán más... y cuando vayas aprendiendo, verás qué grato es esto de la programación de microcontroladores.


----------



## KILLER7 (Feb 15, 2013)

Nuyel dijo:


> Creo que te confundiste, si son salidas pueden dejarse flotando y de hecho siempre es así.
> Yo también salí con problemas en mi intento de programar un PIC12F675, solo he programado los MSP430 y cuando intenté hacer parpadear el LED en el simulador va pero en la realidad no ¬¬, voy a seguir revisando esta cosa, cuando intentaba usar XOR no servia, pero poner dos lineas extra para apagar y encender si lo hacia, lo curioso es que cuando acerqué unas pinzas por sobre el PIC el LED comenzó a destellar. ¿Cuando se activan los pull-ups integrados que voltaje tiene que dar el pin?, intentaba encender un LED con un push y también me daba problemas.



La fuente de mi mensaje es del del libro "Electrónica y microcontroladores pic" de Victor Rossano.

También es válido dejarlas flotando. (Ver capítulo segundo)


----------



## Nuyel (Feb 15, 2013)

KILLER7 el problema fue lo de "*unirlas todas a masa"*, si son salidas y las unes a masa es mala idea, puede que accidentalmente se le cambie el valor en el programa y las mandes a corto, por eso fue que lo remarqué, no se si fue confusión tuya o detalle de semántica.


----------



## fdesergio (Feb 15, 2013)

Preferiblemente los pines libres se deben configurar como ENTRADA y colocarlos a tierra o masa, eso asegura un "semi" blindajeal PIC, lo de las salidas unidas  a masa SERIA UN ERROR ahora si eso lo dice un autor en un libro seria un ERRORSOTE, creo estas equivocado, en el peor de los casos si se configuran como salida lo ideal seria dejarlos al aire, chauuuuuuu


----------



## Nuyel (Feb 15, 2013)

Oyes, viendo tu programa, en ningún momento encuentro como lo configuras, no se nada de ensamblador pero no veo nada parecido a la configuración de osciladores y todo eso, en la data sheet dice que se almacena en la dirección 2007h (pagina 97), intenta cargar el valor 2138h, es para ejecutarlo sin protección en la memoria de programa ni datos (es mejor así cuando estas aprendiendo), Brown-out Reset desactivado,  MCLR habilitado (le conectas un Pull-up al pin de reset), Power-up Timer desactivado, WDT desactivado y usando oscilador interno con I/O en RA6 y RA7, en el registro PCON(8Eh) usa OSCF(bit3) para cambiar de frecuencia, 1 para 4MHz y 0 para 48KHz, no se como le asignes los valores pero quizás eso lo arregla.


----------

