Sistemas Basados en
    Microprocesadores

Programación en C para PIC’s
Lenguaje de programación C
 Es un lenguaje orientado a la implementación de
 sistemas operativos.
    Es muy apreciado por la eficiencia del código que
     produce.
 Esun lenguaje de medio nivel con muchas
 características de bajo nivel.
    Dispone de estructuras típicas de alto nivel,
    pero a la vez permite un control del sistema a muy bajo
     nivel.
                         Permite incluir código
                       ensamblador en código C




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: tipos de datos
 Los
    tipos de datos especifican los diferentes
 tamaños de valores para..
    Constantes: valor de cualquier tipo que nunca cambia.
    Variables: una variables es una forma de referirnos a una
     posición de memoria utilizada en un programa.
        Puntero: tipo especial de variable en C que contiene la
         dirección en memoria de otra variable.




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: tipos de datos (continuación...)
Tipo                               Tamaño         Mínimo      Máximo
char, signed char                   8 bits          -128        127
unsigned char                       8 bits           0          255
int, short                          16 bits       -32768       32767
unsigned int, unsigned short        16 bits          0         65535
short long                          24 bits      -8388608     8388607
unsigned short long                 24 bits          0       16777215
long                                32 bits    -2147483648   2147483647
unsigned long                       32 bits          0       4294967295




  http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: variables
 Lasvariables deben ser declaradas en las rutinas
 antes de utilizarse.
    Siempre al principio de la función.
 La   declaración debe especificar:
    Tipo de la variable.
    Denominación de la variable.
 Enel momento de su declaración, las variables
 pueden ser inicializadas.
        int a = 0




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: variables (continuación...)
 Matrices    de datos en ROM (arrays)
       const rom char *dataarray = “Press button to select...”
       const rom char tunes[] = {“Press”,”button”,”to”}
 Etiquetas     en C  parecidas a las constantes
       #define LightsON           0x01100110
       #define LED                PORTAbits.RA5




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: variables (continuación...)
 Espacio      de la variables:
    Global: declaradas fuera de la función main.
        Son accesibles desde cualquier punto del programa y su vida
         útil es mientras que se ejecute el programa.
    Local: declaradas dentro de una función.
        Son accesibles sólo dentro de la función donde se declaran y
         su vida útil es mientras que esa función se ejecuta.
    Si al programador le interesa mantener el valor de
     variable para llamadas posteriores de la función, debe ser
     declarada como estática (static).




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: variables (continuación...)
 Acceder     a datos de memoria:
    Por su nombre:
       int a;
       a = 17;
    Por su dirección (a través de punteros):
       int *bk, a;
       bk = &a;




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: estructuras
 Condicionales:
       if (expresión)
       {
             sentencias
       }
       else
       {
              sentencias
       }




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: estructuras (continuación...)
 Bucles:                                   for (expr1;expr2;expr3)
       while (expresión)                    {
       {                                         sentencias
           sentencias                       }
       }

       do
       {
            sentencias
       }
       while (expresión);




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: estructuras (continuación...)
 Selección:
     switch (expresión)
     {
          case valor1:
              sentencias
              break;
         case valor2:
              sentencias
              break;
          ...
          default:
              sentencias
              break;
     }

 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: operadores
 Operadores       aritméticos:
    + suma
    - resta
    * multiplicación
    / división
    % resto
    ++ incremento
    -- decremento




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: operadores (continuación...)
 Operadores       lógicos y de desplazamiento:
    & and
    | or
    ^ xor
    ~ not
    >> desplazamiento a derecha
       PORTA = PORTA >> 4
    << desplazamiento a izquierda




 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: operadores (continuación...)
 Operadores       de comparación y lógicos:
    == igual
    != no iguales
    > mayor que
    >= mayor o igual que
    < menor que
    <= menor o igual que
    && and
                                       No es lo mismo el
    || or                           operador & que el &&.
                                     ¿Cuál es la diferencia?
    ! not



 http://paginaspersonales.deusto.es/jonathan.garibay/
Conceptos en C: funciones
 Ellenguaje C está diseñado para el uso de
 funciones (conjunto de instrucciones que realizan
 una operación concreta), que se combinan para dar
 lugar a un programa.
    Programación estructurada.
 Lasvariables se pasan de una función a otra en
 forma de parámetros.
    Por defecto, el paso de parámetros es por valor.
 La  primera función que se ejecutará será la Main.
 Es necesario definir una función antes de poder
  utilizarla.
    Funciones prototipo.

 http://paginaspersonales.deusto.es/jonathan.garibay/
C y los microcontroladores PIC
 Referencia      a los registros del µcontrolador:
    Los registros del microcontrolador son direccionables en
     memoria como variables.                  Incluyendo el archivo de
       PORTA = LightsON;                                cabecera <p18fxxxx.h>
    Se puede hacer referencia a los bits individuales:
       TRISBbits.TRISB3 = 0;
       PORTBbits.RB4 = 1;
 #pragma      statements
    Específican detalles del microcontrolador que utilizamos
     (palabra de configuración).
       #pragma config OSC=XT, WDT=OFF



 http://paginaspersonales.deusto.es/jonathan.garibay/
C y los microcontroladores PIC (continuación…)
 Se debe indicar cuales son las funciones de
 interrupción por medio de la siguiente directiva:




 http://paginaspersonales.deusto.es/jonathan.garibay/
Ejemplo de programa en C
#include <p18F4520.h> /*Para las declaraciones de TRISB y
                      PORTB*/

int counter;                      //variable global

void main(void)
{
  counter=1;
  TRISB=0;                        //configuración de PORTB
  while (counter <=15)
  {
        PORTB = counter;          //mostrar el valor de counter
        counter++;
  }
}


 http://paginaspersonales.deusto.es/jonathan.garibay/

P03.Programación en c para pics

  • 1.
    Sistemas Basados en Microprocesadores Programación en C para PIC’s
  • 2.
    Lenguaje de programaciónC  Es un lenguaje orientado a la implementación de sistemas operativos.  Es muy apreciado por la eficiencia del código que produce.  Esun lenguaje de medio nivel con muchas características de bajo nivel.  Dispone de estructuras típicas de alto nivel,  pero a la vez permite un control del sistema a muy bajo nivel. Permite incluir código ensamblador en código C http://paginaspersonales.deusto.es/jonathan.garibay/
  • 3.
    Conceptos en C:tipos de datos  Los tipos de datos especifican los diferentes tamaños de valores para..  Constantes: valor de cualquier tipo que nunca cambia.  Variables: una variables es una forma de referirnos a una posición de memoria utilizada en un programa.  Puntero: tipo especial de variable en C que contiene la dirección en memoria de otra variable. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 4.
    Conceptos en C:tipos de datos (continuación...) Tipo Tamaño Mínimo Máximo char, signed char 8 bits -128 127 unsigned char 8 bits 0 255 int, short 16 bits -32768 32767 unsigned int, unsigned short 16 bits 0 65535 short long 24 bits -8388608 8388607 unsigned short long 24 bits 0 16777215 long 32 bits -2147483648 2147483647 unsigned long 32 bits 0 4294967295 http://paginaspersonales.deusto.es/jonathan.garibay/
  • 5.
    Conceptos en C:variables  Lasvariables deben ser declaradas en las rutinas antes de utilizarse.  Siempre al principio de la función.  La declaración debe especificar:  Tipo de la variable.  Denominación de la variable.  Enel momento de su declaración, las variables pueden ser inicializadas. int a = 0 http://paginaspersonales.deusto.es/jonathan.garibay/
  • 6.
    Conceptos en C:variables (continuación...)  Matrices de datos en ROM (arrays) const rom char *dataarray = “Press button to select...” const rom char tunes[] = {“Press”,”button”,”to”}  Etiquetas en C  parecidas a las constantes #define LightsON 0x01100110 #define LED PORTAbits.RA5 http://paginaspersonales.deusto.es/jonathan.garibay/
  • 7.
    Conceptos en C:variables (continuación...)  Espacio de la variables:  Global: declaradas fuera de la función main.  Son accesibles desde cualquier punto del programa y su vida útil es mientras que se ejecute el programa.  Local: declaradas dentro de una función.  Son accesibles sólo dentro de la función donde se declaran y su vida útil es mientras que esa función se ejecuta.  Si al programador le interesa mantener el valor de variable para llamadas posteriores de la función, debe ser declarada como estática (static). http://paginaspersonales.deusto.es/jonathan.garibay/
  • 8.
    Conceptos en C:variables (continuación...)  Acceder a datos de memoria:  Por su nombre: int a; a = 17;  Por su dirección (a través de punteros): int *bk, a; bk = &a; http://paginaspersonales.deusto.es/jonathan.garibay/
  • 9.
    Conceptos en C:estructuras  Condicionales: if (expresión) { sentencias } else { sentencias } http://paginaspersonales.deusto.es/jonathan.garibay/
  • 10.
    Conceptos en C:estructuras (continuación...)  Bucles: for (expr1;expr2;expr3) while (expresión) { { sentencias sentencias } } do { sentencias } while (expresión); http://paginaspersonales.deusto.es/jonathan.garibay/
  • 11.
    Conceptos en C:estructuras (continuación...)  Selección: switch (expresión) { case valor1: sentencias break; case valor2: sentencias break; ... default: sentencias break; } http://paginaspersonales.deusto.es/jonathan.garibay/
  • 12.
    Conceptos en C:operadores  Operadores aritméticos:  + suma  - resta  * multiplicación  / división  % resto  ++ incremento  -- decremento http://paginaspersonales.deusto.es/jonathan.garibay/
  • 13.
    Conceptos en C:operadores (continuación...)  Operadores lógicos y de desplazamiento:  & and  | or  ^ xor  ~ not  >> desplazamiento a derecha PORTA = PORTA >> 4  << desplazamiento a izquierda http://paginaspersonales.deusto.es/jonathan.garibay/
  • 14.
    Conceptos en C:operadores (continuación...)  Operadores de comparación y lógicos:  == igual  != no iguales  > mayor que  >= mayor o igual que  < menor que  <= menor o igual que  && and No es lo mismo el  || or operador & que el &&. ¿Cuál es la diferencia?  ! not http://paginaspersonales.deusto.es/jonathan.garibay/
  • 15.
    Conceptos en C:funciones  Ellenguaje C está diseñado para el uso de funciones (conjunto de instrucciones que realizan una operación concreta), que se combinan para dar lugar a un programa.  Programación estructurada.  Lasvariables se pasan de una función a otra en forma de parámetros.  Por defecto, el paso de parámetros es por valor.  La primera función que se ejecutará será la Main.  Es necesario definir una función antes de poder utilizarla.  Funciones prototipo. http://paginaspersonales.deusto.es/jonathan.garibay/
  • 16.
    C y losmicrocontroladores PIC  Referencia a los registros del µcontrolador:  Los registros del microcontrolador son direccionables en memoria como variables. Incluyendo el archivo de PORTA = LightsON; cabecera <p18fxxxx.h>  Se puede hacer referencia a los bits individuales: TRISBbits.TRISB3 = 0; PORTBbits.RB4 = 1;  #pragma statements  Específican detalles del microcontrolador que utilizamos (palabra de configuración). #pragma config OSC=XT, WDT=OFF http://paginaspersonales.deusto.es/jonathan.garibay/
  • 17.
    C y losmicrocontroladores PIC (continuación…)  Se debe indicar cuales son las funciones de interrupción por medio de la siguiente directiva: http://paginaspersonales.deusto.es/jonathan.garibay/
  • 18.
    Ejemplo de programaen C #include <p18F4520.h> /*Para las declaraciones de TRISB y PORTB*/ int counter; //variable global void main(void) { counter=1; TRISB=0; //configuración de PORTB while (counter <=15) { PORTB = counter; //mostrar el valor de counter counter++; } } http://paginaspersonales.deusto.es/jonathan.garibay/