Aprendiendo a programar el PIC 12f629

Hola compañero, recurro a ti con la esperanza de aprender a hacer funcionar al "enano" éste. El caso es que estoy intentado escribir un programa que (y para comenzar) haga parpadear un led (control de tiempos) conectado a la línea 2 del único puerto que tiene el 12f629 y no lo consigo. El problema es que no encuentro información didáctica y/o bibliografía adecuada para aprender a manejar este micro. Tampoco encuentro ejemplos de programas escritos en lenguaje ensamblador para este PIC, que me sirvan de referencia. Bibliografía para aprender a manejar el 16f84 hay para "parar un tren", pero para aprender sobre el "enano" en cuestión, no hay casi nada. Si me pudieras ilustrar con un ejemplo de programa en ensamblador para hacer parpadear un led o para controlar los tiempos controlando el TMR0 en este micro, te lo agradecería enormemente y si conoces de alguna publicación o bibliografía centrada en el manejo de este tipo de controladores PIC, también me sería de inestimable ayuda.
Esperando tu ayuda te doy las gracias por adelantado compañero.
Un saludo.

1 Respuesta

Respuesta
1
Mierda, he visto como queda el programa y no esta del todo mal, pero he visto así de primeras un par de fallos, el primer GOTO es con O no GOT0 con cero. Y he visto un ORG 004 q en tu caso debe ser ORG 003 yo utilizo el vector 4 por las características especiales de mi cacharro.
Lo primero que quiero hacerte saber es que no hay gran diferencia entre aprender tal o cual micro. En el fondo todos hacen lo mismo, todos funcionan más o menos igual. En cuanto tengas nociones básicas de un micro las puedes extrapolar a otro. Yo aprendí ensamblador con el pic16 pero pase enseguida a dar arquitectura con el 8051, luego pase a programar en c y en mi primer proyecto tuve que utilizar un motorola hcs12. Cada uno es totalmente diferente a los otros, pero son muy parecidos. Lo importante es tener una noción sobre su funcionamiento.
Tu principal ayuda debe ser siempre el datasheet del micro y la información que te da el fabricante. En concreto microchip trabaja bastante bien, bajate la información de ese micro de www.microchip.com.
Si lo que ocurre es que nunca has programado un micro, quizá el datasheet sea un poco "heavy". Trata de encontrar un tutorial para pic16 (los hay a patadas) e intenta "traducir" el ensamblador y los accesos a periféricos (timer, puertos, etc) de pic16 a pic12. Ya veras como no es muy diferente. No conozco el pic12 pero no creo que tenga un conjunto de instrucciones muy diferente al pic16, quizá un poco más reducido, quizá menos periféricos.
Sobre libros no te puedo dar gran consejo, porque nunca los he usado, siempre me enseñaron con datasheet. Pero se que hay un par sobre pic de un tal angulo. No se como serán.
Respecto de a lo del programa, es un problema clásico de micros, es siempre el primer programa que tienes que hacer. En foros especializados seguro que encuentras a alguno que te pueda hacer este programa con los ojos cerrados. Yo voy a intentar copiarte el programa para un pic16, no se como se vera en esta pantallita, y lo tendrás que traducir a pic12, espero que te sirva para algo:
;*************************************************************************************
;ejemplo3.asm
;LED intermitente en A0 (por interrupcion )
;*************************************************************************************
;Registros y Constantes propios del micro
INCLUDE "P16F74.INC" ;Fichero con los registros y constantes del micro
;*************************************************************************************
;Registros particulares del programa
SAVEPCL EQU 20
SAVEFSR EQU 21
SAVEST EQU 22
SAVEW EQU 23
;*************************************************************************************
;Asignacion de puertos
P_LED EQU PORTA ;Puerto de LED
b_LED EQU 0 ;Posicion del LED en el puerto
;*************************************************************************************
;Inicio de programa. Direccion de reset
;*************************************************************************************
ORG 00 ;direccion de reset
GOT0 PROGPAL ;salto al programa principal
;*************************************************************************************
;atencion a interrupciones.Direccion de interrupcion
ORG 004 ;direccion de interrupcion
INTERR: ;Salvado general de registros
MOVWF SAVEW ;el registro w
MOVF STATUS,W ;el status
CLRF STATUS
MOVWF SAVEST
MOVF FSR, W ;el registro indirecto FSR
MOVWF SAVEFSR
MOVF PCLATH, W ;el registro PCLATH
MOVWF SAVEPCL
CLRF PCLATH ;se trabajaran las interrupciones en primnera página
BTFSS INTCON, T0IF ;Comprueba si es interrupcion por TMR0
GOTO RETINT ;si no lo es, retorna recuperando registtros
;Caso que hay interrupción por TMR0
MOVLW -d'10' ;Se reinicializa contador TMR0
MOVWF TMR0
BCF INTCON, T0IF ;Se resetea interrupcion para prox. Vez
BTFSS p_LED,b_LED ;¿esta encendido el LED?
GOTO INT2 ;si, pasar a apagar
BCF p_LED,b_LED ;no, encenderlo
GOTO RETINT ;Retorna recuperando registros
INT2: BSF p_LED,b_LED ;Apagar LED
RERINT: ;Recuperación general de registros y retorno
MOVF SAVEPCL, W ; el registro PCLATH
MOVWF PCLATH
MOVF SAVEFSR, W ;El registro indirecto FSR
MOVWF FSR
SWAPF SAVEW, F ;El registro W
RETFIE
;**********************************************************************************
;Programa principal
;**********************************************************************************
Programa principal
;*****************Inicializaciones
CALL INITPA
Muchas gracias compañero, el tutorial del 16F84A ya lo tenía y lo tengo estudiado, de hecho tengo experiencia con este micro. He hecho lo que me has dicho y ya he conseguido programar un pic 12c675, mi problema ahora es que, sólo lo he conseguido grabar la primera vez, a partir de ahí ya me ha sido imposible repetir la experiencia, no entiendo qué es lo que pueda estar pasando. La placa grabadora PICBURNER la tengo conectada al puerto serie del PC y cuando intento grabar el PIC con el software

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas