Lenguaje C Para PIC1

download Lenguaje C Para PIC1

of 21

description

Lenguaje C para PIC1

Transcript of Lenguaje C Para PIC1

Lenguaje C para PIC: Fundamentos Bsicos para la Programacin de PIC en Lenguaje C (4 sesiones, 8 horas) 2) Caractersticas del Compilador C para PIC (1 sesin, 2 horas) 3) Uso de Directivas (1 sesin, 2 horas) 4) Manejo de Libreras en Lenguaje C para PIC: Uso de la memoria EEPROM, Convertidor Analgico - Digital, Mdulos de Comparacin, Captura y PWM (CCP), Comunicacin RS-232 (6 sesiones, 12 horas) 5) Comunicacin Serial Sincrnica I2C en Lenguaje C para PIC (2 sesiones, 4 horas)TIPO DE DATODESCRIPCINTAMAO (NMERO DE BITS)RANGO DE VALORES

charTexto (caracteres)8de 0 a 255

intValores enteros16de -32768 a 32767

doubleValores en punto flotante de doble precisin32de 1.1754943508210-38a 6.805647744071038

El tipo double en mikroC equivale al tipo float.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. Por defecto, los datos de tipo int son con signo, mientras que los de tipo char son sin signo. El calificador signed (con signo) indica que el dato puede ser positivo o negativo. El prefijo unsigned indica que el dato puede ser slo positivo.TIPO DE DATOTIPO DE DATO CON PREFIJOTAMAO (NMERO DE BITS)RANGO DE VALORES

charsigned char8de -128 a 128

intunsigned int16de 0 a 65535

short int8de 0 a 255

signed short int8de -128 a 127

long int32de 0 a 4294967295

signed long int32de -2147483648 a 2147483647

Tipo entero (int)

0x11 // formato hexadecimal equivale a decimal 1711 // formato decimal-152 // formato decimal011 // formato octal equivale a decimal 9 0011 // formato binario equivale a decimal 3Tipo punto flotante (float)0. // = 0.0-1.23 // = -1.2323.45e6 // = 23.45 * 10^62e-5 // = 2.0 * 10^-53E+10 // = 3.0 * 10^10.09E34 // = 0.09 * 10^34

Tipo carcter (char)59 // entero'p' // carcter ASCII 'p'

"Presione el botn RA0"VARIABLES Y CONSTANTES/* dos lneas de programa consecutivas. En la primera lnea del programase define el tipo de variable */

int a = 1000; // Variable a es de tipo int y equivale a 1000a = 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./* dos lneas de programa consecutivas */

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

Reglas para nombrarEl compilador mikroC reconoce 33 palabras clave:

MIKROC - PALABRAS CLAVE

absolutedataifreturntypedef

asmdefaultinlinerxtypeid

atdeleteintsfrtypename

autodoioshortunion

bitdoublelongsignedunsigned

boolelsemutablesizeofusing

breakenumnamespacestaticvirtual

caseexplicitoperatorstructvoid

catchexternorgswitchvolatile

charfalsepascaltemplatewhile

classfloatprivatethis

codeforprotectedthrow

constfriendpublictrue

continuegotoregistertry

Ejemplos de los identificadores vlidos e invlidos:temperatura_V1 // OKPresin // OKno_corresponder // OKdat2string // OKSuM3 // OK_vtexto // OK7temp // NO -- no puede empezar con un nmero%ms_alto // NO -- no pueden contener caracteres especialesif // NO -- no puede coincidir con una palabra reservadaj23.07.04 // NO -- no puede contener caracteres especiales (punto)nombre de variable // NO -- no puede contener espacio en blancoDeclaracin de variablesSi hay varias variables con el mismo valor inicial asignado, el proceso se puede simplificar:unsigned int peso1 = peso2 = peso3 = 20;int valor_inicial = un_mnimo_de_petrleo = 0;Dos siguientes declaraciones son equivalentes:const int MINIMUM = -100; // Declarar constante MINIMUMconst MINIMUM = -100; // Declarar constante MINIMUM

Las constantes pueden ser de cualquier tipo, incluyendo cadenas:const T_MAX = 3.260E1; // constante de punto flotante T_MAXconst I_CLASS = 'A'; // constante carcter I_CLASSconst Mensaje = "Presione el botn IZQUIERDA"; // constante de cadena Mensajeenum surtidores {AGUA,GASLEO,CLORO}; // AGUA =0; GASLEO =1; CLORO =2enum surtidores {AGUA,GASLEO=0,CLORO};//AGUA =0; GSOLEO =0; CLORO =1

int Velocidad_de_ascensorenum motor_de_ascensor {PARADA,INICIO,NORMAL,MXIMO};Velocidad_de_ascensor = NORMAL; // Velocidad_de_ascensor = 2

Definir los nuevos tipos de datosLa 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 intpositivo a,b; // Variables a y b son de tipo positivoa = 10; // Variable a equivale a 10b = 5; // Variable b equivale a 5

mbito de variables y constantes

Clases de almacenamientoauto 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.

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. En los siguientes ejemplos, el programa consiste en dos archivos: File_1 y File_2. El File_1 utiliza una variable y una funcin declaradas en File_2.File 1:extern int cnt; // Variable cnt es visible en File_1extern 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 ..}

OPERADORES DE ASIGNACIN

OperadorEjemplo

ExpresinEquivalente

+=a += 8a = a + 8

-=a -= 8a = a - 8

*=a *= 8a = a * 8

/=a /= 8a = a / 8

%=a %= 8a = a % 8

int a = 5; // Declarar e inicializar la variable aa += 10; // a = a + 10 = 15

OperadorEjemploDescripcin

++++aVariable "a" es incrementada por 1

a++

----bVariable "a" es decrementada por 1

b--

int a, b, c;a = b = 5;c = 1 + a++; // c = 6b = ++c + a // b = 7 + 6 = 13

OperadorDescripcinEjemploCondicin de veracidad

>mayor queb > asi b es mayor que a

>=mayor o igual quea >= 5si a es mayor o igual que 5