Sunteți pe pagina 1din 16

1. Definicin de microcontrolador.

Es una computadora completa contenida en un circuito integrado

2. El microcontrolador PIC 16F84


Repertorio de 35 Instrucciones. Todas las instrucciones se ejecutan en un solo ciclo excepto las de salto que necesitan dos. Versiones de 4 MHz (PIC16F84-04) y 10 MHz (PIC16F84-10). Memoria de programa Flash de 1 K x 14 bits. Memoria de datos RAM de 68 bytes. Memoria de datos EEPROM de 64 bytes. 15 registros de funciones especiales. Pila con 8 niveles de profundidad. Modos de direccionamiento directo, indirecto y relativo. 4 fuentes de interrupciones: A travs del pin RB0/INT. Desbordamiento del temporizador TMR0. Interrupcin por cambio de esto de los pins 4:7 del Puerto B. Completada la escritura de la memoria EEPROM. 1.000.000 de ciclos de borrado/escritura de la memoria EEPROM. 40 aos de retencin de la memoria EEPROM. 13 pins de E/S con control individual de direccin. Contador/Temporizador TMR0 de 8 bits con divisor programable. Power-on Reset (POR). Power-up Timer (PWRT). Oscillator Start-up Timer (OST). Watchdog Timer (WDT). Proteccin de cdigo. Modo de bajo consumo SLEEP. Puede operar bajo 4 modos diferentes de oscilador. Programacin en serie a travs de dos pins. Tecnologa de baja potencia y alta velocidad CMOS Flash/EEPROM. Rango de alimentacin: 2.0 a 6.0 V.

2.1. Arquitectura interna.


Las altas prestaciones de los microcontroladores PIC derivan de las caractersticas de su arquitectura. Estn basados en una arquitectura tipo Harvard que posee buses y espacios de memoria por separado para el programa y los datos, lo que hace que sean ms rpidos que los microcontroladores basados en la arquitectura tradicional de Von Neuman. Otra caracterstica es su juego de instrucciones reducido (35 instrucciones) RISC, donde la mayora se ejecutan en un solo ciclo de reloj excepto las instrucciones de salto que necesitan dos. Posee una ALU (Unidad Aritmtico Lgica) de 8 bits capaz de realizar operaciones de desplazamientos, lgicas, sumas y restas. Posee un Registro de Trabajo (W) no direccionable que usa en operaciones con la ALU Dependiendo de la instruccin ejecutada, la ALU puede afectar a los bits de Acarreo , Acarreo Digital (DC) y Cero (Z) del Registro de Estado (STATUS). La pila es de 8 niveles. No existe ninguna bandera que indique que est llena, por lo que ser el programador el que deber controlar que no se produzca su desbordamiento. Este microcontrolador posee caractersitcas especiales para reducir componentes externos con lo que se reducen los costos y se disminuyen los consumos. Posee 4 diferentes modos de oscilador, desde el simple circuito oscilador RC con lo que se disminuyen los costos hasta la utilizacin de un oscilador a cristal. En el modo SLEEP el consumo se reduce significativamente y puede despertarse al microcontrolador utilizando tanto interrupciones internas como externas y seal de reset. Adems posee la funcin Watchdog Timer (Perro Guardian) que protege al micro de cuelgues debido a fallos software que produzcan bucles infinitos. Descripcin de los pins

2.2. Puertos de Entrada/Salida.


Dispone de dos puertos de E/S. El puerto A con 5 lneas de la RA0 a la RA4, en la que hay que distinguir la A4 o T0CKI (Timer 0 Clock Input) que est compartida con la entrada para el Timer 0 (TMR0) a travs de un trigger Schmitt y que cuando se configura como salida es de colector abierto, por lo que debe colocarse una resistencia de polarizacin. El puerto B dispone de 8 lneas de E/S que van desde la RB0 a la RB7 (la lnea RB0 o INT es compartida con la entrada de interrupcin externa). Adems, las lneas RB4 a RB7 puede programarse una interrupcin por cambio de estado de cualquiera de estas lneas. Cuando se produce una interrupcin de este tipo, para lo cual las lneas deben estar adems programadas como entradas, el hecho de que cualquier lnea de RB4 a RB7 cambie de estado produce una interrupcin (ver descripcin del registro INTCON e Interrupciones). El valor de la patita en modo entrada es comparado con el valor almacenado en la bscula durante la ltima lectura del Puerto B. Los cambios en las patitas se detectan realizando una operacin OR para la generacin de una interrupcin por cambio de estado. Esta interrupcin puede despertar "wake up" al icrocontrolador del modo de reposo SLEEP. El usuario debe borrar la interrupcin en la Rutina de Servicio de Interrupcin RSI de una de las siguientes maneras: Borrando la bandera bit 3 de INTCON (RBIE). Leyendo o escribiendo el PORTB y luego borrand o el bit RBIF. Esto finaliza la condicin mismacht y permite que se borre RBIF.

3. Organizacin de la Memoria.
Las altas prestaciones de los microcontroladores PIC derivan de las caractersticas de su arquitectura. Estn basados en una arquitectura tipo Harvard que posee buses y espacios de memoria por separado para el programa y los datos, lo que hace que sean ms rpidos que los microcontroladores basados en la arquitectura tradicional de Von Neuman.

3.1. Memoria de programa.


La memoria de programa est organizada con palabras de 14 bits con un total de 1 K, del tipo EEPROM, que durante el funcionamiento es de solo lectura. Slo se ejecutar el cdigo contenido en esta memoria, pudiendo almacenar en ella una cantidad limitada de datos como parte de la instruccin RETLW. En una sola palabra se agrupa el cdigo de la instruccin y el operando o su direccin.

3.2. Memoria de Datos


Memoria de datos Est organizada en dos pginas o bancos de registro. Cada banco se divide a su vez en dos reas. La primera es la de RFS (Registros de Funciones Especiales) que controlan el funcionamiento del dispositivo. Estos se emplean para el control del funcionamiento de la CPU y de los perifricos. El segundo rea (68 bytes SRAM) es la de RGP (Registros de Propsito General), y puede accederse a ellos tanto directa como indirectamente haciendo uso del registro FSR. Estas dos reas estn divididas en dos pginas, la pgina 0 y la pgina 1. Para cambiar de pgina se utiliza 1 bit del registro STATUS (RP0). Para direccionar la memoria de datos se emplean dos modos de direccionamiento, el directo y el indirecto. En el direccionamiento directo, los 7 bits de menos peso del cdigo OP de la instruccin proporcionan la direccin en la posicin de la pgina, mientras que los bits RP1 y RP0 de STATUS seleccionan la pgina o banco. En el direccionamiento indirecto el operando de la instruccin hace referencia al registro IDNF, que ocupa la posicin 00h del rea de datos. Se accede a la posicin que apunta el registro FSR 04h del banco 0. Los 7 bits de menos peso de FSR seleccionan la posicin y su bit de ms peso, junto con el bit IRP del registro de estado, seleccionan la pgina.

4.- Registros 4.1.- Contador de programa


Este registro, normalmente denominado PC, es totalmente equivalente al de todos los microprocesadores y contiene la direccin de la prxima instruccin a ejecutar. Se incrementa automticamente al ejecutar cada instruccin, de manera que la secuencia natural de ejecucin del programa es lineal, una instruccin despus de la otra. Algunas instrucciones que llamaremos de control, cambian el contenido del PC alterando la secuencia lineal de ejecucin. Dentro de estas instrucciones se encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programa salte a cualquier posicin de la memoria. Otras instrucciones de control son los SKIP o salteos condicionales, que producen un incremento adicional del PC si se cumple una condicin especifica, haciendo que el programa saltee, sin ejecutar, la instruccin siguiente. El PC es un registro de 9 bits en los 16C54/55, 10 bits en el 16C56, y 11 bits en el 16C57, lo que permite direccionar respectivamente 512, 1024 o 2048 posiciones de memoria de programa. Al resetearse el microprocesador, todos los bits del PC toman valor 1, de manera que la direccin de arranque del programa es siempre la ultima posicin de memoria de programa. En esta posicin se deber poner una instruccin de salto al punto donde verdaderamente se inicia el programa.

A diferencia de la mayora de los microprocesadores convencionales, el PC es tambin accesible al programador como registro de memoria interna de datos, en la posicin de 02. Es decir que cualquier instruccin comn que opere sobre registros puede ser utilizada para alterar el PC y desviar la ejecucin del programa. El uso indiscriminado de este tipo de instrucciones complica el programa y puede ser muy peligroso, ya que puede producir comportamientos difciles de predecir. Sin embargo, algunas de estas instrucciones utilizadas con cierto mtodo, pueden ser muy tiles para implementar poderosas estructuras de control tales como el goto computado. Como el microprocesador opera con datos de 8 bits, y la memoria de datos es tambin de 8 bits, estas instrucciones solo pueden leer o modificar los bits 0 a 7 del PC.

4.2.- Registros del SFR


INDF.- (Indirect File) que ocupa la posicin 00 no tiene existencia fsica, por lo que no se podr acceder a l. En realidad este registro sirve nicamente para especificar la utilizacin del direccionamiento indirecto junto con el registro FSR. TMR0.- (Timer 0) almacena el valor del contador TMR0, que como ya sabemos, est funcionando continuamente e incrementando el valor que tiene almacenado. Las opciones que controlan este contador residen en el registro OPTION.

El registro TMR0 se incrementa en una unidad con cada impulso de reloj seleccionado mediante el registro OPTION. Cada vez que llega al valor FF, vuelve a 00 generando una interrupcin, si se ha autorizado, y contina su ciclo indefinidamente. El registro TMR0 se puede leer o escribir directamente con cualquier instruccin, con el fin de conocer su posicin actual, o para inicializarlo en un estado determinado. Es importante saber que despus de cualquier escritura en este registro, es necesario un retardo de dos ciclos de instruccin para que se retome la incrementacin. Este retraso es independiente de la fuente de reloj usada. Las instrucciones concernidas son MOVF TMR0 o CLRF TMR0. Para comprobar el paso por cero sin inferir en el desarrollo regular del recuento, es aconsejable utilizar, por ejemplo, una instruccin MOVF TMR0,W, que no hace mas que una lectura. El reloj interno deja de funcionar en el modo SLEEP, por lo que no se puede contar con sus interrupciones en este modo ni por consiguiente, que salga de este modo de funcionamiento por medio de dicha interrupcin. Obsrvese que todas las instrucciones que escriben en el TMR0 ponen a cero al prescaler (divisor), cuando ste est asignado al temporizador.

FSR.- El contenido del FSR se utiliza para el direccionamiento indirecto junto con el registro INDF. Este registro contiene 8 bits. PORTA y PORTB.- Cuando vimos los puertos se coment el uso de estos registros que contienen los niveles lgicos de las patillas de E/S. Cada bit se puede leer o escribir segn la patilla correspondiente se haya configurado como entrada o como salida. Conviene recordar que cualquier lnea puede funcionar como entrada o como salida. Sin embargo, si acta como entrada la informacin que se introduce no se memoriza, por lo que la informacin debe ser mantenida hasta que sea leda. Si la lnea acta como salida, el bit que procede del bus de datos se guarda en la bscula, con lo que la informacin que ofrece esta patilla permanece invariable hasta que se reescriba este bit. EEDATA.- (Datos de EEPROM) guarda el contenido de una posicin de la memoria EEPROM de datos antes de su escritura o despus de su lectura, segn leamos o escribamos en ella. Para leerla se sigue un proceso especial que se comentar mas adelante. Como ya sabemos la memoria EEPROM es bastante lenta, dato que tendremos en cuenta cuando accedamos a ella para escribirla, pues tarda unos 10 ms en completar el proceso EEADR.- El registro EEADR (Direccin de EEPROM) guarda la direccin de la posicin de memoria EEPROM cuando queramos acceder a ella, bien para su lectura, o bien para su escritura. El igual

que con el registro anterior, veremos su uso ms a fondo cuando lleguemos a las instrucciones que lo utilizan. El registro EEADR puede direcconar como mximo 256 bytes de los cuales slo los 64 primeros estn disponibles, con lo que los dos bits de mayor peso han de tener el valor de '0'. PCLATH.- Los 5 bits de mayor peso del PC que no pueden leerse ni escribirse directamente proceden del registro PCLATH en la direccin 0Ah vy 8Ah. PCL.-L os 8 bits de menor peso del PC los proporciona el registro PCL (02h) y a diferencia de la mayora de los microprocesadores convencionales, es tambin un registro accesible al programador como registro de memoria interna de datos. Es decir que cualquier instruccin comn que opere sobre registros puede ser utilizada para alterar el PCL y desviar la ejecucin del programa. INTCON.- Este registro contiene varios bits de seleccin de fuentes de interrupcin, el bit de activacin global de interrupciones y varios flag que indican la causa de una interrupcin. Sirve para el control global de las interrupciones y para indicar la procedencia de algunas de ellas, gracias a los bits de estado. Se dispone de cuatro potenciales recursos de interrupcin: Una fuente externa a travs del pin RB0/INT. El desbordamiento del temporizador 0 (TMR0). Un cambio de estado en los pines RB4 a RB7. Programacin de la EEPROM de datos.

OPTION.- El registro OPTION (o registro de opciones) se emplea para programar las opciones del temporizador TMR0, el tipo de flanco con el que se detecta una interrupcin y la activacin de las resistencias de polarizacin del puerto B. Ocupa la posicin 81h de la pgina 1 del banco de registros. Debe escribirse usando la instruccin especial OPTION. Esta instruccin carga el contenido de W en el registro OPTION. EECON1.- Este registro contiene configuraciones importantes acerca de la escritura y la lectura de la EEPROM de datos. EECON2.- Este registro no est implementado fsicamente, por lo cual no se puede leer. Tan slo sirve para un proceso de proteccin de escritura que consiste en copiar en l unos datos especficos, con el fin de evitar que un programa por error pueda programar la EEPROM, manipulando simplemente los bits del EECON1.

4.3 Registros relacionados con los puertos


Cualquier lnea puede funcionar como entrada o como salida. Sin embargo, si acta como entrada la informacin que se introduce no se memoriza, por lo que la informacin debe ser mantenida

hasta que sea leda. Si la lnea acta como salida, el bit que procede del bus de datos se guarda en la bscula, con lo que la informacin que ofrece esta patita permanece invariable hasta que se reescriba este bit.

Los bits de cada puerto se configuran mediante los bits correspondientes de dos registros especiales de control : Registro de Datos denominados PORTA PORTB: Se pueden leer o escribir segn que el puerto correspondiente se utilice como entrada o como salida. Registro de Control denominado TRISA TRISB: En los registros de Control se programa el sentido de funcionamiento de cada una de las lneas de E/S. Colocando un "0" en el correspondiente bit del registro TRISA TRISB, la lnea queda programada como salida mientras que colocando un "1" la lnea queda programada como entrada. Por ejemplo, si ponemos un 0 en el bit 3 del registro TRISA la patilla RA3 ser una salida y si ponemos un 1 en el bit 4 del registro TRISB entonces la patilla RB4 ser una entrada.

Los Puertos A y B (PORTA y PORTB) se corresponden con las posiciones 5 y 6 del rea de datos. Cuando se produce un reset, todos los bits de los registros TRIS pasan a tener el valor 1 y todas las lneas de E/S actan como entrada por evidentes motivos de seguridad para evitar daos irreparables. Todas las patillas de E/S que no se empleen deben ser llevadas a +5v, regla de las entradas CMOS, preferiblemente a travs de una resistencia para evitar que si por error se configurasen como salidas puedan darse problemas si presentan un estado bajo.

4.4. Registro PCL


Se utiliza para direccionar hasta 8K palabras, separadas en bancos de 2K, del programa del usuario que se encuentran almacenadas en la memoria ROM; Este contador de programa es de 13 bits de ancho. El byte de menos peso de la direccin se guarda en el registro PCL, situado en la posicin 0x02 del banco 0, mientras los 5 bits de ms peso se guardan en los 5 bits de menos peso del registro PCLATH (direccin 0x08).

4.5. Registro de trabajo W


Se emplea para programar las opciones del temporizador TMR0, el tipo de

flanco con el que se detecta una interrupcin y la activacin de las resistencias de polarizacin del puerto B. Ocupa la posicin 81h de la pgina 1 del banco de registros. Debe escribirse usando la instruccin especial OPTION. Esta instruccin carga el contenido de W en el registro OPTION.

RBPU (RB Pull Up) Conexin de las resistencias de polarizacin del Puerto B. Se conectan todas cuando el puerto B actua como entrada. 1 = Todas las resistencias son desconectadas 0 = Las resistencias se activan de forma individual. INTDEG (INTerrupt EDGe) Selecciona el tipo de flanco para la interrupcin. Este bit indica el tipo de flanco de la seal externa que ha de provocar una interrupcin en la patita RB0/INT. 1 = La interrupcin es producida por el flanco ascendente. 0 = La interrupcin es producida por el flanco descendente. T0CS (Timer 0 Signal Source) Fuente de reloj para el TMR0. 1 = TMR0 se usa en modo contador de los pulsos introducidos a travs de A4/T0CKI 0 = TMR0 se usa en modo temporizador haciendo uso de los pulsos de reloj internos (Fosc/4). T0SE (Timer 0 Signal Edge) Tipo de flanco activo del T0CKI (patilla A4/T0CKI). 1 = El TMR0 se incrementa con el flanco descendente. 0 = El TMR0 se incrementa con el flanco ascendente. PSA (PreScaler Assignement) Como su nombre indica, se usa para la asignacin del divisor de frecuencias 1 = El divisor de frecuencia se asigna al WDT. 0 = El divisor de frecuencia se asigna a TMR0. PS0, PS1 y PS2 (Prescaler Rate Select Bits) Asigna la tasa del valor del divisor de frecuencias y difiere dependiendo del predivisor que se haya asignado al TMR0 o al WDT.

4.6. Registro de Estado o de STATUS.


El registro de Estado (STATUS) contienen varios bits de estado de la unidad central, el estado aritmtico de la ALU, el estado del reset y un par de bits de seleccin de pgina denominados RP1 y RP0. Ocupa la posicin 03h del banco 0 y la 83h del banco 1.

IRP: Register Bank Select. No se emplea en el PIC16F84. RP0 y RP1: Register Bank Select. Seleccin de pgina o banco de la memoria con direccionamiento directo. Cada pgina contiene 128 bytes. En el PIC16F84 slo se usa RP0, RP1 debe mantenerse a 0. TO: Time Out 1 = Tras conectar la alimentacin Vdd o ejecutar CLRWDT o SLEEP. 0 = Desbordamiento del Perro Guardin WDT. PD: Power Down 1 = Tras conectar la alimentacin Vdd o ejecutar CLRWDT. 0 = Al ejecutar la instruccin SLEEP. Z: Cero 1 = El resultado de una operacin aritmtica o lgica es 0. 0 = El resultado es distinto de 0. DC (Digit Carry) Acarreo en el 4 bit de menos peso. C (Carry) Acarreo en el 8 bit. Es el bit de acarreo en operaciones de suma AADWF y ADDLW y sustraccin SUBWF y SUBLW. Tambin los emplean las instrucciones RLF y RRF de rotacin de bits. 1 = Acarreo en la suma en el bit de mayor peso. 0 = Acarreo en la resta y no en la suma.

5. Repertorio de instrucciones. 5.1. Instrucciones de Carga

5.2. Instrucciones de Bit

5.3. Configuracin de Puertos.


Cualquier lnea puede funcionar como entrada o como salida. Sin embargo, si acta como entrada la informacin que se introduce no se memoriza, por lo que la informacin debe ser mantenida hasta que sea leda. Si la lnea acta como salida, el bit que procede del bus de datos se guarda en la bscula, con lo que la informacin que ofrece esta patita permanece invariable hasta que se reescriba este bit. Los bits de cada puerto se configuran mediante los bits correspondientes de dos registros especiales de control: se utilice como entrada o como salida se programa el sentido de funcionamiento de cada una de las lneas de E/S. Colocando un "0" en el correspondiente bit del registro TRISA TRISB, la lnea queda programada como salida mientras que colocando un "1" la lnea queda programada como entrada. Por ejemplo, si ponemos un 0 en el bit 3 del registro TRISA la patilla RA3 ser una salida y si ponemos un 1 en el bit 4 del registro TRISB entonces la patilla RB4 ser una entrada.

5.4. Instrucciones de Suma


DECF f,d Decrementa f en uno (le resta uno). Resultado segn d. DECFSZ f,d Decrementa f y se salta la siguiente instruccin si el resultado es cero. Resultado segn d. INCF f,d Incrementa f en uno (le suma uno). Resultado segn d. INCFSZ f,d Incrementa f y se salta la siguiente instruccin si el resultado es cero (cuando se desborda un registro vuelve al valor 00h). Resultado segn d.

5.5. Instrucciones para incrementar y decrementar.

5.6. Instrucciones Lgicas.

5.7. Instrucciones de Salto.

6.- LENGUAJE ENSAMBLADOR El nico lenguaje que entienden los microcontroladores es el cdigo mquina formado por ceros y unos del sistema binario. El lenguaje ensamblador expresa las instrucciones de una forma ms natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en cdigo mquina. El lenguaje ensamblador trabaja con nemnicos, que son grupos de caracteres alfanumricos que simbolizan las rdenes o tareas a realizar. La traduccin de los nemnicos a cdigo mquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.

El programa escrito en lenguaje ensamblador se denomina cdigo fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente cdigo mquina, que suele tener la extensin *.hex. El lenguaje simblico que se utiliza para codificar los programas origen que se procesan por el ensamblador es llamado lenguaje ensamblador. Este lenguaje es una coleccin de smbolos mnemnicos que representan: operaciones (mnemnicos de instrucciones para la mquina o de directrices para el ensamblador), nombres simblicos, operadores y smbolos especiales. El lenguaje ensamblador proporciona cdigos de operacin de los mnemnicos para todas las instrucciones de la mquina contenidas en la lista de instrucciones. Adems, el lenguaje ensamblador contiene mnemnicos directrices, los cuales especifican acciones auxiliares que se llevan a cabo por el ensamblador. Estas directrices no siempre son traducidas a lenguaje maquina. Un programador escribe el programa origen en lenguaje ensamblador utilizando cualquier editor de textos o procesador de palabras que sea capaz de producir una salida de texto en ASCII. Una vez que el cdigo origen ha sido escrito, el archivo origen es ensamblado mediante su procesamiento a travs de algn ensamblador. EL CDIGO FUENTE Est compuesto por una sucesin de lneas de texto. Cada lnea puede estructurarse en hasta cuatro campos o columnas separados por uno o ms espacios o tabulaciones entre s. Campo de etiquetas. Expresiones alfanumricas escogidas por el usuario para identificar una determinada lnea. Todas las etiquetas tienen asignado el valor de la posicin de memoria en la que se encuentra el cdigo al que acompaan. Campo de cdigo. Corresponde al nemnico de una instruccin, de una directiva o de una llamada a macro. Campo de operandos y datos. Contiene los operandos que precisa el nemnico utilizado. Segn el cdigo, puede haber dos, uno o ningn operando. Campo de comentarios. Dentro de una lnea, todo lo que se encuentre a continuacin de un punto y coma (;) ser ignorado por el programa ensamblador y considerado como comentario.

6.1 Etiquetas

La etiqueta es opcional. El comando puede ser un mnemnico del conjunto de instrucciones. El operando esta asociado al comando, si no hay comando no hay operando, e inclusive algunos comandos no llevan operando. El comentario es opcional para el compilador aunque es buena prctica considerarlo obligatorio para el programador. La etiqueta, es el campo que empieza en la primer posicin de la lnea. No se pueden insertar espacios o tabulaciones antes de la etiqueta sino ser considerado comando. Identifica la lnea de programa haciendo que el compilador le asigne un valor automticamente. Si se trata de una lnea cuyo comando es una instruccin de programa del microcontrolador, se le asigna el valor de la direccin de memoria correspondiente a dicha instruccin (location counter). En otros casos se le asigna un valor de una constante, o la direccin de una variable, o ser el nombre de una macroinstruccin, etc. El campo de etiquetas aparece como el primer campo dentro de un enunciado origen. El campo de etiquetas puede adoptar cualquiera de las siguientes formas: Un asterisco ( * ) como el primer carcter en el campo de etiquetas indica que el resto del enunciado origen es un comentario. Los comentarios son ignorados por el ensamblador e impresos en el listado origen solamente como informacin de programacin. Un espacio de carcter en blanco (TAB o espacio) como primer carcter indica que el campo de etiquetas se encuentra vaco. La lnea no tiene una etiqueta y no es un comentario. Un smbolo como primer carcter indica que la lnea tiene etiqueta. Estos smbolos son las letras maysculas y minsculas ( a - z ), los dgitos ( 0 - 9 ) y caracteres especiales como punto ( . ), signo de pesos ( $ ) y subrayado ( _ ). Estos smbolos consisten de uno a quince caracteres, el primero de los cuales debe ser alfabtico o un carcter especial punto o subrayado. Todos los caracteres son significantes y las maysculas y minsculas son distintas. Un smbolo puede aparecer solamente una vez en el campo de etiquetas. Si un smbolo aparece ms de una vez en el campo de etiquetas, toda referencia a dicho smbolo ser marcada como error. Con la excepcin de algunas directrices a la etiqueta se le asigna el valor del contador de programa ( PC ) del primer byte de la instruccin o dato que se est ensamblando. El valor asignado a la etiqueta es absoluto. De manera opcional, las etiquetas pueden ser terminadas con el smbolo de dos puntos ( : ). Si dicho smbolo es utilizado, no formar parte de la etiqueta, simplemente servir como separacin entre la etiqueta y el resto del enunciado origen. De esta forma, los siguientes fragmentos son equivalentes:

salta: deca salta deca

bne salta bne salta

Una etiqueta puede aparecer por si sola en una lnea. El ensamblador interpreta esto como "establece el valor de la etiqueta igual al valor actual del contador de programa ( PC )". 6.2 Cdigo de operacin Instrucciones: son aquellos nemnicos que son convertidos por el ensamblador en cdigo mquina que puede ejecutar el ncleo del microcontrolador. En la gama media (PIC16xxx) cada nemnico se convierte en una palabra en la memoria de programa Directivas. Pseudoinstrucciones que controlan el proceso de ensamblado del programa, pero no son parte del cdigo. Son indicaciones al programa ensamblador de cmo tiene que generar el cdigo mquina Macros: Secuencia de nemnicos que pueden insertarse en el cdigofuente del ensamblador de una manera abreviada mediante una simple llamada.

6.3 Operandos Contiene los operandos que precisa el nemnico utilizado. Segn el cdigo, puede haber dos, uno o ningn operando. El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de numeracin decimal, hexadecimal, octal, binario y ASCII. Los nemnicos que tengan una constante como operando debern incluirla respetando la sintaxis que se indica a continuacin.

Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. Ejemplo: movlw 0F7h Expresiones.- Una expresin es una combinacin de smbolos constantes, operadores algebraicos y parntesis. La expresin especifica un valor, el cual ser utilizado como operando.

Las expresiones pueden consistir de smbolos, constantes o del caracter * (denotando el valor actual del contador de programa PC) unidos entre s por alguno de los operadores: +, -, *, /, %, &, I, ^. Operadores.- Los operadores son iguales a los utilizados en el lenguaje de programacin C: + suma - resta * multiplicacin / divisin % residuo despus de divisin & and I or ^ or exclusiva Las expresiones son evaluadas de izquierda a derecha y las expresiones con parntesis no estn previstas. La aritmtica es realizada con precisin de enteros en complemento a dos con signo. Smbolos.- Cada smbolo se encuentra asociado con un valor entero de 16 bits, el cual es utilizado en lugar del smbolo durante la evaluacin de la expresin. El asterisco (*) utilizado en una expresin como smbolo representa el valor actual del contador de localidades (el primer byte de una instruccin de varios bytes ). Constantes.- Las constantes representan cantidades de informacin que no varan en su valor durante la ejecucin del programa. Las constantes pueden ser presentadas al ensamblador en uno de cinco posibles formatos: decimal, hexadecimal, binario, octal o ASCII. El programador le indica al ensamblador el formato del nmero con los siguientes prefijos: $ Hexadecimal % Binario @ Octal ASCII Las constantes sin prefijo son interpretadas como decimal. El ensamblador convierte todas las constantes a cdigo mquina binario y son desplegadas en el listado del ensamblado como valores hexadecimales.

6.4 Comentarios Dentro de una lnea, todo lo que se encuentre a continuacin de un punto y coma (;) ser ignorado por el programa ensamblador y considerado como comentario. El ltimo campo de un enunciado origen del ensamblador es el campo de comentarios. Este campo es opcional y solamente es impreso en el listado origen con propsitos de documentacin.

El campo de comentarios es separado del campo de los operandos (o del campo de operaciones sino se requiere operando) por al menos un espacio en blanco. El campo de comentarios puede contener cualquier carcter imprimible ASCII. 6.5 Normas de estilo para escribir un archivo fuente

S-ar putea să vă placă și