Вы находитесь на странице: 1из 37

MICROPROCESADORES II

CAP 2: Programacin de los microcontroladores

LENGUAJES DE PROGRAMACIN
El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el cdigo ejecutable y est compuesto por una serie de ceros y unos. Dependiendo de la arquitectura del microcontrolador, el cdigo binario est compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra se interpreta por la CPU como una instruccin a ser ejecutada durante el funcionamiento del microcontrolador. Todas las instrucciones que el microcontrolador puede reconocer y ejecutar se les denominan colectivamente Conjunto de instrucciones

LENGUAJES DE PROGRAMACIN

LENGUAJES DE PROGRAMACIN
LENGUAJE ENSAMBLADOR

Como el proceso de escribir un cdigo ejecutable era considerablemente arduo, en consecuencia fue creado el primer lenguaje de programacin denominado ensamblador (ASM). Siguiendo la sintaxis bsica del ensamblador, era ms fcil escribir y comprender el cdigo. Las instrucciones en ensamblador consisten en las abreviaturas con significado y a cada instruccin corresponde una localidad de memoria. Un programa denominado ensamblador compila (traduce) las instrucciones del lenguaje ensamblador a cdigo mquina (cdigo binario)

LENGUAJES DE PROGRAMACIN
LENGUAJE ENSAMBLADOR El primer lenguaje de programacin denominado ensamblador (ASM). cuyas instrucciones consisten en las abreviaturas con significado y a cada una corresponde una localidad de memoria.

LENGUAJES DE PROGRAMACIN
LENGUAJE ENSAMBLADOR El programa ensamblador compila (traduce) las instrucciones del lenguaje ensamblador a cdigo mquina (cdigo binario).

LENGUAJES DE PROGRAMACIN
Ventajas de lenguajes de programacin de alto nivel Incluso una sola operacin en el programa escrito en ensamblador consiste en muchas instrucciones, hacindolo muy largo y difcil de manejar. Cada tipo de microcontrolador tiene su propio conjunto de instrucciones que un programador tiene que conocer para escribir un programa Un programador tiene que conocer el hardware del microcontrolador para escribir un programa

LENGUAJES DE PROGRAMACIN

LENGUAJES DE PROGRAMACIN
Ventajas de lenguajes de programacin de alto nivel Los lenguajes de programacin de alto nivel (Basic, Pascal, C etc.) fueron creados con el propsito de superar las desventajas del ensamblador. En lenguajes de programacin de alto nivel varias instrucciones en ensamblador se sustituyen por una sentencia. El programador ya no tiene que conocer el conjunto de instrucciones o caractersticas del hardware del microcontrolador utilizado. Ya no es posible conocer exactamente cmo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el programa una secuencia escrita en ensamblador.

LENGUAJES DE PROGRAMACIN
Lenguaje C El lenguaje C dispone de todas las ventajas de un lenguaje de programacin de alto nivel (anteriormente descritas) y le permite realizar algunas operaciones tanto sobre los bytes como sobre los bits (operaciones lgicas, desplazamiento etc.). Las caractersticas de C pueden ser muy tiles al programar los microcontroladores. Adems, C est estandarizado (el estndar ANSI), es muy portable, as que el mismo cdigo se puede utilizar muchas veces en diferentes proyectos.

LENGUAJES DE PROGRAMACIN

CARACTERSTICAS PRINCIPALES DEL MIKROC


Este lenguaje es muy similar al C estndar Difiere del ANSI estndar en algunas caractersticas. 1. Mejoras, destinadas a facilitar la programacin de los microcontroladores PIC 2. Son la consecuencia de la limitacin de la arquitectura del hardware de los PIC.

CARACTERSTICAS PRINCIPALES DEL MIKROC


FASES DE COMPILACIN El proceso de compilacin consiste en varios pasos y se ejecuta automticamente por el compilador 1. El compilador busca las directivas del preprocesador (que siempre empiezan por #) dentro del cdigo y modifica el cdigo fuente de acuerdo con las directivas. En esta fase se llevan a cabo inclusin de archivos, definicin de constantes y macros etc, lo que facilita el proceso. 2. El analizador sintctico(parser) elimina toda la informacin intil del cdigo (comentarios, espacios en blanco). 3. el compilador traduce el cdigo a un archivo binario denominado archivo .mcl.

CARACTERSTICAS PRINCIPALES DEL MIKROC


FASES DE COMPILACIN 4. El enlazador (linker) recupera toda la informacin requerida para ejecutar el programa de los archivos externos y la agrupa en un solo archivo (.dbg). (Varios archivos, librerias) 5. EL generador .hex produce un archivo .hex. Es el archivo que se va a cargar en el microcontrolador

El proceso entero de la compilacin que incluye todos los pasos anteriormente descritos se le denomina building.

CARACTERSTICAS PRINCIPALES DEL MIKROC


ESTRUCTURA DE PROGRAMA La idea principal de escribir un programa en C es de romper un problema mayor en varios trozos ms pequeos
Programa para el microcontrolador para medir la temperatura y visualizar los resultados en un LCD
1. Activar y configurar el convertidor A/D incorporado; 2. Medir el valor analgico; 3. Calcular temperatura; y 4. Enviar los datos en el formato apropiado al LCD;

TIPOS DE DATOS EN MIKROC


En el lenguaje C, los datos tienen un tipo, o sea, cada dato utilizado en el programa debe tener su tipo especificado.
Esto permite al compilador conocer el tamao de dato (nmero de bytes requerido en la memoria) y su representacin
TIPO D E DESCRIPC IN DATO char int float Texto (caracteres) Valores enteros Valores en punto flotante TAMAO (NMERO DE BITS) 8 16 32 RANGO DE VALORES

de 0 a 255 de -32768 a 32767 de 1.1754943508210-38 6.805647744071038 de 1.1754943508210-38 6.805647744071038 a

double

Valores en punto flotante de doble 32 precisin

TIPOS DE DATOS EN MIKROC


Al aadir un prefijo (calificador) a cualquier tipo de dato entero o carcter, el rango de sus posibles valores cambia as como el nmero de los bytes de memoria necesarios
TIPO DE DATO char TAMAO TIPO DE DATO (NMERO CON PREFIJO DE BITS) signed char 8 RANGO DE VALORES de -128 a 128

unsigned int
short int signed short int int long int

16
8 8 32

de 0 a 65535
de 0 a 255 de -128 a 127 de 0 a 4294967295 de 2147483648 a 2147483647

signed long int

32

TIPOS DE DATOS EN MIKROC


Tipo entero (int) Un entero es un nmero sin parte fraccionaria que puede estar expresado en los siguientes formatos: Hexadecimal (base 16): el nmero empieza con 0x (o 0X). Los enteros hexadecimales consisten en los dgitos (de 0 a 9) y/o las letras (A, B, C, D, E, F). Por ejemplo: 0x1A. Decimal (base 10): el nmero consiste en los dgitos (de 0 a 9). El primer dgito no puede ser 0. En este formato, se puede introducir el signo de nmero (+ o -). Por ejemplo: 569, -25, +1500. Octal (base 8): los nmeros se representan a base 8 utilizando slo 8 dgitos (de 0 a 7). Los enteros octales empiezan con 0. Por ejemplo: 056. Binario: cuando un entero empieza con 0b (o 0B) se representan como una serie de bits (0 y 1). Por ejemplo: 0B10011111

TIPOS DE DATOS EN MIKROC


Tipo punto flotante (float) El tipo punto flotante (float) se utiliza para los nmeros reales con el punto decimal. Los datos de tipo float se pueden representar de varias maneras. Un dato float es siempre consigno (signed). 0. // = 0.0 -1.23 // = -1.23 23.45e6 // = 23.45 * 10^6 2e-5 // = 2.0 * 10^-5 3E+10 // = 3.0 * 10^10 .09E34 // = 0.09 * 10^34

TIPOS DE DATOS EN MIKROC


Tipo carcter (char) El tipo char es considerado como un entero por el compilador. No obstante, se utiliza normalmente para los datos de tipo carcter. Un dato de tipo carcter est encerrado entre comillas y codificado en un carcter ASCII. 59 // entero 'p' // carcter ASCII 'p' Una secuencia de caracteres es denominada cadena (string). Las cadenas estn encerradas entre comillas dobles, por ejemplo: "Presione el botn RA0"

VARIABLES Y CONSTANTES
Una variable es un objeto nombrado capaz de contener un dato que puede ser modificado durante la ejecucin de programa

/* dos lneas de programa consecutivas. En la primera lnea del programa se define el tipo de variable */
int a = 1000; // Variable a es de tipo int y equivale a 1000 a = 15; // a equivale a 15 Una constante tiene las mismas caractersticas que una variable excepto el hecho de que su valor asignado no puede ser cambiado durante la ejecucin de programa.

VARIABLES Y CONSTANTES
Una constante tiene las mismas caractersticas que una variable excepto el hecho de que su valor asignado no puede ser cambiado durante la ejecucin de programa.
A diferencia de las variables, las constantes se almacenan en la memoria Flash del microcontrolador para guardar el mayor espacio posible de memoria RAM. /* dos lneas de programa consecutivas */

const A = 1000 // el valor de la constante A est definido A = 15; // ERROR! no se puede modificar el valor de la constante

VARIABLES Y CONSTANTES
Reglas para nombrar Los identificadores pueden ser tan largos como quiera, pero hay varias restricciones: Los identificadores pueden incluir cualquiera de los caracteres alfabticos A-Z (a-z), los dgitos 0-9 y el carcter subrayado '_'. El compilador es sensible a la diferencia entre minsculas y maysculas. Los nombres de funciones y variables se escriben con frecuencia con minsculas, mientras que los nombres de constantes se escriben con maysculas. Los identificadores no pueden empezar con un dgito. Los identificadores no pueden coincidir con las palabras clave del lenguaje mikroC, porque son las palabras reservadas del compilador.

VARIABLES Y CONSTANTES
Reglas para nombrar
MIKROC - PALABRAS CLAVE absolute asm at auto bit bool break case catch data default delete do double else enum explicit extern if inline int io long mutable return rx sfr short signed sizeof typedef typeid typename union unsigned using virtual void volatile

namespac static e operator struct org switch

char
class code const continue

false
float for friend goto

pascal
private public register

template
this true try

while

protected throw

VARIABLES Y CONSTANTES
Reglas para nombrar
temperatura_V1 // OK Presin // OK no_corresponder // OK dat2string // OK SuM3 // OK _vtexto // OK 7temp // NO -- no puede empezar con un nmero %ms_alto // NO -- no pueden contener caracteres especiales if // NO -- no puede coincidir con una palabra reservada j23.07.04 // NO -- no puede contener caracteres especiales (punto) nombre de variable // NO -- no puede contener espacio en blanco

VARIABLES Y CONSTANTES
Declaracin de variables las variables se declaran con frecuencia al principio de las funciones

<tipo> variable; <tipo> variable1, variable2, variable3;


unsigned int peso; // Declarar una variable llamada peso peso = 20; // Asignar el valor 20 a la variable peso O mas abreviado unsigned int peso = 20; // peso est declarado y su valor es 20

VARIABLES Y CONSTANTES
Declaracin de variables

unsigned int peso1 = peso2 = peso3 = 20; int valor_inicial = un_mnimo_de_petrleo = 0;


No declarar la misma variable otra vez dentro de la misma funcin. Se puede modificar el contenido de una variable al asignarle un nuevo valor tantas veces que quiera Al declarar una variable, siempre piense en los valores que la variable tendr que contener durante la ejecucin de programa. En el ejemplo anterior, peso1 no se puede representar con un nmero con punto decimal o un nmero con valor negativo.

VARIABLES Y CONSTANTES
Declaracin de constantes las constantes deben ser declaradas antes de ser utilizadas en el programa
El compilador reconoce las constantes por su prefijo const utilizado en la declaracin. const int MINIMUM = -100; // Declarar constante MINIMUM const MINIMUM = -100; // Declarar constante MINIMUM Las constantes pueden ser de cualquier tipo, incluyendo cadenas: const T_MAX = 3.260E1; // constante de punto flotante T_MAX const I_CLASS = 'A'; // constante carcter I_CLASS const Mensaje = "Presione el botn IZQUIERDA"; // constante de cadena Mensaje

VARIABLES Y CONSTANTES
Las constantes de enumeracin son un tipo especial de constantes enteras que hace un programa ms comprensible al asignar los nmeros ordinales a las constantes. Por defecto, el valor 0 se asigna automticamente a la primera constante entre llaves, el valor 1 a la segunda, el valor 2 a la tercera etc.
enum surtidores {AGUA,GASLEO,CLORO}; // AGUA = 0; GASLEO = 1; CLORO = 2 enum surtidores {AGUA,GASLEO=0,CLORO}; // AGUA = 0; GSOLEO = 0; CLORO = 1 int Velocidad_de_ascensor enum motor_de_ascensor {PARADA,INICIO,NORMAL,MXIMO}; Velocidad_de_ascensor = NORMAL; // Velocidad_de_ascensor = 2

VARIABLES Y CONSTANTES
Definir los nuevos tipos de datos La palabra clave typedef le permite crear con facilidad los nuevos tipos de datos. typedef unsigned int positivo; // positivo es un sinnimo para el tipo sin signo int positivo a,b; // Variables a y b son de tipo positivo a = 10; // Variable a equivale a 10 b = 5; // Variable b equivale a 5

VARIABLES Y CONSTANTES
mbito de variables y constantes

VARIABLES Y CONSTANTES
mbito de variables y constantes

Un bloque compuesto es un grupo de declaraciones y sentencias (que pueden ser bloques tambin) encerradas entre llaves. Un bloque puede ser una funcin, una estructura de control etc. Una variable declarada dentro de un bloque se considera local, o sea, existe slo dentro del bloque. Sin embargo, las variables declaradas fuera del mbito todava son visibles.

VARIABLES Y CONSTANTES
Clases de almacenamiento Las clases de almacenamiento se utilizan para definir el mbito y la vida de variables, constantes y funciones dentro de un programa auto es una clase de almacenamiento por defecto para las variables locales, as que se utiliza raramente. Se utiliza para definir que una variable local tiene duracin local. La clase de almacenamiento auto no se puede utilizar con variables globales.

VARIABLES Y CONSTANTES
Clases de almacenamiento static es una clase de almacenamiento por defecto para las variables globales. Especifica que una variable es visible dentro del archivo. A las variables locales declaradas con el prefijo static se les puede acceder dentro del archivo fuente (o sea se comportan como variables globales). extern: la palabra clave extern se utiliza cuando el programa est compuesto por diferentes archivos fuente. Esto le permite utilizar una variable, una constante o una funcin declarada en otro archivo. Por supuesto, para compilar y enlazar este archivo correctamente, el mismo debe ser incluido en su proyecto.

VARIABLES Y CONSTANTES
Clases de almacenamiento
File 1: extern int cnt; // Variable cnt es visible en File_1 extern void hello(); // Funcin hello()se puede utilizar en File_1 void main(){ PORTA = cnt++; // Cualquier modificacin de cnt en File_1 ser visible en File_2 hello(); // Funcin hello()se puede llamar desde aqu } File 2: int cnt = 0; void hello(); void hello(){ // Modificaciones que afectan a la . // cnt en File_1 son visibles aqu . . }

Вам также может понравиться