Professional Documents
Culture Documents
Bibliografa: El lenguaje de programacin C, Kernighan y Ritchie, Editorial Prentice Hall. Como programar en Lenguaje C, Biblioteca Tcnica de Programacin. Manual del Usuario de CC5X en formato Acrobat Reader. Instalacin de CC5X: Crear un directorio con el nombre CC5X: En DOS estando en el directorio raz escribir: MD CC5X y apretar la tecla Enter Si es en Windows 9X, usando el Explorador de Windows y ubicndose en el directorio raz con el botn derecho del ratn elegir NUEVO y en el men que se despliega elegir Carpeta, y por ltimo cambiarle el nombre a CC5X (aparece como Nueva Carpeta). Luego copiar todos los archivos del CC5X a este directorio, o descompactar el archivo dentro de este directorio. Luego copiar desde CC5X al directorio donde est instalado el MPLAB (usualmente es C:\Archivos de Programa\MPLAB) dos archivos llamados CC5X.MTC y TLCC5X.INI A continuacin abrir el MPLAB elegir el men PROJECT y en l, elegir sub item Install Language Tool. Aparecer una ventana como la siguiente:
Cambiar los campos Language Suite, Tool Name, y Executable a lo que se ve aqu arriba y Luego apretar el botn OK. Ver en MPLAB como se escribe un programa, se crea un projecto y se compila programando en C.
VARIABLES en C
Declaracin de Variables
Una declaracin de variable es una sentencia del programa en donde se especifica el Nombre de la variable y el tipo de dato que esta puede contener. Por ej. si escribimos: int Presion1; declara una variable con el nombre Presion1 que puede almacenar un entero de 8 bits en el compilador CC5X.
16 bit 24 bit
Comentarios: Los comentarios en un programa pueden precederse en una lnea con doble barra (//). O pueden encerrarse con /* Esto es un Comentario */.
Constantes
Hexadecimal Binaria 0xA3 bin(0000.1100) o 0b.00001100
Directivas
#include Esta directiva, como ya sabemos, incluye durante la compilacin un archivo en el archivo fuente actual, la sintaxis es: #include <nombre del archivo> #include nombre del archivo #define esta directiva asocia identificadores con un valor numrico o una expresin. Incluso puede definir funciones que sern expandidas en el lugar donde se produzca su llamada (macros). Ej. #define PORTB 6 #pragma: mecanismo para cada compilador, para pasarle operaciones particulares durante una compilacin. Si el compilador no reconoce esa operacin no dar error. Brinda mas informacin al compilador y mas funcionalidades particulares de la computadora o del sistema operativo. Ej. #pragma return[] = 9 6 5 10 Esqueleto de un programa en lenguaje C en el compilador CC5X #include C:\CC5X\16F873.H #define temp 25 void Retardo(uns8); void otra_funcion(void); void main(void) { } void Retardo(uns8 T) { } void otra_funcion(void) { }
Temas faltantes:
Operadores
Precedencia de operadores en C
Highest: ( ) ++ -* / % + << >> < <= > >= == != & ^ | && || Lowest: = += -= *= /= etc.
Operadores Relacionales
Para poder tomar decisiones en un programa necesitamos hacer comparaciones, esto implica que necesitamos otros tipos de operadores llamados relacionales
< > ==
<= >= !=
Variables static, globales, static, locales, auto. Control de flujo: Las sentencias o proposiciones de control de flujo de un lenguaje especifican el orden en que se realizan las computaciones. Proposiciones y bloques Una expresin como X=0, a=b*C se convierte en una proposicin cuando va seguida por Un punto y coma: X=0; a=b*C; El punto y coma es un terminador de sentencia. Con las llaves {} se agrupan declaraciones y sentencias en una proposicin compuesta o bloque.
If
La forma mas sencilla de tomar decisiones es un if If(condicin) { sentencias; }
{ sentencias; }
If-Else La proposicin if-else sirve para tomar decisiones, la forma es: if(expresin) Proposicin 1 else Proposicin 2 La parte else es opcional, si la expresin es cierta (distinta de cero) se ejecuta la proposicin 1, si es falsa (cero) y si existe la parte else se ejecuta la proposicin 2.
sentencias;
LOOPS
Un loop ejecuta una secuencia de sentencias mientras una condicin es cierta, cuando No lo es (falsa), se sale del loop. Ejemplo: int contador; Contador=0; seguir: if(contador >= 100) { goto salga; } else { contador++; goto seguir; } salga
Pero el uso de la instruccin goto no est recomendado, ni las etiquetas. Veremos como hacer loop sin usar goto:
While
Mientras la condicin sea cierta se ejecuta el bloque de sentencias. while(condicin) { sentencias; .. } Ejemplo: while(1) { .................; .................; } la No condicin es cierta? Si Sentencias
For
Otra forma de controlar un loop es con un for. Este tiene tres argumentos, una condicin inicial, una final y una para incrementar la variable de control del loop. for(asignacin inicial, condicin final, incremento) { sentencias; } Ejemplo; int i; for(i=0; i <= 200; i++) { PORTB = i; } Otro ejemplo: Loop infinito for( ; ; ) { sentencia; }
Otro tema para hoy 11/10/2002 Se empieza a resolver un problema para hacer un controlador de una dobladora de caos. Y al empezar a programar se ensean nuevos conceptos como el de bit y definicin de Funciones. En CC5X puedo definir el nombre de un bit en particular de la siguiente forma: bit <nombre del bit> @ puerto.<posicin del bit> Ej: bit RB0 @ PORTB.0 #include "c:\cc5x\16f873.h" const int tabla1[4] = { 9, 5, 6, 7}; void main(void) { PORTB=tabla1[0]; PORTB=tabla1[1]; PORTB=tabla1[2]; PORTB=tabla1[3]; }
do while
do{ sentencias; NO . }while(condicion);
Se resolvi un problema de una mquina dobladora de caos, estudio de E/S, Diagrama de Flujo y posterior programa en lenguaje C. Para el 1/11/2002?
Otros conceptos:
switch(variable){ case constante1: sentencia; sentencia; break; case constante2: sentencia; break; default: sentencia;
} switch(tecla){ case 1: sentencia; break; case 2: sentencia; break; case 3: sentencia; break; case 4: sentencia; break; } #pragma config<id>=<state>[,<id>=<state>] <id> PWRTE, WDTE, FOSC, BODEN, ID <state>: on, off, LP, HS, XT, RC, <number> ej: #pragma config WDTE=off, FOSC=XT #pragma config WDTE=0, FOSC=2, PWRTE=1
*p=100; VALOR=*(p+i);
p[0]=100.
PORTB=*(p+DECENA); es el operador de indireccin al anteponerlo a p, refiere al contenido de la direccin apuntada. Scope o mbito: Interrupts #pragma origin 4 interrupt servidor(void) { int_save_registers //macro que guarda W, STATUS y PCLATH
//Aqu van las instrucciones del interrupt int_restore_registers } TABLAS char tabla_step1( char W) { skip(W); #pragma return[] = 9 5 6 10 } // macro que recupera los registros guardados