Los programas son editados y compilados a instrucciones mquina en el PC. El cdigo mquina es cargado del PC al sistema PIC mediante el ICD2. El cdigo es ejecutado en el PIC y puede ser depurado (puntos de ruptura, paso a paso, etc) desde el PC. 2
Directivas de preprocesado
Programas Bloques de programa. Siempre debe incluirse una llamada main(). Sentencias Instrucciones que definen lo que hace el programa y la secuencia de ejecucin del mismo. Comentarios Imprescindibles cdigo fuente. como documentacin del
p.e.:int i;
Los tipos de datos aceptados en C estndar son cinco: char (carcter) int (entero) float (coma flotante en 32 bits) double (coma flotante en 64 bits) void (sin valor) Las variables pueden ser locales o globales. Las variables locales slo pueden ser usadas en la funcin en que se declaran, mientras que las variables globales son compartidas por todas las funciones del programa (deben declararse fuera de cualquier funcin y antes de ser utilizadas). 4
Los tipos de variable short y long pueden tener detrs la palabra int sin efecto alguno. 5
Los nmeros enteros negativos se codifican en complemento a 2. Cuando se opera con distintos grupos de datos en una misma expresin, se aplican una serie de reglas para resolver las diferencias. En general se produce una promocin hacia los tipos de datos de mayor longitud presentes en la expresin.
Argumentos de llamada
Los argumentos se pueden pasar a las funciones por valor o por referencia. La llamada por valor copia el argumento de llamada en el parmetro formal de la funcin (No modifica su valor en la funcin de partida). La llamada por referencia usa la direccin de la variable que se pasa a la funcin (se consigue usando punteros o arrays). 9
De asignacin
Aritmticos
10
Lgicos
De bits
11
Desplazamiento bit
Direccin/indireccin
En lenguaje C profesional es muy frecuente usar abreviaturas. As, por ejemplo, es ms habitual ver a += b; que a = a + b;
12
13
14
Sentencia if-else Se evala una expresin y, si es cierta, se ejecuta el primer bloque de cdigo (o sentencia 1). Si es falsa, se ejecuta el segundo.
if (expresin) sentencia 1; else sentencia 2;
15
16
17
18
20
22
Directivas de preprocesado ms habituales: #ASM #ENDASM #BIT id=x.y #BYTE id=x Las lneas entre estas dos directivas deben ser instrucciones ensamblador que se insertan tal y como aparecen. Se crea una variable tipo bit correspondiente al bit y del byte x en memoria. Se crea una variable y se sita en el byte x en memoria. Si ya exista esa variable, se coloca fsicamente en la posicin especificada. 24
#SEPARATE
La funcin que sigue a esta directiva se implementa de manera separada (no INLINE). De esta manera se ahorra ROM
25
#INT_xxxx #INT_GLOBAL
#PRIORITY ints
#USE DELAY (clock = frecuencia en Hz) Define la frecuencia del oscilador que se va a utilizar, que se emplea para realizar los clculos para funciones integradas de retardo. 26
27
28
29
Se puede Crear o abrir un fichero (FILE > NEW / OPEN) o crear un proyecto (conjunto de ficheros y opciones de compilacin que se utilizan en un programa). Los proyectos tienen la extensin PJT. Para crear un nuevo proyecto PROJECT > NEW > PIC WIZARD / MANUAL CREATE
30
31
Una vez definidas estas variables se pueden configurar y controlar los puertos mediante comandos de asignacin.A partir de este punto, estas variables permiten controlar los puertos y se pueden utilizar en sentencias de asignacin.
// 8 terminales de entrada // 8 terminales de salida // 4 pin de mayor peso OUT,4 pin de menor peso IN 33
34
bit_set (PORTC , 4); //saca un 1 por el terminal RC4 if (bit_test(PORTB,0)==1) bit_clear(PORTB,1); //si RB0 es 1 borra RB1 Tambin se puede declarar un bit de un registro con una variable mediante la directiva #BIT y trabajar directamente con la variable.
SW1 D1
LED-BLUE SW-SPST-MOM
R1
180
COMPILAR (F9)
MONTARLO
36
37
38
#USE FAST_IO (PUERTO) [PUERTO: A] Cada vez que se emplea una funcin output...() se saca el valor directamente al puerto, y cada vez que se emplea una funcin input...() se lee el puerto, pero no se modifican previamente el registro TRIS correspondiente. El usuario debe asegurarse de que los registros TRIS estn cargados adecuadamente antes de llamar a las funciones. Ej. #USE FAST_IO (B) #USE STANDARD_IO (PUERTO) [PUERTO: A] Cada vez que se emplea una funcin output...() se inserta cdigo previo para forzar a que el bit particular o el puerto completo sean de salida (mediante la carga del TRIS correspondiente). Si se trata de una funcin input...() se carga cdigo para definir bit o puerto completo como de entrada. sta es la opcin activa por defecto. Ej. #USE STANDARD_IO (C) 39
40
41
42
Para lee el valor del pin 7 del portB: If (*portb & 0b10000000) {..
43
44