Documente Academic
Documente Profesional
Documente Cultură
ENSAMBLADOR
LENGUAJE MAQUINA
Los microcontroladores entienden un nico formato basado en ceros y unos es decir el sistema binario (lenguaje maquina). La codificacin binaria es difcil es por eso que se utiliza el sistema hexadecimal para facilitar la interpretacin de los cdigos y no saturar las pantallas.
LENGUAJE ENSAMBLADOR
El lenguaje maquina es difcil de entender por el hombre por eso se utiliza el lenguaje ensamblador , expresa instrucciones de una forma ms natural y es ms cercano al microcontrolador, porque cada una de las instrucciones corresponde a una en lenguaje maquina y el micro controlador es capaz de interpretar.
El lenguaje ensamblador utiliza nemnicos. Los nemnicos corresponden a las inciales del nombre de la instruccin en ingles.
PROGRAMA ENSAMBLADOR
El programa ensamblador es un software que se encarga de convertir los nemnicos introducidos por el usuario a lenguaje maquina. El lenguaje escrito en ensamblador son denominados cdigo fuente, archiv fuente o fichero fuente y suelen tener la extensin *.asm.
Fichero listable.
EL CODIGO FUENTE
El cdigo fuente est compuesto por una sucesin de lneas de programa. Cada lnea suele estar compuesta por 4 campos o columnas separadas por espacios. Estos campos son: Campo de etiqueta. Campo del cdigo de operacin. Campo de operandos y datos. Campo de comentarios.
ETIQUETAS
La primera columna es el campo de etiquetas. Son expresiones alfanumricas escogidas por el usuario su principal objetivo es identificar a una determinada instruccin del programa, asignado a esa etiqueta el determinado valor de la direccin de memoria correspondiente a dicha instruccin .As se facilitamos la identificacin de las direcciones. Es obligatoria que las etiquetas cumplan con las siguientes normas:
Deben empezar por letras. No se pueden insertar espacios o tabulaciones
antes de la etiqueta.
Instrucciones. Nombres de registros especiales. Nombre de cada uno de los bit de registros especiales. Directivas del propio ensamblador.
CODIGO DE OPERACION
La segunda columna es de campo de cdigo de operacin, que especifica la tarea a realizar por el microcontrolador. Es una instruccin del microcontrolador que es directamente traducida a cdigo maquina por el ensamblador, por ejemplo:
OPERANDOS
La tercera columna es el campo de operandos o datos. Contiene los operandos para el campo de instrucciones. Este campo puede contener uno o mas operandos separados por comas (pueden ser nmeros o etiquetas). Es importante que los operandos que se designen a los registros SFR, respeten la ortografa que establece el fichero P16F84A.INC que proporciona el fabricante MICROCHIP.
COMENTARIOS
La ultima columna es el campo de comentarios de los programas. Elementos indispensables que ayudan al programador a documentar su programa, y aclarar el sentido de las instrucciones.
Los comentarios pueden extenderse en varias lneas y todas ellas deben comenzar con punto y coma (;).
El objetivo de la programacin es proporcionar la documentacin necesaria, con ello se consigue que los programas fuentes sean mas claros aun pueden aumentar su extensin.
Las constantes hexadecimales que comiencen con una letra (A-F) deben ir precedidas por un cero para que no sean confundidas con una etiqueta. Las constantes pueden ser o no precedidas por un signo + o - (valores positivos o valores negativos), si no llevan ningn signo automticamente se toma como un valor positivo. Cuando los operandos son caracteres ASCII deben de estar encerrados en comillas simples.
OPERADORES ARITMETICOS
En los operandos de las instrucciones pueden aparecer expresiones matemticas.
Instrucciones especiales.
INSTRUCCIONES DE CARGA
Las instrucciones de transferencias de datos son tpicas de todos los procesadores y su misin es transferir el contenido de un registro fuente (f) a un registro destina (d) o bien cargar el destino con una constante.
CLRF F
(clear f). el contenido del registro f se borra(se carga con b00000000), y el flag Z se activa a 1. Esta instruccin tambin se considera como aritmtica. Ejemplo: clrf FlagReg ;0= (FlagReg)
MOVLW K
(move literal to W).El registro W se carga con el valor de los 8 bits de la constante K y ningn flag es afectado. Ejemplo: movlw 0x5A Instruccin antes: (W)=? Instruccin despus(W)= 0x5A ;5Ah=(W)
MOVF F,D
(move f). el contenido del registro f se carga en el registro destino dependiendo el valor de d. si d=0, el destino es igual a W. si el valor de d es=1,el destino es el propio registro f. El flag Z queda afectado, Z se activa a 1 si el resultado de la operacin es 0. Ejemplo: movf PORTA,0 ;(W)=PORTAB y (W)=? Y Instruccin antes: (PORTAB)=0x1A Z=?
INSTRUCCIONES DE BIT
Estas instrucciones ponen a nivel lgico 0 o 1 un determinado bit de un registro de la memoria de datos. bcf f,b (bit cler f). pone a 0 el bit b del registro f. Ejemplo: bcf FlgReg,7 ;0=( FlgReg,7 ) Instruccin antes: (FlgReg,7) =b01000111 Instruccin despus: (FlgReg,7) b11000111
INSTRUCCIONES GOTO K
En casi todos los programas se usa la instruccin de salto incondicional, goto k, que produce un salto dentro del programa iniciado por K. K es la literal constante, es la direccin del destino del salto, es decir, la nueva direccin de memoria del programa en la cual se comenzara a trabajar en las instrucciones despues de ejecutar goto. Ejemplo: goto bucle ;goto=(PC) Instruccin antes :PC =? Instruccin despus: PC= direccin apuntada por la etiqueta bucle. Se utiliza el smbolo $ para indicar que el salto se efectu en la misma posicin de programa donde se encuentra situado en ese momento. goto $
configuracin para el grabador ZONA DE DATOS************************************************** ORG 0 memoria de programa Inicio dsf Clrf como salidas. TRISB ; el programa comienza el direccin 0 de ; acceso al banco 1 ;las lneas del banco B se configura
STATUS,RP0
movlw b`0001111` movlwf TRISA como entradas. Bcf STATUS,RP0 ; las 5 lineas del puerto A se configura ; Acceso el banco 0.
Principal movf PORTA,W puerto A en W. movwf PORTB puerto B. goto Principal ; carga el registro de datos del ; el contenido de W se deposita en el ;se crea un blucle cerrado e infinito.
END
Los registros TRISA y TRISB ocupan las posiciones 5 y 6 del banco 1. Los puertos PORTA y PORTB ocupan las posiciones 5 y 6 del banco 0, por tanto, programa anterior se puede modificar como sigue:
En le momento de la definicin del puerto como salida, el contenido de sus latches internos pasan al exterior, en caso de que sea importante que este sea cero el programa debe aadir una instruccin clrf PORTB al principio.
***********************Ensam_03.asm***************** Inicio Clrf PORTB nivel bajo cuando Bsf Clrf como salida. ; inializa el puerto para que la lnea vaya a ; esta se configure como salida SATUS,RP0 TRISB ; acceso al banco 1. ; lnea del puerto B se configura
Movlw b`00011111` Movwf TRISA configura como entradas. Bcf STATUS,RP0 ; las 5 lineas del puerto A se ;acceso al banco 0.
DIRECTIVAS
Para poder ensamblar un programa automticamente el ensamblador necesita informacin en forma de directivas, que son comandos insertados en el programa que controla el proceso de ensamblador. No son parte del repertorio de instrucciones del microprocesador, por lo tanto, n o tienen traduccin al cdigo maquina del micro controlador, por lo que tambin se les llaman pseudoistruciones. MPASM es el programa ensamblador del PIC16F84 mas utilizado, tiene mas de 50 derectivas que se explican en su men help y en la gua,MPASMUSER`S GUIDE que se puede obtener gratuitamente en la pgina www.microchip.com
END
(end program blok). Indica el fin del programa. Es la nica directiva abligatoria. A ensamblar un programa, el programa ensamblador debe saber donde tiene que detener el proceso. EQU Su sintaxis es : <label> EQU <expr> Es una directiva de asignacin. El valor de <expr> es asignado a la etiqueta <label>
ORG
Su sintaxis es [<label>] ORG <expr> Esta directiva indca al programa ensamblador la direccin en memoria de programa a partir de lo cual deben ensamblanrse las instrucciones del cdigo fuente. LIST P=16F84A Indica el tipo de procesador utilizado.
EQU
EQU Su sintaxis es : <label> EQU <expr> Es una directiva de asignacin. El valor de <expr> es asignado a la etiqueta <label> ORG Su sintaxis es
_ _ CONFIG
En el programa Ensam_03.asm aparece como: CONFIG _CP_OFF& _ WDT_OFF&_PWRTE_ON&_XT_OSC Esta directiva indica la configuracin elegida para el proceso de grabacin del micro controlador en esta caso : No hay proteccin del cdigo (_CP_OFF). No se habilita el Watchdog (_WDT_OFF). Se habilita el reset mediante Power- Up Time (_PWRTE_ON). Se utiliza el oscilador por cristal de cuarzo (_XT-OSC)
GLOSARIO
NEMONICOS: son grupos de caracteres alfanumricos que simbolizan las ordenes o tareas de cada instruccin . DIRECTIVAS: son instrucciones que nicamente son reconocidas por el ensamblador y que han sido agregadas para facilitar la tarea de ensamblado. Son usadas para especificar la organizacin de memoria, realizar ensamblado condicional, definir macros, entrada, salida, control de archivos, listados, cross-reference, direcciones e informacin acerca de la estructura de un programa y las declaraciones de datos. MPASM: nos permite escribir el cdigo y ensamblarlo para producir como salida un fichero .HEX que luego grabaremos en el PIC o que nos servir para utilizarlo con el simulador que incorpora MPLAB, en otros programas como PROTEUS o por ejemplo en emuladores de PIC.