Programación PIC en C

 

Volver al índice

Sentencia If…Else

Cuando el programa llega a una sentencia condicional del tipo If …Else, primero se evalúa una expresión; si se cumple (es cierta) se ejecuta un bloque de sentencias y si es falsa se ejecuta otro bloque.

 

En la figura de abajo se muestra la sintaxis de esta sentencia condicional.

 

 

Sintaxis Sentencia if-else()

 

Ejemplo:

 

 

Ejemplo If-Else()

 

 

Comentario

Este ejemplo visualiza en el display de cátodo común, conectado a la puerta B del PIC, el “0” si el interruptor conectado a RA0 está abierto y “1” si está cerrado, para ello utiliza la sentencia if-else, dentro de un bucle infinito para que el programa esté siempre chequeando el estado de la patilla RA0.

 

En este ejemplo hemos incluido una directiva nueva #use fast_io(puerto). Esta directiva se utiliza para optimizar el código generado por el compilador cuando se utilizan funciones de manejo de entrada y salida como “input(pin)” definidas ya en CCS.

Si no se incluye esta directiva el compilador tomará por defecto la directiva #use standard_io(A),que hará que cada vez que se utilicen estas funciones se reprograme el pin correspondiente como entrada ó salida, lo que hará que el código ASM generado tras la compilación sea mayor.

 

Podemos comprobar esto si después de compilar nuestro ejemplo, dentro del IDE de CCS seleccionamos Compile--> C/ASM List

 

 

ROM usada al utilizar la directiva #use fast_io

 

Como se ve en la figura la memoria de programa (ROM) ocupa 21 palabras.

 

 

Ahora se pueden hacer las siguientes pruebas, la primera poner la directiva #use standard_io(A), y la segunda simplemente quitar la directiva #use fast_io(A) y no poner nada, según se muestra en la figura de abajo:

 

 

Ejemplo If-Else

 

 

 

Volvemos a compilar y en ambos casos obtendremos lo siguiente:

 

 

ROM usada sin utilizar la directiva #use fast_io

 

 

En ambos casos la memoria ROM utilizada es de 24 palabras, tres más que cuando utilizábamos la directiva #use fast_io(A).

 

Otras funciones para el manejo de bits de los puertos de entrada y salida que vienen definidas en CCS y que dependen de la directiva #use*_io() son:

 

  • output_bit(Nombre_pin,valor) --> coloca el pin indicado a 0 ó 1.
  • output_high(Nombre_pin) -->  coloca el pin indicado a 1.
  • output_low(Nombre_pin) --> coloca el pin indicado a 0

 

 

Fijaros que no he utilizado la directiva #use fast_io(B) para el puerto B, ya que no se utilizan funciones del compilador para el manejo de los bits de salida. En este caso el puerto B del PIC se controla mapeando la dirección de memoria del puerto B como una variable más en la RAM del PIC, por medio del identificador port_b.

 

Circuito del ejemplo:

 

Circuito del ejemplo If-Else

 

El código del ejemplo y el circuito en Proteus lo tenéis aquí

 

Un saludo

 

Volver al índice

 

© 2007-2017 AquiHayapuntes.com