Ha costado mas de lo que pensaba. He tardado bastante en encontrar algun sitio donde me dijeran como podía montar un circuito simple con un 16F84 para hacer pruebas, lo que se llama un “entrenador”.
Lo único que tenía claro es que el chip se alimenta con entre 3 y 6 voltios, por lo que tenía que buscar una fuente de alimentación que me diera alrededor de 5V. Me he apañado una fuente de alimentación de PC que uso para pruebas y que entrega 5 y 12V y le he puesto un conector para poder enchufarle corriente a la protoboard.
Tambien sabía el patillaje, gracias al datasheet de Microchip, el fabricante.

Luego un poco a lo bestia he colocado en la protoboard el zocalo, 3 leds y me he puesto a cablear las salidas del puerto A (el 16F84 tiene 2 puertos de salida, el A, de 5 bits, y el B, de 8 ) a los leds y la alimentación y masa del chip (pata 13 y 5).
Para probarlo, y harto de que el CCS me diese continuamente un error de “Unknown device type” sin motivo aparente, me remangué y me puse a compilar un ejemplo en ensamblador muy simple, que activaba todas las líneas de los puertos de salida. Como yo tenía conectados 3 leds a las líneas de menor peso del puerto A, deberían encenderse los 3 leds.
Ensamblé el programa con el MPASM directamente (en efecto, el MPLAB TAMPOCO me funcionaba bien) y subí el programa al PIC con el IC-Prog y mi recien creado PIPO2.
Monté el PIC sobre la proto board y encendí la fuente de alimentación, con gran desilusión.. allí no pasaba nada de nada. Podía ser cualquier cosa, el programa, el circuito, yo que se.. pero me acordé de un montaje con un PIC que vi hace poco y miré el esquema que tenía.
Basicamente me faltaba un cuarzo entre CLKIN y CLKOUT y conectar el master clear MCLR a la alimentación mediante una resistencia de 10k. ¡Que suerte! ¡El cuarzo y las resistencias las compré el otro día!

Lo puse y.. ohhhhhhh, que bonito, los leds se encendían. Probé otro par de códigos, leds parpadeando, leds en relevos y ya, convencido de que esto funciona, lo dejé para dormir un poco, que si me meto a hacer modificaciones en los programas no me acuesto en toda la noche.
Cuando lo monte en serio ya pondré todos los condensadores y resistores que se supone que tengo que poner en el circuito de pruebas. De momento, a dormir, que me lo he ganado.
Hola Makinolo, he conocido tu web por es.ciencia.electronica y está fenomenal.
Te escribo para ofrecerte el entrenadopr que yo me monté en su día para aprender con los PICs.
Igual te puede servir.
Esta en http://www.aljanadic.net/francis/cms
Saludos y ánimo.
Gracias Francis, acabo de ver el entrenador que me propones. Supongo que es el PIC Kernel.
Resulta que ayer me terminé uno parecido solo que sin regulador de tensión ni los condensadores que convierten el reloj en un resonador (parece que se de lo que hablo, pero solo repito lo que leo, parezco un loro :-D)
Lo de hacer placas aun queda un poco lejos de mis posibilidades como novatillo en electronica. Aun no tengo infraestructura para fabricarmelas y voy tirando de boards.
Además, fijandome en la de Xisco, puedo ampliar la mia por módulos. Me mola.
Hola he visitado tu webside está fenomenal:
perdón por las molestias pero tengo un problema estoy iniciando en esto de los pics y estoy haciendo como práctica una caminata de leds conectados al puerto b la rutina la tome de internet que era el encender 4 leds del puerto b a continuación pongo la rutina para 4 led y tambien la midificación para 8 pero no trabaja bien porque cuenta sólo hasta el 5 led pero no retorna al inicio y tampoco encienden los leds depués del 5o. led, me puedes ayudar con algún consejo para que cuente los 8 leds del puerto b; gte mando los dos programas un con 4 leds que jala bien y el de 8 que no jalo bien
;Este programa maneja una secuencia de 4 LED’s.
list p=16c84
;———————————————————————-
ptob equ 06 ;el puerto b est en la direcci¢n 06 de la memoria RAM
rota equ 0a
reg1 equ 0b ;se asignan nombres a algunos registros de prop¢sito general
reg2 equ 0c
reg3 equ 0d
valor1 equ 30 ;se asignan nombres a algunas constantes
valor2 equ 40
valor3 equ 50
;———————————————————————–
reset org 0 ;el vector de reset es la direccion 00
goto inicio ;se salta al inicio del programa
org 7 ;el programa empieza e la direccion de memoria 7
inicio movlw 00 ;se carga el registro W con 0
tris ptob ;se programan los pines del puerto b como salidas
otra movlw 01 ;se carga el registro W con el valor 01
movwf rota ;se dispone el dato para la rotacion
hol movf rota,0 ;mueve el contenido del registro rota a W
movwf ptob ;enciende el LED correspondiente
call retardo ;se mantiene el LED encendido por un momento
rlf rota ;desplaza el contenido del registro un bit a la izquierda
btfss rota,4 ;probar si el quinto bit se enciende
goto hol ;si no ha llegado al quinto bit enciende el LED que sigue
goto otra ;si ya encendio el ultimo LED se inicia nuevamente la secuencia
retardo movlw valor1 ;se carga el registro W con el numero valor1, es decir
;con el numero 30 que se asigno al principio a valor1
movwf reg1 ;se traslada ese numero al registro reg1
tres movlw valor2 ;se carga W con el numero valor2 (40)
movwf reg2 ;se traslada ese numero al registro reg2
dos movlw valor3 ;se carga W con valor3
movwf reg3 ;se carga reg3 con 50
uno decfsz reg3 ;se decrementa el registro reg3 y si el valor es cero
goto uno ;se salta a la siguiente instruccion, sino, se continua
;decrementandolo
decfsz reg2 ;igual que el anterior
goto dos
decfsz reg1 ;igual al anterior
goto tres
retlw 00 ;termina la subrutina retardo y vuelve al programa principal
end
;————————————————————————
; Fusibles de programacion
; Osc XT
; Watchdog OFF
; Code protect OFF
; Power-Up-Timer ON
; Micro. PIC16C84
;=========================================================================
esta es la modificación que le hice para los 8 leds del puerto b pero no sale
;Este programa maneja una secuencia de 4 LED’s.
list p=16c84
;———————————————————————-
ptob equ 06 ;el puerto b est en la direcci¢n 06 de la memoria RAM
rota equ 0a
reg1 equ 0b ;se asignan nombres a algunos registros de prop¢sito general
reg2 equ 0c
reg3 equ 0d
valor1 equ 30 ;se asignan nombres a algunas constantes
valor2 equ 40
valor3 equ 50
;———————————————————————–
reset org 0 ;el vector de reset es la direccion 00
goto inicio ;se salta al inicio del programa
org 7 ;el programa empieza e la direccion de memoria 7
inicio movlw 00 ;se carga el registro W con 0
tris ptob ;se programan los pines del puerto b como salidas
otra movlw 01 ;se carga el registro W con el valor 01
movwf rota ;se dispone el dato para la rotacion
hol movf rota,0 ;mueve el contenido del registro rota a W
movwf ptob ;enciende el LED correspondiente
call retardo ;se mantiene el LED encendido por un momento
rlf rota ;desplaza el contenido del registro un bit a la izquierda
btfss rota,7 ;probar si el quinto bit se enciende
goto hol ;si no ha llegado al quinto bit enciende el LED que sigue
goto otra ;si ya encendio el ultimo LED se inicia nuevamente la secuencia
retardo movlw valor1 ;se carga el registro W con el numero valor1, es decir
;con el numero 30 que se asigno al principio a valor1
movwf reg1 ;se traslada ese numero al registro reg1
tres movlw valor2 ;se carga W con el numero valor2 (40)
movwf reg2 ;se traslada ese numero al registro reg2
dos movlw valor3 ;se carga W con valor3
movwf reg3 ;se carga reg3 con 50
uno decfsz reg3 ;se decrementa el registro reg3 y si el valor es cero
goto uno ;se salta a la siguiente instruccion, sino, se continua
;decrementandolo
decfsz reg2 ;igual que el anterior
goto dos
decfsz reg1 ;igual al anterior
goto tres
retlw 00 ;termina la subrutina retardo y vuelve al programa principal
end
;————————————————————————
; Fusibles de programacion
; Osc XT
; Watchdog OFF
; Code protect OFF
; Power-Up-Timer ON
; Micro. PIC16C84
;=========================================================================
de antemano gracias y espero tu ayuda
[/cita][/cita]
Disculpa..pero la protoboard la conectaste a la compu a traves de algun puerto…? y si es asi cual fue?
La protoboard en si no se conecta a nada, lo que se conecta es el PIC.
El PIC lo he conectado al puerto serie del PC a traves de un enlace de infrarrojos, aunque lo mas habitual y sencillo es hacerlo a través de un integrado bastante común llamado MAX232 que convierte los niveles CMOS del PIC en niveles TTL que son los que usa el puerto serie del PC.
nescesito hacer una practica en un protoboard de un sumador de 2 bitz+2 +1 del signocomo lo puedo hacer