Está en la página 1de 8

http://www.comohacerturobot.

com Programacin de un PIC16F84


Cdigo fuente (.asm) En este primer paso, escribiremos nuestro codigo fuente. Un codigo fuente es definir una serie de comportamientos con palabras o codigos que son mas cercanos a nosotros, para ello usaremos El ensamblador, que es uno de esos lenguajes de programacin para desarrollar cdigo fuente en una aplicacin con PIC. El archivo de cdigo fuente puede crearse y editarse con cualquier editor de texto ASCII tipo NotePad de Windows, renombrando el fichero de [.txt] a [.asm]. No obstante un codigo fuente debe seguir las siguientes pautas bsicas: Cada lnea del codigo fuente puede contener cuatro tipos de informacin: Etiquetas, Operacin, Operandos y Comentarios. El orden y posicin de stos es importante, sobre todo y para facilitar la depuracin, se recomienda que la etiqueta se coloque en la primera columna y que los mnemnicos se coloquen una o dos columnas ms all para que todo cuadre, de este modo sera mas facil su lectura. Los operandos siguen al cdigo mnemotcnico. Por ultimo los comentarios pueden seguir a los operandos, mnemnicos o etiquetas, y pueden comenzar en cualquier columna. La anchura maxima de una columna es de 255 carcteres.
Formatted: Font: (Default) Times New Roman, 12 pt

Un espacio en blanco debe separar la etiqueta del cdigo mnemotcnico, y tambin un espacio en blanco deba separar el cdigo mnemotcnico y los operandos. Los operandos mltiples deben separarse por comas. Nota:Se considera como un espacio en blanco uno o ms espacios o tabulaciones

Formatted: Font: (Default) Times New Roman, 12 pt

La imagen de arriba muestra un fragmento de Codigo Fuente, poco a poco voy a ir mostrando las diferentes instrucciones que forman el repertorio del PIC16F84. Para ello primero voy a aclarar una serie de trminos bsicos que sern los que utilice de aqui en adelante. Etiquetas Una etiqueta se usa para representar una lnea o grupo de cdigo, o un valor constante. Se necesitan para las instrucciones de salto. Las etiquetas deben empezar en la columna 1. Pueden terminar en "dos puntos" (:), espacio, tabulacin o fn de lnea. Las etiquetas deben comenzar por un carcter alfabtico o por un guin bajo (_) y pueden contener carcteres alfanumricos como el guin bajo (_) y el signo de interrogacin (?). Mnemnicos, directivas y macros: Es el nombre de la instruccin, el que nosotros podemos "ordenar" al microcontrolador que haga. Hay que escribirlo tal cual es, sin cambiarlo. Por ejemplo, suma (add), ir a (goto) o movimientos (movwf). A diferencia de las etiquetas que creamos nosotros mismos, los mnemnicos los proporciona el lenguaje ensamblador que se utilice. Los mnemnicos no son en ningn caso sensibles a maysculas/minsculas. Las directivas son rdenes del ensamblador que aparecen en el cdigo fuente pero que normalmente no son traducidas directamente a cdigos de operacin. Se utilizan para controlar al ensamblador: sus entradas, salidas y asignacin de datos. Las directives no son en ningn caso sensibles a maysculas/minsculas.

Las macros son conjuntos de instrucciones y directivas definidas por el usuario que se insertarn en el cdigo fuente al realizar el ensamblado siempre que la macro se invoque (ver directiva macro). Los mnemnicos de las instrucciones del ensamblador, las directivas y las llamadas a macros deben colocarse de la segunda columna en adelante. Si hay una etiqueta en la misma lnea, las instrucciones deben separarse de esa etiqueta por "dos puntos", o por uno o ms espacios o tabulaciones. Operandos: son los parametros que necesita la instruccin para ejecutarse. Al estudiar una instruccin se dice el tipo Parmetros que admite, que habr que sustituir por los valores reales. Parmetro f: representa un registro de la memoria de datos, operando origen de una instruccin Parmetro d: representa un registro, operando destino de una operacin, con dos posibles valores. si se sustituye por un 0 significa que el registro de destino es el registro de trabajo W y si se sustituye por un 1 que es el mismo operando de origen de la instruccin Parmetro b: representa un bit (valores de 0 a 7) de un registro. Parmetro k: representa valor literal, es decir, un valor numrico que acompaa al Mnemnico de la instruccin. RESUMEN DE TODAS LAS INSTRUCCIONES DEL PIC Bueno, como tampoco quiero escribir un libro, voy a poner unas tablas en las que vienen todas las instrucciones del PIC16F84 para que mas o menos el que la necesite pueda ver las posibilidades de este lenguaje.

Formatted: Font: (Default) Times New Roman, 12 pt

Formatted: Font: (Default) Times New Roman, 12 pt

La instruccin movlw La instruccin"mov" es tpica en todos los procesadores ya que siempre es necesario el movimiento de datos de un sitio a otro, bien sea valores de resultado, valores entre registros o valores inmediatos. Consta de dos operandos donde el 1 es transferido o movido al 2. se comporta igual que una copia de datos, ya que el dato no se borra de la fuente. Hay tres tipos de instrucciones "mov", las cuales se diferencian en los operandos fuente y destino. En el caso de la movlw el origen es un valor literal y el destino es el registro de trabajo W. Un ejemplo, se pretende mover el valor literal 5 al registro de trabajo W y continuacin el valor literal 3 a ese mismo registro W, la figura adjunta representa el valor que toma W tras la ejecucin de cada una de las instrucciones. Al principio el valor de W ser indeterminado, lo cual se representa mediante "x". Tras la primera instruccin se habr cargado en W el valor 5, que en cdigo binario corresponde como "101". como el registro del PIC tiene 8 bits el resto se rellena con 0 a la izquierda. Tras la segunda instruccin el valor de W varia, borrando el primer valor y pasando a ser 00000011 que es 3 en decimal. La instruccin movwf La segunda variante de la instruccin"mov". En ella el dato contenido en el registro de trabajo W es transferido al registro f, que aparece como Parmetro, sin que por ello se borre de W. solo hay que indicar cual es el operando destino ya que el fuente, W viene implcito en el cdigo de instruccin Un ejemplo, esta vezble queremos cargar el valor del registro culla direccin es 0E, y que vamos a llamar OPERANDO, con el valor decimal 8. Para ello tenemos que emplear las dos instrucciones que ya conocemos movwf y movlw. En la figura se muestran los pasos a realizar, al comienzo los registros tienen valor indeterminado, X e Y. lo de d'8' es por que la ALU si no especificamos nada toma como defecto que los datos estn en cdigo hexadecimal de 0 a f si queremos especificar otro cdigo tendremos k poner el valor entre comas simples y precedido de la letra que implique el cdigo La instruccin movf Esta es la tercera y ultima variante de la instruccin"mov". En este caso en contenido del registro f, que es el operando fuente, puede transferirse al registro de trabajo W, o al mismo registro f, dependiendo del valor "d". Es necesario especificar tanto la fuente como el destino. Esta operacin afecta al flag o sealizador Z. El flag Z es un bit del registro de estado que se pone a 1 si el resultado de la operacin a sido 0. La instruccin bsf Esta instruccin pone a 1 un bit de un registro. El nombre o posicin del registro dentro de la memoria de datos, ser suministrado como primer Parmetro de la instruccin, y el numero de bit como segundo Parmetro Tanto uno como otro comienzan a contarse desde 0. La instruccin bcf Esta instruccin realiza justo la operacin contraria a la "bsf"; pone a 0 un bit de un registro. La sntesis es la misma que la anterior instruccin

La instruccin addlw Suma un valor literal al contenido del registro de trabajo W, y el resultado lo deja en este ultimo. La instruccin INCF Esta instruccin incrementa en una unidad el contenido de un registro. El resultado se puede llevar al registro de trabajo W en lugar de al registro de origen, con lo k este ultimo no se modificara. Esto depende, como siempre del valor del Parmetro d. La instruccin DECF Con esta instruccin se decrementa el valor de un registro y llevar el resultado a ese mismo registro o al registro de trabajo W. Su flag asociado tambin es el Z, que se pondr a 1 cuando el registro en cuestin llegue a 0. La instruccin GOTO Esta es la instruccin de salto incondicional, un salto a otra parte del programa (subrutinas). La Instruccin BTFSC Esta es una instruccin de salto condicional, en caso de que un bit sealado del registro tenga valor 0 la instruccin siguiente es ignorada y en caso contrario no. La instruccin BTFSS Es la anloga a la anterior. Siguiendo de nuevo sus siglas veremos que solo cambia la ultima letra, esta instruccin (t) testea un bit (b) de un registro (f) y salta (s) si es uno (s) set en ingles puesta a 1. Ejem: btfss ESTADO Z goto ETIQUETA 1 goto ETIQUETA 2 La instruccin DECFSZ Esta instruccin (dec) decrementa un registro (f) y salta (s) si el resultado es cero (z). El resultado del decremento puede ser guardado en el mismo registro que se toma de base para dicho decremento, o el registro de trabajo W, en cullo caso el registro no varia.

También podría gustarte