Está en la página 1de 13

Dia: 2

Expositor: Daniel Camacho Pastor


Llamadas en inglés “preprocessor directives”, son comandos que
interpreta el primer paso de la compilación que lleva a cabo CCS.
Todas las directivas para el compilador comienzan con el
carácter # seguido por un comando específico

Permite incluir en nuestro programa uno o mas archivos que


posean extensión .h
Estos archivos contienen información sobre funciones, sus
argumentos o cualquier otro segmento de código que usemos
habitualmente en nuestros programas.
FORMA DE USO:
#INCLUDE <archivo> o #INCLUDE “archivo”
EJEMPLO:
#INCLUDE <PIC16F877A.H>
Permite modificar el valor de los fuses (Palabra de configuración)
del Microcontrolador que estamos empleando.
La Palabra de configuración dependerá de cada Microcontrolador
en particular.

FORMA DE USO:
#FUSE opciones

DONDE LAS OPCIONES PUEDEN SER:


Tipo de oscilador: LP, XT, HS, RC
Wach Dog Timer: WDT, NOWDT
Protección de código: PROTECT, NOPROTECT
Power Up Timer: PUT, NOPUT
Brown Out Reset: BROWNOUT, NOBROWNOUT
Wach Dog Timer: WDT, NOWDT
Su funcionamiento es sumamente sencillo. Simplemente es un registro que debemos borrar
cada cierto tiempo. Si pasa un tiempo X y ese registro no ha sido borrado, el pic se resetea.
Esto se usa como sistema de protección ante un posible cuelgue del PIC.
Tipo de oscilador: LP, XT, HS, RC
RC: Se basa en un montaje con una resistencia y un condensador. La velocidad a la que
oscile el pic dependerá de los valores del condensador y de la resistencia.
XT: Se suele usar este modo de oscilación cuando usamos oscilador con cristal de cuarzo
pero a baja velocidad. Por ejemplo 4 Mhz.
HS: Para cuando necesitemos aplicaciones de "alta velocidad"(más de 4 Mhz ). Se basa
también en un cristal de cuarzo, como el XT
LP: "Low Power" En este modo de oscilación el pic consume menos a costa de bajar su
frecuencia de oscilación a unos 200Khz. Al igual que el XT y el HS, necesitaremos de un
cristal de cuarzo y unos condensadores.
Protección de código: PROTECT, NOPROTECT
El código que escribamos en el PIC no podrá ser leído por otra persona, para que no nos lo
copien, modifiquen, etc. Esto no impide que el PIC funcione como siempre, ni que no se
pueda sobrescribir su contenido. Lo único que nos impide es leerlo.
Power Up Timer : PUT,NOPUT
Si activamos este FUSE, lo que conseguimos es que se genere un retardo en la inicialización
del Pic. Esto se usa para que la tensión se estabilice, por lo que se recomienda su uso.
Esta directiva indica al compilador la frecuencia del procesador,
en ciclos por segundo.
EJEMPLO DE USO:
#use delay(clock=4000000)  Frecuencia de trabajo 4Mhz

Con esta directiva rápida el compilador generara las


instrucciones de entrada/salida de datos sin tener que programar
el registro de dirección.
El puerto puede ser PORTA-PORTG.
EJEMPLO DE USO:
#use fast_io(A)
La directiva standard de I/O causará que el compilador genere
código para hacer que un pin de I/O sea entrada o salida cada vez
que se utiliza.
El puerto puede ser PORTA-PORTG.
EJEMPLO DE USO:
#use standard_io(A)

Permite crear una nueva variable, que será colocada en la


memoria del PIC en la posición del byte x.
Esta es una herramienta muy útil para acceder de una manera
sencilla a los registros del PIC.
EJEMPLO DE USO:
#Byte Port_B=0x06 //Variable “PORT_B” En la dirección de memoria 0x06
Permite la asignación de un determinado valor a una etiqueta
cualquiera.

La instruccion #define tiene la siguiente forma:


#DEFINE <etiqueta> valor

EJEMPLO DE USO:
#DEFINE pi 3.14159265359 //Cada vez que en nuestro programa
//aparezca la etiqueta pi, el
//precompilador la reemplazará por
//3.14159265359
Pone a 'uno‘ lógico (5 Vdc) el pin indicado. El método de acceso
de I/O depende de la última directiva #USE *_IO utilizada.

EJEMPLO DE USO:
output_high(PIN_A0); //El pin A0 del PUERTO A es puesto a “1” Lógico

Pone a 'cero' lógico el pin indicado. El método de acceso de I/O


depende de la última directiva #USE *_IO utilizada
EJEMPLO DE USO:
output_low(PIN_B6); //El pin B6 del PUERTO B es puesto a “0” Lógico
Esta función saca el bit dado en value (“0” o “1”) por la patilla de I/O
especificada en pin.
EJEMPLO DE USO:
output_bit( PIN_A0, 0) //El pin A0 del PUERTO A es puesto a “0” Lógico
output_bit( PIN_A4, 1) //El pin A4 del PUERTO A es puesto a “1” Lógico

Esta función complementa el valor del pin especificado.

EJEMPLO DE USO:
output_high(PIN_B6) //El pin B6 del PUERTO B es puesto a “1” Lógico
output_toggle(PIN_B6); //Complementa el valor de PIN_B6 y se saca un “0”
//lógico por dicho pin
Esta función simplemente pone a '0’ el dígito especificado en bit
del byte o palabra aportado en var. El bit menos significativo es el
‘0’.
EJEMPLO DE USO:
bit_clear(PortA,3); //Establece el Pin RA3 del puerto A en “0” Lógico

Esta función simplemente pone a ‘1’ el dígito especificado en bit


del byte o palabra aportado en var. El bit menos significativo es el
‘0’.
EJEMPLO DE USO:
bit_set(PortB,7); //Establece el Pin RB7 del puerto B en “1” Lógico
Esta función examina y devuelve el valor del dígito especificado
en bit del byte o palabra aportado en var.
EJEMPLO DE USO:
Var= bit_test(PortA,3); //La variable “Var” toma el valor actual del
//pin RA3 del puerto A

Esta función intercambia el nibble alto con el nibble bajo del byte
dado.

EJEMPLO DE USO:
x=0x45 //Se asigna a la variable X el valor de 0x45
swap(x); // La variable X ahora tiene 0x54
Devuelve el estado '0' o '1' de la patilla indicada en pin. El valor de
retorno es un entero corto.
EJEMPLO DE USO:
Var=Input(Pin_A0) //La variable “Var” toma el valor actual del pin A0 del
//puerto A

Esta función permite escribir directamente los registros tri-estado


para la configuración de los puertos. Esto debe usarse con FAST_IO(),
cada bit de value representa una patilla. Un '1' indica que la patilla es
de entrada y un '0' que es de salida.

EJEMPLO DE USO:
Set_Tris_B(0b11110000) //Se configuran los pines RB0, RB1, RB2, RB3
//como salidas y se configuran los pines RB4, RB5,
//RB6, RB7 como entradas
Esta función realiza retardos del valor especificado en tiempo.
Dicho valor de tiempo es en milisegundos y el rango es (0-65535).
Es preciso utilizar la directiva #use delay(clock=frecuencia) antes
de la llamada a esta función.
EJEMPLO DE USO:
Delay_ms(20) //Retardo de 20 mili-segundos

Funciona igual que el anterior solo que en microsegundos y el


rango va desde (0 a 65535).
Es preciso utilizar la directiva #use delay(clock=frecuencia) antes
de la llamada a esta función.
EJEMPLO DE USO:
Delay_us(200) //Retardo de 200 micro-segundos

También podría gustarte