Como programar y conectar un PIC16F628A

Hola leyendo algunos comentarios anteriores expongo mi duda lo que pasa es-que 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


Código:
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
 
Última edición por un moderador:
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.
 
Última edición por un moderador:
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
 
Última edición:
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.
 
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.
 
Última edición:
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.
 
Última edición:
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. :aplauso:(Ver capítulo segundo)
 
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.
 
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
 
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.
 
Última edición:
Atrás
Arriba