curso micros

Upload: charly19709

Post on 06-Mar-2016

8 views

Category:

Documents


0 download

DESCRIPTION

curso basico de pics

TRANSCRIPT

  • Introduccin

    Siempre ha sido tema de debate la eleccion del ensamblador o un compilador de alto nivel como lenguaje de programacion. Cada herramienta tiene sus ventajas e inconvenientes. Siempre habra aplicaciones donde no sea necesaria la eficiencia del ensamblador o la flexibilidad de un compilador, asi como aplicaciones que s demanden de ambas facilidades. Sea como sea, un buen disenador debe estar preparado para emplear el ensamblador como eventual recurso.Una razon de gran peso que quiero anadir por la que tarde o temprano se debe aprender el ensamblador es que la mayor parte (casi toda) la informacion proporcionada por Microchip en los datasheets, notas de aplicacin o manuales de referencia sobre sus PICmicros se incluyen codigos en ensamblador.Estructrura del programa en ensamblador

    Vamos a analizar el primer programa, el que hace parapadear un LED.;****************************************************************************; FileName: BlinkLed.asm; Processor: PIC16F84A;****************************************************************************

    list p = PIC16F84A ; Seleccionar procesador #include ; incluir archivo P16F84A.inc __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF cont1 equ 0x0C ; Ubicar cont1 en direccin 0x0C cont2 equ 0x0D ; Ubicar cont2 en direccin 0x0D

    org 0x00 ; Cdigo ejecutable empieza aquStart ; Iniciar bsf STATUS, RP0 ; RP0 = 1. Cambiar al Banco 1 bcf TRISB, 0 ; Configurar pin RB0 como salida bcf STATUS, RP0 ; RP0 = 0. Cambiar al Banco 0MLoop ; Bucle principal bsf PORTB, 0 ; Prender el led call pausa ; Llamar pausa bcf PORTB, 0 ; Apagar el led call pausa ; Llamar pausa goto MLoop ; Saltar a MLoop

    ;****************************************************************************; Subrutina pausa. Genera 325 milisegundos aprox.pausa movlw d'100' ; Mover 100 a W movwf cont1 ; Mover W a cont1 (cargar cont1) movlw d'255' ; Mover 255 a W movwf cont2 ; Mover W a cont2 (cargar cont2)loop1 decfsz cont1, f ; decrementar cont1, saltear si da 0 goto loop2 ; saltar a loop2 decfsz cont2, f ; decrementar cont2, saltear si da 0loop2 goto loop1 ; saltar a loop1 return ; retornar de subrutina

    end ; Fin del cdigoVisto el cdigo de izquierda a derecha podemos notar que sobresalen cuatro columnas. (Los colores ayudan mucho, aunque no determinan nada.)La primera columna es la que contiene las etiquetas y tambin algunas directivas. Las etiquetas sirven para marcar las direcciones de las instrucciones a las que

  • preceden. Pueden ser tiles para algunas instrucciones y en otros casos estn de adorno. Por ejemplo, la etiqueta Start vale por la direccin de bsf STATUS, RP0. El nombre de las etiquetas es un identificador. Pueden opcionalmente ir seguidas de dos puntos (:).En este programa tenemos las etiquetas Start, MLoop, pausa, loop1 y loop2.En la segunda columna estn los mnemnicos de las instrucciones, como bsf, movlw, etc. (en el ejemplo aparecen de color marrn), macros o directivas del ensamblador. Las directivas (cuyos nombres aparecen de color azul) no son instrucciones del PIC ni constituyen cdigo ejecutable. Son ordenes que el ensamblador tendr en cuenta en el momento de ensamblar el cdigo fuente. Tienen diversas funciones y ayudan bastante, como lo veremos en adelante.Ahora, lo que puede resultar desalentador es la cantidad de directivas que existen. De la enorme lista disponible solo un grupo de ellas son realmente elementales e iremos conocindolas de a poco. La lista inicial indispensable est formada por list, include, __config, banksel, equ, org, end, define, cblock, endc, dt.La tercera columna est constituida bsicamente por los operandos de instrucciones, como STATUS, RP0; TRISB; pausa; etc.En la cuarta columna sobresalen los comentarios. Un comentario es todo lo que sigue en el rengln a un punto y coma (;) y ser ignorado por el ensamblador (en el listado es todo lo que se ve de color verde). Digamos que son texto de adorno que solo sirve para documentar el programa. De hecho, los comentarios pueden ponerse en cualquier parte del listado.sa es una forma algo burda de estructurar un programa, pero ayuda muchsimo. Ahora pasaremos a revisarlo de arriba abajo.Los identificadores son los nombres que podemos usar para identificar ciertos elementos del cdigo fuente, como registros GPR, etiquetas, macros, etc. Los nombres se forman a criterio del usuario, usando los carecteres alfanumricos disponibles y los signos _ y ?, respetando las siguientes reglas:No debe haber dos indentificadores iguales.No deben empezar con nmeros. Ejemplo, 1n4148.No deben comenzar con dos rayas bajas seguidas. Ejemplo, __var.No deben incluir espacios. Ejemplo, contador 1.No deben ser palabras reservadas, como directivas o mnemnicos. Ejemplo, include, processor, retlw, etc.A diferencia de los mnemnicos, por defecto el ensamblador distingue entre caracteres maysculas y minsculas.