Sei sulla pagina 1di 4

CAPITULO 2_Compilador CCS C

Estructura de un programa.

1. Directivas del preprocesador.


2. Programas o funciones.
3. Instrucciones.
4. Comentarios.

Variables.

TIPO nombre-variable [= Valor Inicial]

Funciones.

TIPO_DATO nombre-funcin (tipo param1, param2,)

Declaraciones de control.

1. IF ELSE (Para tomar decisiones)

if(expresin)
sentencia_1
[else
Sentencia_2]

Lo que est entre [ ] es opcional.

2. WHILE (Para repetir sentencias)

while(expresin)
{
Sentencias;
}

3. DO WHILE (las sentencias se ejecutan una vez por lo menos)

do
{
Sentencias;
}
while(expresin);

4. FOR (Para repetir sentencias)

for( inicializacin; condicin de finalizacin; incremento)


{
Sentencias;
}

5. SWITCH CASE (Caso particular de una decisin mltiple)


switch(expresin)
{
Case constante_1:
Sentencias;
Break;
Case constante_2:
Sentencias;
Break;
[default:
Sentencias;]

6. RETURN (devuelve datos en las funciones).


7. BREAK, CONTINUE y GOTO (Permite salir de un bucle), (), (provoca un salto incondicional)

DIRECTIVAS.

#device CHIP Permite definir el PIC con el que se realizara la compilacin.

#fuses OPTIONS Permite definir la palabra de configuracin para programar un PIC.

LP, XT, HS, NOWDT, WDT, NOPUT, PUT, PROTECT, NOPROTECT

#include <filename> Permite incluir fichero en el programa.

#use delay (clock = speed) Permite definir la frecuencia del oscilador del PIC

#asm y #endasm Permiten utilizar cdigo ensamblador en el programa en C

CAPITULO 3_LA GESTION DE LOS PUERTOS

Gestion de Puertos

1. A travs de la RAM.

Definicion: #BYTE variable = constante #BYTE TRISA = 0x85

Configurar: TRISA = 0xFF //8 terminales de entrada

Escribir en Puerto: PORTC = 0x0A //Salida de datos 00001010 por el puerto C

Leer el Puerto: valor = PORTA //Asigna el dato del puerto A a la variable valor

Manejo de sentencias: TRISD = 0x0F;

if(PORTD & 0x0F) PORTD |= 0xA0

Funciones bit a bit.

bit_clear (var, bit); //pone a 0 el bit especifico (0 a 7) de la variable

bit_set (var, bit); //pone a 1 el bit especifico (0 a 7) de la variable

bit_test (var, bit); //Muestra el bit especifico (0 a 7) de la variable


swap (var); //intercambia los 4 bits de mayor peso por los 4 de menor peso

2. A travs de DIRECTIVAS. Donde X es la inicial del Puerto (A, B, C, D,..)

output_X (valor); //por el puerto correspondiente saca el valor (0 255)

input_X (); //Se obtiene el valor en el puerto correspondiente

set_tris_X (valor); //Carga el registro TRISx con el valor (0 255)

port_b_pullups(valor); //Mediante el valor=TRUE o valor=FALSE habilita las resistencias

//Pull-Up en PORTB

get_trisX() //Devuelve el valor del registro TRISx

Funciones asociadas a un pin*, se define en un fichero include.

Tipo PIN_Xn, X=puerto, n=nmero de pin.

#define PIN_A0 40

#define PIN_A1 41

Las funciones son:

output_low (pin*); //pin a 0

output_high (pin*); //pin a 1

output_bit (pin*, valor) //pin al valor especificado

output_toggle (pin*); //Complementa el valor del pin

output_float (pin*); //Pin de entrada, quedando a tensin flotante

//simula salida a drenador abierto

input_state (pin*); //lee el valor de pin sin cambiar el sentodo del terminal

input (pin*); //lee el valor del pin

a. #USE FAST_IO (PUERTO) [PUERTO: A, B, C,..]


b. #USE STANDAR_IO (PUERTO) [PUERTO: A, B, C,..]
c. #USE FIXED_IO (PUERTO_OUTPUTS = pin*,) [PUERTO: A, B, C,..]
3. Con PUNTEROS.

Los punteros se definen como:

#define TRISA (int*) 0x85

#define PORTA (int*) 0x05

Usamos el operando *.

Potrebbero piacerti anche