Você está na página 1de 8

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Por Andrs Ral Bruno Saravia

Entrega N 4.
Se dice que el lenguaje C es un lenguaje de nivel medio. La razn de esta indicacin est en que en C se pueden crear programas que manipulan la mquina casi como lo hace el lenguaje Ensamblador, pero utilizando una sintaxis que se asemeja ms a los lenguajes de alto nivel. De los lenguajes de alto nivel toma las estructuras de control que permiten programar de forma estructurada. Al tener caractersticas de los lenguajes de bajo nivel se puede tomar el control absoluto del microcontrolador. Adems tiene atajos que gustan mucho a los programadores al tener una sintaxis menos restrictiva que lenguajes como Pascal por ejemplo, lo que le convierte en el lenguaje idneo para crear cualquier tipo de aplicacin. Sus caractersticas bsicas son: Es un lenguaje estructurado y modular. Lo que facilita su compresin y escritura Es un lenguaje que incorpora manejo de estructuras de bajo nivel (punteros, bits), lo que le acerca a los lenguajes de segunda generacin Permite utilizar estructuras de datos complejas (arrays, pilas, colas, textos,...) Es un lenguaje compilado Permite crear todo tipo de aplicaciones

Cual es estructura de un programa en Lenguaje C?


Un programa en C consta de una o ms funciones, las cuales estn compuestas de diversas sentencias o instrucciones. Una sentencia indica una accin a realizar por parte del programa. Una funcin no es ms que (por ahora) un nombre con el que englobamos a las sentencias que posee a fin de poder invocarlas mediante dicho nombre.

La idea es: parmetros nombreDeFuncin(parmetros) { Sentencias; } Los smbolos { y } indican el inicio y el final de la funcin. Esos smbolos permiten delimitar bloques en el cdigo. El nombre de la funcin puede ser invocado desde otras sentencias simplemente poniendo como sentencia el nombre de la funcin. Como a veces las funciones se almacenan en archivos externos, necesitamos incluir esos archivos en nuestro cdigo mediante una sentencia especial #include , que en realidad es una directiva de preprocesador. Una directiva de preprocesador es una instruccin para el compilador con el que trabajamos. El uso es: #include <cabeceraDeArchivoExterno> La directiva #include permite indicar un archivo de cabecera en el que estar incluida la funcin que utilizamos. En el lenguaje C estndar los archivos de cabecera tienen extensin h. Los archivos de cabecera son los que permiten utilizar funciones externas (o libreras) en nuestro programa. Una de las libreras ms utilizadas en los programas, es la que contiene las etiquetas de todos los registros de funciones especiales del MCU PIC que hayamos seteado en el proyecto. En el caso de CCS esta librera est disponible en la cabecera 16Fxxx.h En todos los lenguajes de programacin, el primer programa a realizar es el famoso Hola mundo, un programa que escribe este texto en pantalla. En el mundo de los microcontroladores PIC, este programa se traduce en hacer titilar un led. De esta forma en CCS el cdigo de este programa es: #include <18f14k50.h> #use delay(crystal=12000000)// #fuses HS,NOWDT,NOLVP,NODEBUG,NOBROWNOUT,NOPLLEN,CPUDIV1,PUT,MCLR #define LED1 PIN_B4 void main(void) { setup_adc_ports(NO_ANALOGS); while(1) { output_high(LED1); delay_ms(500); output_low(LED1); delay_ms(500); } }

Cules son los elementos de un programa en C?


Los programas en C se basan en sentencias las cuales siempre se incluyen dentro de una funcin. En el caso de crear un programa ejecutable, esas sentencias estn dentro de la funcin main. A est funcin le antecede y precede la palabra void. Ahora bien al escribir sentencias hay que tener en cuenta las siguientes normas: (1) Toda sentencia en C termina con el smbolo "punto y coma" (;) (2) Los bloques de sentencia empiezan y terminan delimitados con el smbolo de llave ({ y }). As { significa inicio y } significa fin (3) En C hay distincin entre maysculas y minsculas. No es lo mismo main que MAIN. Todas las palabras claves de C estn en minsculas. Los nombres que pongamos nosotros tambin conviene ponerles en minsculas ya que el cdigo es mucho ms legible as.

Qu es un comentario?
Se trata de texto que es ignorado por el compilador al traducir el cdigo. Esas lneas se utilizan para documentar el programa. Esta labor de documentacin es fundamental. De otro modo el cdigo se convierte en ilegible incluso para el programador que lo dise. Tan importante como saber escribir sentencias es utilizar los comentarios. Todava es ms importante cuando el cdigo va a ser tratado por otras personas, de otro modo una persona que modifique el cdigo de otra lo tendra muy complicado. En C los comentarios se delimitan entre los smbolos /* y */ para los bloque y // para las lineas // Esto es un comentario usado para las lneas /* Esto es un comentario el compilador har caso omiso de este texto*/

Qu debemos considerar como importante en C?


C no es un lenguaje dcil para enfrentarlo intuitivamente por primera vez; se requiere un mnimo conocimiento de sus fundamentos antes de poner las manos sobre el teclado. En este aspecto es particularmente importante comprender los diferentes tipos de datos y las reglas que rigen su operacin. La idea directriz de C es la definicin de procedimientos (funciones), que en principio devuelven un valor. Lo que para nosotros es - conceptualmente - el programa principal, tambin es en C una funcin (la ms externa). Incidentalmente, su valor es devuelto al sistema operativo como cdigo de conclusin del programa. Ante todo, C est diseado con vistas a la compatibilidad. En este sentido, todas las definiciones que puedan hacerse no sern concretas, pues son adaptables de acuerdo con la implementacin. Un entero, por ejemplo, es una entidad con ciertas caractersticas generales, pero su implementacin diferir en distintos equipos.

C maneja los datos en forma de variables y constantes, conceptos con los que supondremos que el lector est familiarizado. Las variables, simbolizadas mediante datos alfanumricos (cuyas reglas de construccin trataremos ms adelante), presentan caractersticas que ser muy importante considerar: Tipo de dato: cada variable (tambin las constantes) est caracterizada por el tipo de dato que representa. Visibilidad: en un programa C, cada variable tiene un rango de visibilidad (procedimientos en los que es reconocida), que depende de cmo se la haya declarado. Existencia: relacionado con la anterior caracterstica, es posible que el contenido de una variable perdure, o que se pierda, por ejemplo, al terminarse un procedimiento.

Cul es el grupo de caracteres de C?


C emplea dos conjuntos de caracteres: El primero de ellos incluye todos los caracteres que tienen algn significado para el compilador. El segundo incluye todos los caracteres representables.

C acepta slo ciertos caracteres como significativos. Sin embargo, otros caracteres pueden formar parte de expresiones literales (constantes literales, nombres de archivo, etc.) que no sern analizadas por C. Los caracteres a los que C asigna especial significado se pueden clasificar en alfanumricos y signos especiales. Los caracteres alfanumricos incluyen las letras (alfabeto ingls, de A a Z), maysculas y minsculas, los dgitos, y el guin bajo (underscore: _). En todos los casos, las maysculas son consideradas distintas de las minsculas. Toda cadena alfanumrica con significacin en C est compuesta exclusivamente por estos caracteres. Los signos especiales son los listados a continuacin. Ellos se emplean como delimitadores, operadores, o signos especiales.
Maysculas: A - Z Minsculas: a - z Dgitos: 0 9 Guin bajo: _ Coma , Punto . Punto y coma ; Dos puntos : Signo de interrogacin ? Signo de admiracin ! Comilla simple Comilla doble Barra vertical | Barra / Barra invertida \ Tilde ~ Signo ms + Signo menos Parntesis izquierdo ( Parntesis derecho ) Corchete izquierdo [ Corchete derecho ] Llave izquierda { Llave derecha { Signo Mayor > Signo Menor < Signo igual = Asterisco * Ampersand & Porciento % Caret ^

Qu es un identificador?
Los identificaremos se utilizan para identificar, (valga la redundancia): variables, constantes, funciones, etc. Deben comenzar con una letra. Mxima longitud: 32 caracteres. Slo pueden contener letras y nmeros, pero no caracteres especiales, salvo el guin bajo, (underscore). No se deben confundir con palabras reservadas de C, (una variable, por ejemplo no puede llamarse int, ni main, etc.) y hay diferencias entre maysculas y minsculas. Como norma se utilizan las minsculas; las maysculas se usan para las constantes. Las palabras reservadas o tambin conocidas como palabras claves sirven para indicar al microcontrolador que realice una tarea muy determinada (desde evaluar una comparacin, hasta definir el tipo de una variable) y tienen un especial significado para el compilador es por ello que no pueden usarse como identificadores: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Cules son los tipos de datos bsicos que maneja CCS?


El estndar Ansi define un conjunto de tipos bsicos y su tamao mnimo. En distintas implementaciones del lenguaje C estos tamaos puede cambiar, as por ejemplo: el int se define en Ansi C como un tipo de dato que almacena enteros en un rango de 32767 hasta +32767, sin embargo para el compilador CCS en 8 bits (PCB,PCM y PCH), el valor es un entero positivo en el rango 0 a 255. En CCS los tamaos estn definidos por el ancho del bus de datos que posee el microcontrolador PIC, de esta forma los tamaos para los micros de 8 bits (PIC10,PIC12 y PIC16) no son iguales al de los micros de 16 bits de datos (PIC24, dsPIC30 y dsPIC33) :

Micros PIC10, PIC12,PIC16 y PIC18 TIPO ANCHO EN BITS char (carcter) 8 int (entero) 8 long(entero largo) 16 long long (entero extra largo)32 float (real) 32 short 1 void 0 Micros PIC24, dsPIC30 y dsPIC33 TIPO ANCHO EN BITS char (carcter) 8 int (entero) 16 long(entero largo) 32 long long (entero extra largo)64 float (real) 32 double 64 short 8 void 0 BYTES 1 2 4 8 4 8 1 0 BYTES 1 1 2 4 4 0 0

A diferencia del compilador ANSI C CCS tiene sus tipos de datos predefinidos sin signo, es decir que solo podemos almacenar valores positivos excepto que especifiquemos antes del tipo la palabra clave signed

Qu son los operadores aritmticos en C ?


Son usados para definir una operacin aritmtica entre distintos operandos, estos pueden ser los siguientes:
OPERADOR + * / % -++ ACCIN Resta Suma Multiplicacin divisin. (slo para enteros) Resto de la divisin entera Decremento Incremento

Los operadores de decremento e incremento equivalen a: a = a + 1 = a++ a=a-1=a-En caso de presentarse a con el operador delante: A = 8; B = ++A; B toma el valor de 9. Pero de plantearse lo siguiente: A = 8; B = A++; B toma el valor de 8. O sea que en este ltimo caso, primero ocurre la asignacin y luego el incremento en A.

Para qu son los operadores de relacin?


Estos operadores se usan para establecer una relacin comparativa entre dos operandos. Los utilizados son los siguientes: OPERADOR > >= < <= == != ACCIN Mayor que Mayor igual que Menor que Menor igual que Igual que Distinto que

Qu son los operadores lgicos?


Estos operadores se usan para establecer una relacin lgica entre 2 comparaciones, generalmente se usan dentro de las estructuras condicionales que luego veremos. OPERADOR && || ! ACCIN And Or Not

La operacin lgica no se realiza a nivel bit entre los operandos, sino que establece una relacin entre condiciones comparativas en las que participan los operandos, ejemplo (condicin 1) && (condicin 2) establece que si se cumple la condicin 1 y la condicin 2.

En C, cualquier valor distinto de 0 es VERDADERO. FALSO es 0 (cero). Bueno hasta aqu hemos llegado con el artculo, nos encontraremos en nuestra prxima nota. Continuar.......

Você também pode gostar