SlideShare una empresa de Scribd logo
26/06/2012




                     MICROCONTROLADORES II
                       (FAMILIA PIC16F87X)
                      LENGUAJE C PARA PICS
                             TEMA 1

                           PROF. LUIS ZURITA




                    CARACTERÍSTICAS PIC16F87X
      •     Velocidad de operación: hasta 20 MHz de reloj.
      •     8K x 14 bits por palabra de memoria de programa FLASH.
      •     368 x 8 bytes de memoria de datos (RAM)
      •     256 x 8 bytes de memoria de datos EEPROM.
      •     14 fuentes de interrupciones.
      •     Memoria de pila (stack) de 8 niveles de profundidad.
      •     Protecciones:
             – Power-on Reset (POR)
             – Power-up Timer (PWRT)
             – Oscillator Start-up Timer (OST)
             – Watchdog Timer (WDT) independiente del cristal.
PROF. LUIS ZURITA                            DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                  1
26/06/2012




                    REGISTROS Y BANCOS




PROF. LUIS ZURITA                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




PROF. LUIS ZURITA                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                      2
26/06/2012




                    PUERTOS DE ENTRADA Y SALIDA


      • PORTA ( RA5, RA4, RA3, RA2, RA1, RA0 )

      • PORTB ( RB7, RB6, RB5, RB4, RB3, RB2, RB1, RB0 )

      • PORTC ( RC7, RC6, RC5, RC4, RC3, RC2, RC1, RC0 )

      • PORTD ( RD7, RD6, RD5, RD4, RD3, RD2, RD1, RD0 )

      • PORTE ( RE2, RE1, RE0 )

PROF. LUIS ZURITA                       DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                               IUT Cumaná




Prof. Luis Zurita                                                   Microcontroladores II




                                                                                                    3
26/06/2012




               CARACTERÍSTICAS (PERIFÉRICOS)
      • Timer 0: timer/counter de 8 bits con un pre-
        escalador de 8 valores.
      • Timer 1: 16-bit timer/counter con pre-escalador
      • Timer 2: 8-bit timer/counter con registro de estado
        de 8-bit, pre-escalador y post-escalador
      • Dos módulos de Captura, Comparación y PWM
        (Modulación por anchura de pulso)
             – Capture es de 16-bit, max. resolución es 12.5 ns
             – Compare es de 16-bit, max. resolución es 200 ns
             – PWM max. resolución de 10-bit


PROF. LUIS ZURITA                                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




              CARACTERÍSTICAS (PERIFÉRICOS )
      • Convertidor analógico a digital de 10-bit multi-
        canal
      • Puerto serial síncrono (SSP) con SPI. (modo
        maestro) e I2C (maestro/esclavo)
      • Transmisor-Receptor síncrono-asíncrono
        universal (USART/SCI) con 9-bit
      • Puerto paralelo esclavo (PSP) con 8-bits de
        ancho, con terminales de control RD, WR y CS


PROF. LUIS ZURITA                                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                      4
26/06/2012




                    ARQUITECTURA INTERNA
      • Arquitectura HARVARD.
      • Buses separados (datos e instrucciones).
      • Memoria de programa : 14 bits.
      • Memoria de datos: 8 bits.
      • Recursos mapeados en memoria de datos.


PROF. LUIS ZURITA                                   DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                        FUNCIONES PORTA
      Terminal                             Funciones
      RA0            Ent. Digital   Sal. Digital Ent. Analógica

      RA1            Ent. Digital   Sal. Digital Ent. Analógica

      RA2            Ent. Digital   Sal. Digital Ent. Analógica          VREF -

      RA3            Ent. Digital   Sal. Digital Ent. Analógica          VREF +

      RA4            Ent. Digital   Sal. Digital Ent. contador 1

      RA5            Ent. Digital   Sal. Digital Ent. Analógica



PROF. LUIS ZURITA                                   DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                         5
26/06/2012




                             FUNCIONES PORTB
      Terminal                                    Funciones
      RB0                    Ent. Digital Sal. Digital Ent. Interrupción 0

      RB1                    Ent. Digital Sal. Digital

      RB2                    Ent. Digital Sal. Digital

      RB3                    Ent. Digital Sal. Digital PGM ( función LVP )

      RB4                    Ent. Digital Sal. Digital

      RB5                    Ent. Digital Sal. Digital

      RB6                    Ent. Digital Sal. Digital PGC ( función LVP )

      RB7                    Ent. Digital Sal. Digital PGD ( función LVP )

PROF. LUIS ZURITA                                         DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                             FUNCIONES PORTC
   Terminal                                     Funciones
                    Ent. Digital Sal. Digital Sal. Osc timer 1         Ent. Contador 1
   RC0
                    Ent. Digital Sal. Digital Ent. Osc Timer 1         Captura/Comp/PWM 1
   RC1
                    Ent. Digital Sal. Digital                          Captura/Comp/PWM 2
   RC2
                    Ent. Digital Sal. Digital Reloj sincrono SPI       Reloj síncrono I2C
   RC3
                    Ent. Digital Sal. Digital Datos entrada SPI        Datos I2C
   RC4
                    Ent. Digital Sal. Digital Datos salida SPI
   RC5
                    Ent. Digital Sal. Digital Transmisión USART
   RC6
                    Ent. Digital Sal. Digital Recepción USART
   RC7
PROF. LUIS ZURITA                                         DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                               6
26/06/2012




                        FUNCIONES PORTD
      Terminal                           Funciones
      RD0            Ent. Digital Sal. Digital   Bit 0 puerto paralelo esclavo

      RD1            Ent. Digital Sal. Digital   Bit 1 puerto paralelo esclavo

      RD2            Ent. Digital Sal. Digital   Bit 2 puerto paralelo esclavo

      RD3            Ent. Digital Sal. Digital   Bit 3 puerto paralelo esclavo

      RD4            Ent. Digital Sal. Digital   Bit 4 puerto paralelo esclavo

      RD5            Ent. Digital Sal. Digital   Bit 5 puerto paralelo esclavo

      RD6            Ent. Digital Sal. Digital   Bit 6 puerto paralelo esclavo

      RD7            Ent. Digital Sal. Digital   Bit 7 puerto paralelo esclavo


PROF. LUIS ZURITA                                   DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                         FUNCIONES PORTE
      Terminal                             Funciones
      RE0           Ent. Digital Sal. Digital Ent. Analógica Lectura PSP

      RE1           Ent. Digital Sal. Digital Ent. Analógica Escritura PSP

      RE2           Ent. Digital Sal. Digital Ent. Analógica Habilitación PSP




PROF. LUIS ZURITA                                   DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                         7
26/06/2012




            LENGUAJE C. TIPOS DE DATOS.
                    El compilador CCS acepta los siguientes tipos de variables:
   Especificación            Significado         Tamaño                  Rango
   char                      carácter            8 bits                  0 a 255 (sin signo)
   Int                       entero              8 bits                  0 a 255 (sin signo)
   float                     Coma flotante       32 bits                 6 bits de precisión
   double                    Float doble         No soportado            No para PCM
                             precisión
   void                      Sin valor           nulo                    Ninguno
   int1                      Entero de 1 bit     1 bit                   0a1
   int8                      Entero de 8 bits    8 bits                  0 a 255 (sin signo)
   int16                     Entero de 16 bits   16 bits                 0 a 65535
   int32                     Entero de 32 bits   32 bits                 0 a (232-1)
   Short                     Entero de 1 bit     1 bit                   0a1
   long                      Entero de 16 bits   16 bits                 0 a 65535 (sin signo)
PROF. LUIS ZURITA                                             DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




            LENGUAJE C. TIPOS DE DATOS
               Todos los tipos de datos son por defecto sin signo (unsigned)
            salvo los de tipo float.
               Para almacenar datos con signo, hay que introducir el
            modificador signed delante del tipo. El efecto que se consigue es el
            recogido en la siguiente tabla.
           Especificación       Significado         Tamaño                   Rango
           Signed char           caractér con       8 bits                   -128 a 128
                                signo
           Signed int           Entero con signo 8 bits                      -128 a 128

           Signed long          Coma flotante       16 bits                  -32768 a 32768
               Los números negativos se codifican en complemento a 2.
                Cuando se opera con distintos grupos de datos en una misma
            expresión, se aplican una serie de reglas para resolver las
            diferencias.
                En general se produce una “promoción” hacia los tipos de datos
            de mayor longitud presentes en la expresión.
PROF. LUIS ZURITA                                             DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                                   8
26/06/2012




                     LENGUAJE C. CONSTANTES




PROF. LUIS ZURITA                  DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    OPERADORES ARITMÉTICOS




                    OPERADORES RELACIONALES



                         !=
PROF. LUIS ZURITA                  DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                        9
26/06/2012




                       OPERADORES LÓGICOS




                    OPERADORES A NIVEL DE BITS




PROF. LUIS ZURITA                    DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




               OPERADORES DE INCREMENTO Y
                      DECREMENTO




                    OPERADORES DE CORRIMIENTO




PROF. LUIS ZURITA                    DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                         10
26/06/2012




                                    VARIABLES
      • Las variables se utilizan para nombrar posiciones de memoria
        RAM; se deben declarar, obligatoriamente, antes de
        utilizarlas; para ello se debe indicar el nombre y el tipo de
        dato que se manejará. Se definen de la siguiente forma:
      • TIPO NOMBRE_VARIABLE[=VALOR INICIAL]
             – TIPO hace referencia a cualquiera de los tipos de datos
             – NOMBRE_VARIABLE puede ser cualquiera y el valor inicial es opcional.
             Ejemplos:
                    byte    k = 5;
                    byte    const SEMANAS = 52;
                    float   temp_limit=500.0;
                    char    k, kant=‘0’;
                    int     x,y,z;


PROF. LUIS ZURITA                                      DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                    VARIABLES
      • Las variables pueden ser de tipo LOCAL o GLOBAL.
      • Las variables locales sólo se utilizan en la función
        donde se encuentran declaradas; las variables
        globales se pueden utilizar en todas las funciones del
        programa. Ambas deben declararse antes de ser
        utilizadas y las globales deben declararse antes de
        cualquier función y fuera de ellas. Las variables
        globales son puestas a cero cuando se inicia la
        función principal main().


PROF. LUIS ZURITA                                      DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                           11
26/06/2012




            EJEMPLO DE VARIABLES LOCALES Y
                      GLOBALES
      int16 counter;                    //Variable global
      Void FUNCION ( )
      {
            int dato1, dato2=34;        //Variables locales
      }
      void main()
      {
            int8 suma;                  //Variable local
      }


PROF. LUIS ZURITA                           DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                               FUNCIONES
         Las funciones son los bloques constructivos
         fundamentales en C.
         Todas las sentencias deben encontrarse dentro de
         funciones.
         Las funciones deben ser definidas antes de ser utilizadas.
         Formato general de definición de una función:
      Tipo_dato nombre_función (tipo param1, tipo param2, …)
      {
              cuerpo de la función (sentencias);
      }
         El tipo de dato devuelto se indica mediante tipo_dato. Si
         no se indica nada, se entiende que devuelve un entero. Si
         no devuelve nada debe incluirse una especificación tipo
         void.
PROF. LUIS ZURITA                           DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                12
26/06/2012




                 La manera que tiene una función para devolver un
            valor es mediante la sentencia return:
            return (expresión);       ó return expresión;
                 La expresión debe proporcionar el mismo tipo de
            dato que el especificado en la función. Si no debe
            devolver nada, se finaliza con:
                 return;
                 Cuando una función se encuentra con una sentencia
            return se vuelve a la rutina de llamada inmediatamente y
            las sentencias posteriores a return no se ejecutan.
                 Además de con las sentencia return, las funciones
            terminan su ejecución y vuelven al lugar desde donde se
            les llamó cuando alcanzan la llave de cierre de función }
            tras ejecutar la última sentencia de la misma.
PROF. LUIS ZURITA                              DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




              Además de devolver valores, una función también puede
         recibir parámetros (denominados argumentos) según se indicó
         en su definición.
         Por ejemplo:
              int suma(int a, int b)        Parámetros
              {                             formales
                     return(a+b);
              }
              main()
              {
                     int c;                     Argumentos
                     c= suma(10 , 23);          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
         parámetro formal de la función y no modifica su valor en la
         función de partida.
PROF. LUIS ZURITA                              DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                   13
26/06/2012




                    DECLARACIONES DE CONTROL
     If-else
             Cuando la expresión evaluada es verdadera, Las
     instrucciones de la sentencia 1 son ejecutadas. Si la expresión es
     falsa, las instrucciones de la sentencia 2 son ejecutadas. La
     expresión debe ser evaluada a un valor entero. Los paréntesis
     que encierra la expresión son obligatorios.
     La palabra especial “else sentencia 2” es opcional.
       If – else:                          If – else:
          if (expresión)                      if (expresión) {
               sentencia1;                         sentencia1;}
          else                                else {
               sentencia2;                         sentencia2;}
PROF. LUIS ZURITA                                    DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




            Sentencia if.
               Se ejecuta una sentencia o bloque de código si la expresión que
               acompaña al if tiene un valor distinto a cero (verdadero). Si es cero
               (falso) continúa sin ejecutar la sentencia o bloque de sentencias.
               if (expresión) ó       if (expresión)
                     sentencia;                 {
                                                sentencia 1;
                                                sentencia 2;
                                                …
                                                }
            Sentencia if-else
               Se evalúa una expresión y, si es cierta se ejecuta el primer bloque
               de código o sentencia 1. Si es falsa, se ejecuta el segundo.
               if (expresión)                 NOTA: Se pueden combinar varios
                     sentencia 1;             if-else para establecer múltiples
               else                           caminos de decisión
                     sentencia 2;
            Abreviatura: (expresión)?(sentencia 1): (sentencia 2);

PROF. LUIS ZURITA                                    DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                         14
26/06/2012




                                  NO
                    A=0?                    C=5

                                                                    If (A==0) B=10;
                       SI                                           Else C=5;

                    B=10

                                                                    If (A!=1) B=10;
                                                                    Else C=5;




PROF. LUIS ZURITA                                        DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




             NO
                       A>10?                         If (A>10)
                                                        {IF(A>20) B=5;
                             SI                         Else B=15;}

                                       NO
                       A>20?                      B=15



                             SI

                           B=5



PROF. LUIS ZURITA                                        DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                             15
26/06/2012




                    NO
                               A>10?                    if (A>10)
                                                           {IF(A>20) B=15;}
                                   SI                   else B=5;
              B=5
                                            SI
                               A>20?                      B=15



                                   NO




PROF. LUIS ZURITA                                   DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




           Sentencia switch
              Sustituye a if-else cuando se realiza una selección múltiple que
              compara una expresión con una lista de constantes enteras o
              caracteres. Cuando se da una coincidencia, el cuerpo de sentencias
              asociadas a esa constante se ejecuta hasta que aparezca break.
           switch (expresión)
                                                     Nota: break es opcional. Si
           {                                         no aparece se sigue con el
           case constante 1:                         case siguiente.
                            grupo de sentencias;
                            break;                   default es opcional y el
           case constante 2:                         bloque asociado se ejecuta
                            grupo de sentencias; sólo si no hay ninguna
                            break;                   coincidencia    con     las
                                                     constantes especificadas.
           …
           default:                                  No puede haber dos
                            grupo n de sentencias; constantes iguales en dos
           }                                         case de la misma sentencia
                                                  switch.
PROF. LUIS ZURITA                                   DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                        16
26/06/2012




                                SI
                                                      switch (A){
                    A=0?              B=1                   case 0:
                                                            B=1;
                       NO                                   break;
                                                            case 2:
                                SI                          B=2;
                    A=2?              B=2
                                                            break;
                                                            case 3:
                       NO
                                                            B=3;
                                                            break;
                                SI
                    A=3?              B=3                   default:break;
                                                      }
                           NO


PROF. LUIS ZURITA                                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




           Sentencia de bucle for.
             Se emplea para repetir una sentencia o bloque de
             sentencias:
             for (inicialización; condición; incremento)
             {
                   sentencia(s);
             }
                   En la inicialización se le asigna un valor inicial a una
             variable que se emplea para el control de la repetición del
             bucle.
                   La condición se evalúa antes de ejecutar la sentencia.
             Si es cierta, se ejecuta el bucle. Si no, se sale del mismo.
                   El incremento establece cómo cambia la variable de
             control cada vez que se repite el bucle.
                   Es posible anidar bucles for para modificar dos o más
             variables de control.

PROF. LUIS ZURITA                                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                     17
26/06/2012




                                                For(N=1;N<=10;N++)
                        N=1                     {
                          NO                          Printf(“%u”,N);
                                                }
                                     NO
                     N<=10?


                          SI

                     IMPRIMIR N
                       N=N+1         SI


                               NO



PROF. LUIS ZURITA                                     DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




           Sentencia de bucle while:
              La repetición se lleva a cabo mientras sea cierta una expresión.
              while (expresión)
              {
                   sentencia(s);
              }
              La expresión se evalúa antes de cualquier iteración. Si es falsa, ya no
           se ejecuta la sentencia o bloque de sentencias.
           Sentencia de bucle do-while:
                do
                {
                     sentencia(s);
               }
               while (expresión)
              Las sentencias se ejecutan antes de que se evalúe la expresión, por
           lo que el bucle se ejecuta siempre al menos una vez.

PROF. LUIS ZURITA                                     DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                          18
26/06/2012




Figure 2.3.1           Comparison of While and Do..While Loop




              Condition
              True?                                      Statement
                                                         Block


           Statement
           Block                                          Condition
                                                          True?




        (a) While loop                              (b) Do..While loop




Listing 2.9            DOWHILE.C contains both types of ‘while’ loop
   //     DOWHILE.C
   //     Comparison of WHILE and DO WHILE loops

   #include "16F877A.H"

   main()
   {
   int outbyte1=0;
       int outbyte2=0;
       int count;

          count=0;                                // This loop is not
          while (count!=0)                        // executed
          {        output_C(outbyte1);
                   outbyte1++;
                   count--;
          }

          count=0;                                // This loop is
          do                                      // executed
          {        output_C(outbyte2);
                   outbyte2++;
                   count--;
          } while (count!=0);

          while(1){};
   }




                                                                                19
26/06/2012




     Figure 2.8       Break, continue and goto




                                      label




                               Statement
                               Block

                                           Continue
                               Goto
                                              Break




Listing 2.10       Continue, Break & Goto
//         CONTINUE.C
//         Continue, break and goto jumps

#include "16F877A.H"
#use delay(clock=4000000)

main()
{
    int outbyte;

      again: outbyte=0;                               // Goto destination

      while(1)
      {
          output_C(outbyte);                          // Loop operation
          delay_ms(10);
          outbyte++;

          if (!input(PIN_D0)) continue;               // Restart loop
          if (!input(PIN_D1)) break;                  // Terminate loop
          delay_ms(100);
          if (outbyte==100) goto again;               // Unconditional jump
      }
}




                                                                                     20
26/06/2012




                          COMENTARIOS
          Los comentarios se incluyen en el código fuente para documentar y
      orientar al programador sobre el código que se diseña.
         Son ignorados por el compilador y no afectan a la longitud ni
      rapidez de ejecución del código final.
         Un comentario se puede colocar en cualquier lugar del programa y
      pueden tener la longitud y el número de líneas que se quiera.
         Hay dos formatos posibles para los comentarios:
      Formato 1. Empiezan por // y llegan hasta el final de la línea.
         // Esto es un comentario.
      Formato 2. Empiezan por /* y finalizan por */. No es posible anidar
         comentarios con este formato. Ejemplos:
      /*Esto también es
      un comentario*/
      /*Pero esto que /*parece un comentario válido*/ no lo es*/

PROF. LUIS ZURITA                                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                      OTRAS SENTENCIAS
      • Return: se emplea para devolver datos en las
        funciones.
      • Break: permite salir de un bucle, se utiliza
        para While, For, Do y Switch.
      • Goto: provoca un salto incondicional.




PROF. LUIS ZURITA                                DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                     21
26/06/2012




                         DIRECTIVAS
      • Las directivas de pre-procesado comienzan
        con el símbolo # y continúan con un comando
        específico. La sintaxis depende del comando.
        Algunos comandos no permiten otros
        elementos sintácticos en la misma expresión.




PROF. LUIS ZURITA                     DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    DIRECTIVAS DE INTERÉS
      # DEVICE chip: permite definir el PIC con el que se
        realizará la compilación. Ejemplo:
            #device     PIC16F877
      #FUSES options: permite definir la palabra de
        configuración para programar un PIC. Ejemplo:
        #fuses XT,NOWDT,PUT,NOPROTECT, NOLVP
      #INCLUDE <archivo>: permite incluir un fichero en
        el programa. Ejemplo:
        #INCLUDE <16f877.h>

PROF. LUIS ZURITA                     DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                          22
26/06/2012




                    DIRECTIVAS DE INTERÉS
  #USE DELAY (CLOCK=SPEED): permite definir las frecuencias
    del oscilador del PIC, el compilador lo utiliza para realizar
    cálculos de tiempo. Se puede utilizar M, MHZ, K y KHZ para
    definir la frecuencia. Ejemplo:
         #use delay(clock=4000000)
    Luego de definida en las declaraciones se pueden utilizar
    las funciones:
         delay_ms(tiempo en milisegundos)
         delay_us(tiempo en microsegundos)
         delay_cycles(tiempo en base a los ciclos de máquina)


PROF. LUIS ZURITA                         DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                         FUNCIONES
      • El compilador CCS suministra una serie de funciones
        predefinidas para acceder y utilizar el PIC y sus
        periféricos. Estas funciones facilitan la configuración
        del PIC sin entrar en el nivel de los registros
        especiales.




PROF. LUIS ZURITA                         DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                              23
26/06/2012




                     ESTRUCTURA DE UN PROGRAMA

                    Encabezado               En general un programa está
                                       estructurado en tres grandes partes:
                                    a) Encabezado: Define el tipo de PIC con
                 Configuración,        que se está trabajando, Bloque de
                 Declaración de        declaraciones      de    variables   y
                Registros, Datos,      constantes,
                  Constantes y
                   funciones.       b) Configuración de registros especiales:
                                       Registro OPTION, INTCON, TMR0,
                                       puertos A y B, EECON, STATUS.
                       org          C) Cuerpo del programa: Aquí están
                                       contenidas todas las instrucciones
                    Cuerpo del
                                       relacionadas a la ejecución de un
                     Programa
                                       programa bajo un diseño individual,
                       end             realizado por el programador.




PROF. LUIS ZURITA                                  DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




             ESTRUCTURA DE UN PROGRAMA EN C
                        ( ciclo while )
      // Definición de variables globales
      // Definición de funciones
      void main(void)
      {
         // Definición de variables locales
            // Configuración de registros (recursos y puertos)
            // ciclo infinito
          while ( 1 )
           {
                // Programa de usuario
            }
      }
PROF. LUIS ZURITA                                  DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                       24
26/06/2012




             ESTRUCTURA DE UN PROGRAMA EN C
                         ( ciclo for )
      // Definición de variables globales
      // Definición de funciones
      void main(void)
      {
         // Definición de variables locales
            // Configuración de registros (recursos y puertos)
            // ciclo infinito
          for ( ; ; )
           {
                // Programa de usuario
            }
      }
PROF. LUIS ZURITA                                 DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




             ESTRUCTURA DE UN PROGRAMA EN C
                       ( ciclo do - while )
      // Definición de variables globales
      // Definición de funciones
      void main(void)
      {
         // Definición de variables locales
            // Configuración de registros (recursos y puertos)
            // ciclo infinito
          do
           {
                // Programa de usuario
            } while ( 1 ) ;
      }
PROF. LUIS ZURITA                                 DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                      25
26/06/2012




                     CONFIGURANDO UN PUERTO EN ASM

                     La configuración de puertos es muy fácil:
         1.          Se selecciona el banco 1
         •           Aquí se encuentran los registros que manipulan mediante software a
                     los circuitos triestados que determinan que un pin o puerto trabaje
                     como entrada o salida.
         2.          Se configuran mediante los registros asociados a los puertos (TRISA y
                     TRISB), los pines de un puerto como entrada o salida.
         •           Si coloco un uno (1) en un bit asociado a un puerto (RA0, RA1, RB5,
                     RB7,etc), éste se comportará como una entrada y solamente podremos
                     leer por esta entrada.
         •           Si coloco un cero (0) en un bit asociado a un puerto, éste se comportará
                     como una salida y solamente podremos escribir por esta entrada.
         •           Podemos hacer analogía de la siguiente forma:
                      1 = In = Entrada = Solo lectura
                      0 = Out = Salida = Solo escritura

Microcontroladores                                                                   Prof. Luis Zurita




                     CONFIGURANDO UN PUERTO EN ASM

                     La configuración de puertos es muy fácil:
         3.          Se selecciona o se regresa al banco 0, para trabajar con los puertos
                     que han sido previamente configurados.
         •           Si un puerto (o pin) ha sido configurado como salida, entonces se podrá
                     escribir sobre él, para sacar datos.
         •           Si un puerto (o pin) ha sido configurado como entrada, entonces se
                     podrá leer los datos que están ingresando por él.
         •           Nota: Escribir sobre un puerto (o pin) configurado como entrada, no
                     tiene ningún efecto. Si se desea escribir sobre él, es necesario que el
                     mismo sea habilitado como salida.




Microcontroladores                                                                   Prof. Luis Zurita




                                                                                                                26
26/06/2012




                    MANEJO DE LOS PUERTOS
      • En lenguaje C se pueden gestionar los puertos de dos
        formas:
         – Se declaran los registros TRISX y PORTX definiendo
           su posición en la memoria RAM como variables de
           C.
         – Utilizando las directivas específicas del compilador
           (#USE FAST_IO,#USE STANDARD_IO)




PROF. LUIS ZURITA                        DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    MANEJO DE LOS PUERTOS
      • A través de la RAM:
      #BYTE variable=constante. Ejemplo:
      #BYTE TRISA=0x85      //variable TRISA en 85h
      #BYTE PORTA=0x05 //variable PORTA en 05h
      #BYTE TRISB=0x86      //variable TRISB en 86h
      #BYTE PORTB=0x06 //variable PORTB en 06h
      #BYTE TRISC=0x87      //variable TRISC en 87h
      #BYTE PORTC=0x07 //variable PORTC en 07h

PROF. LUIS ZURITA                        DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                             27
26/06/2012




                    MANEJO DE LOS PUERTOS
      • Una vez definidas estas variables se pueden
        configurar y controlar los puertos a través de los
        comandos de asignación.
      TRISA= 0xFF;
      TRISB= 0x00;
      TRISC=0x0F;
      • Escritura en los puertos:
      PORTC=0x0A;
      • Lectura de puertos:
      dato=PORTA;         // Asigna el valor del puerto A a la
                          // variable dato.
PROF. LUIS ZURITA                        DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    MANEJO DE LOS PUERTOS
             Existen unas funciones de C que permiten trabajar
      bit a bit con los registros o variables definidas
      previamente. Estas funciones son las siguientes:
      bit_clear(var,bit);
      bit_set(var,bit);
      Bit_test(var,bit);
      Swap(var);
          Ejemplos:
      bit_set(PORTC,4);
      If (bit_test(PORTB,0)==1) bit_clear(PORTB,1);
PROF. LUIS ZURITA                        DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                             28
26/06/2012




                    MANEJO DE LOS PUERTOS
      • Se puede declarar un bit de un registro mediante la
        directiva #BIT, lo que permite trabajar directamente
        con el terminal:
      #BIT nombre = posición.bit. Ejemplo:
      #BIT RB4=0x06.4 //PORTB=0x06
      RB4=0;




PROF. LUIS ZURITA                                           DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    MANEJO DE LOS PUERTOS
          #include          <16F877.h>
          #fuses            XT,NOWDT,NOLVP
          #use delay        (clock=4000000)
          #BYTE TRISB=0x86
          #BYTE PORTB=0x06
          #BYTE OPTION_REG=0x81
          void main ( ) {
                   bit_clear (OPTION_REG,7);
                   bit_set (TRISB,0);
                   bit_clear (TRISB,1);
                   bit_clear (PORTB,1);
                   while (1){
                            if (bit_test(PORTB,0)==1)
                                      bit_clear(PORTB,1);
                            else
                                      bit_set(PORTB,1);
                   }
          }
PROF. LUIS ZURITA                                           DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                                29
26/06/2012




                    MANEJO DE PUERTOS
      • A través de las directivas
         El compilador ofrece funciones predefinidas para trabajar con
         los puertos. Estas funciones son:
      output_X(valor);
      input_X( );
      set_tris_X(valor);
      port_b_pullups (valor); //True o FALSE
      get_tris( );
      Ejemplo:
      output_A(0xFF);
      valor=input_B( );
      set_tris_C(0x0F);
PROF. LUIS ZURITA                             DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    MANEJO DE PUERTOS
      • Existen una serie de funciones asociadas a un pin*. El
         parámetro pin se define en el fichero include con un formato
         del tipo PIN_Xn, donde X es el puerto y n es el número de pin.
      #define PIN_A0         40
      #define PIN_A1         41
         Las funciones son:
      output_low (pin*);
      output_high (pin*);
      output_bit (pin*,valor);
      output_toggle (pin*);
      output_float (pin*);         // pin de entrada a tensión flotante
      input_state (pin*);
      Input (pin*);
PROF. LUIS ZURITA                             DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                  30
26/06/2012




                    MANEJO DE PUERTOS
      • Las funciones output_x() e input_x()
        dependen de la directiva tipo #USE_IO que
        esté activa. Directivas:
      #USE FAST_IO(PUERTO)
        Con la función output_x() se saca el valor al
        puerto y con la función input_x() se lee el
        puerto. La directiva no modifica previamente
        el registro TRIS correspondiente.

PROF. LUIS ZURITA                         DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    MANEJO DE PUERTOS
      #include      <16F877.h>
      #fuses        XT,NOWDT,NOLVP
      #use delay (clock=4000000)
      #use fast_io(B)
      void main ( ) {
             port_B_pullups (TRUE);
             set_tris_B(0x01);
             output_low(PIN_B1);
             while (1){
                    if (input(PIN_B0)==1)
                            output_low(PIN_B1);
                    else
                            output_high (PIN_B1);
             }
      }
PROF. LUIS ZURITA                         DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                              31
26/06/2012




                    MANEJO DE PUERTOS
      #USE STANDARD_IO(PUERTO)
        Con la función output_x() el compilador se
        asegura de que el terminal, o terminales
        correspondientes sean de salida mediante la
        modificación del TRIS correspondiente. Con la
        función input_x() ocurre lo mismo pero
        asegurando el terminal o terminales como
        entrada. Es la directiva por defecto. Entonces,
        el ejemplo anterior quedaría:

PROF. LUIS ZURITA                             DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                    MANEJO DE PUERTOS
      #include        <16F877.h>
      #fuses XT,NOWDT,NOLVP
      #use delay (clock=4000000)
      #use standard_io(B)
      void main ( ) {
             port_b_pullups (TRUE);
             output_low(PIN_B1);
             while (1){
                      if (input(PIN_B0)==1)
                              output_low(PIN_B1);
                      else
                              output_high (PIN_B1);
             }
      }

PROF. LUIS ZURITA                             DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL.




                                                                                                  32

Más contenido relacionado

La actualidad más candente

Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
Luis Zurita
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
Luis Zurita
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
Luis Zurita
 
Presentacion proyecto final micro2
Presentacion proyecto final micro2Presentacion proyecto final micro2
Presentacion proyecto final micro2
Luis Zurita
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
Luis Zurita
 
Examen 4 intensivo micro
Examen 4 intensivo microExamen 4 intensivo micro
Examen 4 intensivo micro
Luis Zurita
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
Luis Zurita
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
Luis Zurita
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensamblador
Luis Zurita
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
Luis Zurita
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
Luis Zurita
 
Ejemplos 4to Examen Mci
Ejemplos 4to Examen MciEjemplos 4to Examen Mci
Ejemplos 4to Examen Mci
Luis Zurita
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
Luis Zurita
 
UNIDAD IV
UNIDAD IVUNIDAD IV
UNIDAD IV
Luis Zurita
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
Luis Zurita
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
Luis Zurita
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
Luis Zurita
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
Luis Zurita
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
Wilmer Lizunde Damiano
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
Percy Julio Chambi Pacco
 

La actualidad más candente (20)

Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Presentacion proyecto final micro2
Presentacion proyecto final micro2Presentacion proyecto final micro2
Presentacion proyecto final micro2
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
 
Examen 4 intensivo micro
Examen 4 intensivo microExamen 4 intensivo micro
Examen 4 intensivo micro
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensamblador
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
 
Ejemplos 4to Examen Mci
Ejemplos 4to Examen MciEjemplos 4to Examen Mci
Ejemplos 4to Examen Mci
 
MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2MICROCONTROLADORES II EN C. TEMA 2
MICROCONTROLADORES II EN C. TEMA 2
 
UNIDAD IV
UNIDAD IVUNIDAD IV
UNIDAD IV
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 

Destacado

PRÁCTICA 1 LAB MICRO
PRÁCTICA 1 LAB MICROPRÁCTICA 1 LAB MICRO
PRÁCTICA 1 LAB MICRO
Luis Zurita
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
Luis Zurita
 
Asignación tsu microi
Asignación tsu microiAsignación tsu microi
Asignación tsu microi
Luis Zurita
 
Asignación tsu microi
Asignación tsu microiAsignación tsu microi
Asignación tsu microi
Luis Zurita
 
Asignación de proyectos
Asignación de proyectosAsignación de proyectos
Asignación de proyectos
Luis Zurita
 
Pevs1
Pevs1Pevs1
ASIGNACION 1 EN MCII
ASIGNACION 1 EN MCIIASIGNACION 1 EN MCII
ASIGNACION 1 EN MCII
Luis Zurita
 
TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
Luis Zurita
 
Bolascriollas
BolascriollasBolascriollas
Bolascriollas
Luis Zurita
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
Luis Zurita
 
Asignación nro 4 2011
Asignación nro 4 2011Asignación nro 4 2011
Asignación nro 4 2011
Luis Zurita
 
Asignación nro 4 2011
Asignación nro 4 2011Asignación nro 4 2011
Asignación nro 4 2011
Luis Zurita
 
Practica 3 2012
Practica 3 2012Practica 3 2012
Practica 3 2012
Luis Zurita
 
Clase 1
Clase 1Clase 1
Clase 1
Luis Zurita
 
Asignación3 mcii 2010
Asignación3 mcii 2010Asignación3 mcii 2010
Asignación3 mcii 2010
Luis Zurita
 
Diagramas de flujo del examen del marcador
Diagramas de flujo del examen del marcadorDiagramas de flujo del examen del marcador
Diagramas de flujo del examen del marcador
Luis Zurita
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupciones
Luis Zurita
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
Luis Zurita
 
Mecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph b
Mecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph bMecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph b
Mecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph b
Alfonso Rodriguez Obando
 
Guía del mapa de karnaugh
Guía del mapa de karnaughGuía del mapa de karnaugh
Guía del mapa de karnaugh
Luis Zurita
 

Destacado (20)

PRÁCTICA 1 LAB MICRO
PRÁCTICA 1 LAB MICROPRÁCTICA 1 LAB MICRO
PRÁCTICA 1 LAB MICRO
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
 
Asignación tsu microi
Asignación tsu microiAsignación tsu microi
Asignación tsu microi
 
Asignación tsu microi
Asignación tsu microiAsignación tsu microi
Asignación tsu microi
 
Asignación de proyectos
Asignación de proyectosAsignación de proyectos
Asignación de proyectos
 
Pevs1
Pevs1Pevs1
Pevs1
 
ASIGNACION 1 EN MCII
ASIGNACION 1 EN MCIIASIGNACION 1 EN MCII
ASIGNACION 1 EN MCII
 
TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
 
Bolascriollas
BolascriollasBolascriollas
Bolascriollas
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
 
Asignación nro 4 2011
Asignación nro 4 2011Asignación nro 4 2011
Asignación nro 4 2011
 
Asignación nro 4 2011
Asignación nro 4 2011Asignación nro 4 2011
Asignación nro 4 2011
 
Practica 3 2012
Practica 3 2012Practica 3 2012
Practica 3 2012
 
Clase 1
Clase 1Clase 1
Clase 1
 
Asignación3 mcii 2010
Asignación3 mcii 2010Asignación3 mcii 2010
Asignación3 mcii 2010
 
Diagramas de flujo del examen del marcador
Diagramas de flujo del examen del marcadorDiagramas de flujo del examen del marcador
Diagramas de flujo del examen del marcador
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupciones
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
 
Mecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph b
Mecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph bMecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph b
Mecanica de suelos en la Ingenieria Practica.---Karl Terzaghi y Realph b
 
Guía del mapa de karnaugh
Guía del mapa de karnaughGuía del mapa de karnaugh
Guía del mapa de karnaugh
 

Similar a Clase 2

pic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdfpic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdf
EdwingVelasquez4
 
Introducción Arquitectura Microcontroladores.pdf
Introducción Arquitectura Microcontroladores.pdfIntroducción Arquitectura Microcontroladores.pdf
Introducción Arquitectura Microcontroladores.pdf
JuanCarlosPalazzani
 
Introduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptxIntroduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptx
BrayamMiranda3
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
Fernando Marcos Marcos
 
Taller de Robótica Educativa.pdf
Taller de Robótica Educativa.pdfTaller de Robótica Educativa.pdf
Taller de Robótica Educativa.pdf
InteligenciaArtifici7
 
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
Fernando Marcos Marcos
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
Lopez Guzman
 
Portafolio de servicio ELECTRIC
Portafolio de servicio ELECTRICPortafolio de servicio ELECTRIC
Portafolio de servicio ELECTRIC
Carlos Ramos Hoyos
 
Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
Ruderocker Billy
 
Micro
MicroMicro
Micro
joselin33
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
Victor Asanza
 
Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspbe...
Barcamp 2015 -  Integración de proyectos embebidos utilizando Arduino, Raspbe...Barcamp 2015 -  Integración de proyectos embebidos utilizando Arduino, Raspbe...
Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspbe...
Carlos Camacho
 
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
Fernando Marcos Marcos
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
Victor Asanza
 
Plc´s
Plc´sPlc´s
Cartilla pic16f877
Cartilla pic16f877Cartilla pic16f877
Cartilla pic16f877
Franklin Isai Leonhuacal
 
7. dc32 datasheet lt-es-12-2018
7. dc32 datasheet lt-es-12-20187. dc32 datasheet lt-es-12-2018
7. dc32 datasheet lt-es-12-2018
Luis Navarro Ormeño
 
DrillWaypro plv
DrillWaypro plvDrillWaypro plv
DrillWaypro plv
jean Reyes
 
28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic
carlos
 
28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic
carlos
 

Similar a Clase 2 (20)

pic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdfpic16f877-con-mikroc.pdf
pic16f877-con-mikroc.pdf
 
Introducción Arquitectura Microcontroladores.pdf
Introducción Arquitectura Microcontroladores.pdfIntroducción Arquitectura Microcontroladores.pdf
Introducción Arquitectura Microcontroladores.pdf
 
Introduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptxIntroduccion al DSC dsPIC30F4013.pptx
Introduccion al DSC dsPIC30F4013.pptx
 
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 14 BITS CON ARDUINO
 
Taller de Robótica Educativa.pdf
Taller de Robótica Educativa.pdfTaller de Robótica Educativa.pdf
Taller de Robótica Educativa.pdf
 
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 14 BITS CON ARDUINO
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
Portafolio de servicio ELECTRIC
Portafolio de servicio ELECTRICPortafolio de servicio ELECTRIC
Portafolio de servicio ELECTRIC
 
Microcontroladores tabla de referencia
Microcontroladores tabla de referenciaMicrocontroladores tabla de referencia
Microcontroladores tabla de referencia
 
Micro
MicroMicro
Micro
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspbe...
Barcamp 2015 -  Integración de proyectos embebidos utilizando Arduino, Raspbe...Barcamp 2015 -  Integración de proyectos embebidos utilizando Arduino, Raspbe...
Barcamp 2015 - Integración de proyectos embebidos utilizando Arduino, Raspbe...
 
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE-DESCENDENTE DE 14 BITS CON ARDUINO
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
Plc´s
Plc´sPlc´s
Plc´s
 
Cartilla pic16f877
Cartilla pic16f877Cartilla pic16f877
Cartilla pic16f877
 
7. dc32 datasheet lt-es-12-2018
7. dc32 datasheet lt-es-12-20187. dc32 datasheet lt-es-12-2018
7. dc32 datasheet lt-es-12-2018
 
DrillWaypro plv
DrillWaypro plvDrillWaypro plv
DrillWaypro plv
 
28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic
 
28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic28307034 La Familia De Micro Control Adores Pic
28307034 La Familia De Micro Control Adores Pic
 

Más de Luis Zurita

Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
Luis Zurita
 
Pevmicroi ieo
Pevmicroi ieoPevmicroi ieo
Pevmicroi ieo
Luis Zurita
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
Luis Zurita
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
Luis Zurita
 
Pev electronica
Pev electronicaPev electronica
Pev electronica
Luis Zurita
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13Luis Zurita
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
Luis Zurita
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
Luis Zurita
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
Luis Zurita
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronicaLuis Zurita
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iyc
Luis Zurita
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013Luis Zurita
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronica
Luis Zurita
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronicaLuis Zurita
 
Pevmicro2013
Pevmicro2013Pevmicro2013
Pevmicro2013
Luis Zurita
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013
Luis Zurita
 
Acumuladas iyc2013
Acumuladas iyc2013Acumuladas iyc2013
Acumuladas iyc2013Luis Zurita
 
TMR0 Y RB0_INT
TMR0 Y RB0_INTTMR0 Y RB0_INT
TMR0 Y RB0_INT
Luis Zurita
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Luis Zurita
 
Eomicro2013
Eomicro2013Eomicro2013
Eomicro2013
Luis Zurita
 

Más de Luis Zurita (20)

Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
Pevmicroi ieo
Pevmicroi ieoPevmicroi ieo
Pevmicroi ieo
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
 
Pev electronica
Pev electronicaPev electronica
Pev electronica
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13
 
Pevmicro1 t2 13
Pevmicro1 t2 13Pevmicro1 t2 13
Pevmicro1 t2 13
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 
Pevmicroii13 2
Pevmicroii13 2Pevmicroii13 2
Pevmicroii13 2
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronica
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iyc
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronica
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronica
 
Pevmicro2013
Pevmicro2013Pevmicro2013
Pevmicro2013
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013
 
Acumuladas iyc2013
Acumuladas iyc2013Acumuladas iyc2013
Acumuladas iyc2013
 
TMR0 Y RB0_INT
TMR0 Y RB0_INTTMR0 Y RB0_INT
TMR0 Y RB0_INT
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Eomicro2013
Eomicro2013Eomicro2013
Eomicro2013
 

Último

CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
Fernández Gorka
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Juan Martín Martín
 
POESÍA POR EL DIA DEL PADREEEEEEEEEE.pdf
POESÍA POR EL DIA DEL PADREEEEEEEEEE.pdfPOESÍA POR EL DIA DEL PADREEEEEEEEEE.pdf
POESÍA POR EL DIA DEL PADREEEEEEEEEE.pdf
karlavasquez49
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
JonathanCovena1
 
Escuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdfEscuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdf
Alejandrino Halire Ccahuana
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
AlexDeLonghi
 
Estás conmigo Jesús amigo_letra y acordes de guitarra.pdf
Estás conmigo Jesús amigo_letra y acordes de guitarra.pdfEstás conmigo Jesús amigo_letra y acordes de guitarra.pdf
Estás conmigo Jesús amigo_letra y acordes de guitarra.pdf
Ani Ann
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
DavidCamiloMosquera
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
ViriEsteva
 
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdfEvaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
EfranMartnez8
 
Mi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste BlancoMi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste Blanco
Ruth Noemí Soto Villegas
 
Eureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de CienciasEureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de Ciencias
arianet3011
 
1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos
ROCIORUIZQUEZADA
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
genesiscabezas469
 
Gracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdfGracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdf
Ani Ann
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
josseanlo1581
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
karlafreire0608
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
RicardoValdiviaVega
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Alejandrino Halire Ccahuana
 
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdfDESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
JonathanCovena1
 

Último (20)

CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍACINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
CINE COMO RECURSO DIDÁCTICO para utilizar en TUTORÍA
 
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...
 
POESÍA POR EL DIA DEL PADREEEEEEEEEE.pdf
POESÍA POR EL DIA DEL PADREEEEEEEEEE.pdfPOESÍA POR EL DIA DEL PADREEEEEEEEEE.pdf
POESÍA POR EL DIA DEL PADREEEEEEEEEE.pdf
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
 
Escuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdfEscuela Sabática. El conflicto inminente.pdf
Escuela Sabática. El conflicto inminente.pdf
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
 
Estás conmigo Jesús amigo_letra y acordes de guitarra.pdf
Estás conmigo Jesús amigo_letra y acordes de guitarra.pdfEstás conmigo Jesús amigo_letra y acordes de guitarra.pdf
Estás conmigo Jesús amigo_letra y acordes de guitarra.pdf
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
 
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
 
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdfEvaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
Evaluacion-Formativa-Nueva Escuela Mexicana NEM-ok.pdf
 
Mi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste BlancoMi Comunidad En El Sector Monterrey-Poste Blanco
Mi Comunidad En El Sector Monterrey-Poste Blanco
 
Eureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de CienciasEureka 2024 ideas y dudas para la feria de Ciencias
Eureka 2024 ideas y dudas para la feria de Ciencias
 
1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos1° T3 Examen Mtro JP 23-24.pdf completos
1° T3 Examen Mtro JP 23-24.pdf completos
 
Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.Presentación de la historia de PowerPoint y sus características más relevantes.
Presentación de la historia de PowerPoint y sus características más relevantes.
 
Gracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdfGracias papá voz mujer_letra y acordes de guitarra.pdf
Gracias papá voz mujer_letra y acordes de guitarra.pdf
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
 
Los Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres VivosLos Dominios y Reinos de los Seres Vivos
Los Dominios y Reinos de los Seres Vivos
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
 
Lecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docxLecciones 11 Esc. Sabática. El conflicto inminente docx
Lecciones 11 Esc. Sabática. El conflicto inminente docx
 
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdfDESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
DESARROLLO DE LAS RELACIONES CON LOS STAKEHOLDERS.pdf
 

Clase 2

  • 1. 26/06/2012 MICROCONTROLADORES II (FAMILIA PIC16F87X) LENGUAJE C PARA PICS TEMA 1 PROF. LUIS ZURITA CARACTERÍSTICAS PIC16F87X • Velocidad de operación: hasta 20 MHz de reloj. • 8K x 14 bits por palabra de memoria de programa FLASH. • 368 x 8 bytes de memoria de datos (RAM) • 256 x 8 bytes de memoria de datos EEPROM. • 14 fuentes de interrupciones. • Memoria de pila (stack) de 8 niveles de profundidad. • Protecciones: – Power-on Reset (POR) – Power-up Timer (PWRT) – Oscillator Start-up Timer (OST) – Watchdog Timer (WDT) independiente del cristal. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 1
  • 2. 26/06/2012 REGISTROS Y BANCOS PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 2
  • 3. 26/06/2012 PUERTOS DE ENTRADA Y SALIDA • PORTA ( RA5, RA4, RA3, RA2, RA1, RA0 ) • PORTB ( RB7, RB6, RB5, RB4, RB3, RB2, RB1, RB0 ) • PORTC ( RC7, RC6, RC5, RC4, RC3, RC2, RC1, RC0 ) • PORTD ( RD7, RD6, RD5, RD4, RD3, RD2, RD1, RD0 ) • PORTE ( RE2, RE1, RE0 ) PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. IUT Cumaná Prof. Luis Zurita Microcontroladores II 3
  • 4. 26/06/2012 CARACTERÍSTICAS (PERIFÉRICOS) • Timer 0: timer/counter de 8 bits con un pre- escalador de 8 valores. • Timer 1: 16-bit timer/counter con pre-escalador • Timer 2: 8-bit timer/counter con registro de estado de 8-bit, pre-escalador y post-escalador • Dos módulos de Captura, Comparación y PWM (Modulación por anchura de pulso) – Capture es de 16-bit, max. resolución es 12.5 ns – Compare es de 16-bit, max. resolución es 200 ns – PWM max. resolución de 10-bit PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. CARACTERÍSTICAS (PERIFÉRICOS ) • Convertidor analógico a digital de 10-bit multi- canal • Puerto serial síncrono (SSP) con SPI. (modo maestro) e I2C (maestro/esclavo) • Transmisor-Receptor síncrono-asíncrono universal (USART/SCI) con 9-bit • Puerto paralelo esclavo (PSP) con 8-bits de ancho, con terminales de control RD, WR y CS PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 4
  • 5. 26/06/2012 ARQUITECTURA INTERNA • Arquitectura HARVARD. • Buses separados (datos e instrucciones). • Memoria de programa : 14 bits. • Memoria de datos: 8 bits. • Recursos mapeados en memoria de datos. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. FUNCIONES PORTA Terminal Funciones RA0 Ent. Digital Sal. Digital Ent. Analógica RA1 Ent. Digital Sal. Digital Ent. Analógica RA2 Ent. Digital Sal. Digital Ent. Analógica VREF - RA3 Ent. Digital Sal. Digital Ent. Analógica VREF + RA4 Ent. Digital Sal. Digital Ent. contador 1 RA5 Ent. Digital Sal. Digital Ent. Analógica PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 5
  • 6. 26/06/2012 FUNCIONES PORTB Terminal Funciones RB0 Ent. Digital Sal. Digital Ent. Interrupción 0 RB1 Ent. Digital Sal. Digital RB2 Ent. Digital Sal. Digital RB3 Ent. Digital Sal. Digital PGM ( función LVP ) RB4 Ent. Digital Sal. Digital RB5 Ent. Digital Sal. Digital RB6 Ent. Digital Sal. Digital PGC ( función LVP ) RB7 Ent. Digital Sal. Digital PGD ( función LVP ) PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. FUNCIONES PORTC Terminal Funciones Ent. Digital Sal. Digital Sal. Osc timer 1 Ent. Contador 1 RC0 Ent. Digital Sal. Digital Ent. Osc Timer 1 Captura/Comp/PWM 1 RC1 Ent. Digital Sal. Digital Captura/Comp/PWM 2 RC2 Ent. Digital Sal. Digital Reloj sincrono SPI Reloj síncrono I2C RC3 Ent. Digital Sal. Digital Datos entrada SPI Datos I2C RC4 Ent. Digital Sal. Digital Datos salida SPI RC5 Ent. Digital Sal. Digital Transmisión USART RC6 Ent. Digital Sal. Digital Recepción USART RC7 PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 6
  • 7. 26/06/2012 FUNCIONES PORTD Terminal Funciones RD0 Ent. Digital Sal. Digital Bit 0 puerto paralelo esclavo RD1 Ent. Digital Sal. Digital Bit 1 puerto paralelo esclavo RD2 Ent. Digital Sal. Digital Bit 2 puerto paralelo esclavo RD3 Ent. Digital Sal. Digital Bit 3 puerto paralelo esclavo RD4 Ent. Digital Sal. Digital Bit 4 puerto paralelo esclavo RD5 Ent. Digital Sal. Digital Bit 5 puerto paralelo esclavo RD6 Ent. Digital Sal. Digital Bit 6 puerto paralelo esclavo RD7 Ent. Digital Sal. Digital Bit 7 puerto paralelo esclavo PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. FUNCIONES PORTE Terminal Funciones RE0 Ent. Digital Sal. Digital Ent. Analógica Lectura PSP RE1 Ent. Digital Sal. Digital Ent. Analógica Escritura PSP RE2 Ent. Digital Sal. Digital Ent. Analógica Habilitación PSP PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 7
  • 8. 26/06/2012 LENGUAJE C. TIPOS DE DATOS. El compilador CCS acepta los siguientes tipos de variables: Especificación Significado Tamaño Rango char carácter 8 bits 0 a 255 (sin signo) Int entero 8 bits 0 a 255 (sin signo) float Coma flotante 32 bits 6 bits de precisión double Float doble No soportado No para PCM precisión void Sin valor nulo Ninguno int1 Entero de 1 bit 1 bit 0a1 int8 Entero de 8 bits 8 bits 0 a 255 (sin signo) int16 Entero de 16 bits 16 bits 0 a 65535 int32 Entero de 32 bits 32 bits 0 a (232-1) Short Entero de 1 bit 1 bit 0a1 long Entero de 16 bits 16 bits 0 a 65535 (sin signo) PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. LENGUAJE C. TIPOS DE DATOS Todos los tipos de datos son por defecto sin signo (unsigned) salvo los de tipo float. Para almacenar datos con signo, hay que introducir el modificador signed delante del tipo. El efecto que se consigue es el recogido en la siguiente tabla. Especificación Significado Tamaño Rango Signed char caractér con 8 bits -128 a 128 signo Signed int Entero con signo 8 bits -128 a 128 Signed long Coma flotante 16 bits -32768 a 32768 Los números negativos se codifican en complemento a 2. Cuando se opera con distintos grupos de datos en una misma expresión, se aplican una serie de reglas para resolver las diferencias. En general se produce una “promoción” hacia los tipos de datos de mayor longitud presentes en la expresión. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 8
  • 9. 26/06/2012 LENGUAJE C. CONSTANTES PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. OPERADORES ARITMÉTICOS OPERADORES RELACIONALES != PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 9
  • 10. 26/06/2012 OPERADORES LÓGICOS OPERADORES A NIVEL DE BITS PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. OPERADORES DE INCREMENTO Y DECREMENTO OPERADORES DE CORRIMIENTO PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 10
  • 11. 26/06/2012 VARIABLES • Las variables se utilizan para nombrar posiciones de memoria RAM; se deben declarar, obligatoriamente, antes de utilizarlas; para ello se debe indicar el nombre y el tipo de dato que se manejará. Se definen de la siguiente forma: • TIPO NOMBRE_VARIABLE[=VALOR INICIAL] – TIPO hace referencia a cualquiera de los tipos de datos – NOMBRE_VARIABLE puede ser cualquiera y el valor inicial es opcional. Ejemplos: byte k = 5; byte const SEMANAS = 52; float temp_limit=500.0; char k, kant=‘0’; int x,y,z; PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. VARIABLES • Las variables pueden ser de tipo LOCAL o GLOBAL. • Las variables locales sólo se utilizan en la función donde se encuentran declaradas; las variables globales se pueden utilizar en todas las funciones del programa. Ambas deben declararse antes de ser utilizadas y las globales deben declararse antes de cualquier función y fuera de ellas. Las variables globales son puestas a cero cuando se inicia la función principal main(). PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 11
  • 12. 26/06/2012 EJEMPLO DE VARIABLES LOCALES Y GLOBALES int16 counter; //Variable global Void FUNCION ( ) { int dato1, dato2=34; //Variables locales } void main() { int8 suma; //Variable local } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. FUNCIONES Las funciones son los bloques constructivos fundamentales en C. Todas las sentencias deben encontrarse dentro de funciones. Las funciones deben ser definidas antes de ser utilizadas. Formato general de definición de una función: Tipo_dato nombre_función (tipo param1, tipo param2, …) { cuerpo de la función (sentencias); } El tipo de dato devuelto se indica mediante tipo_dato. Si no se indica nada, se entiende que devuelve un entero. Si no devuelve nada debe incluirse una especificación tipo void. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 12
  • 13. 26/06/2012 La manera que tiene una función para devolver un valor es mediante la sentencia return: return (expresión); ó return expresión; La expresión debe proporcionar el mismo tipo de dato que el especificado en la función. Si no debe devolver nada, se finaliza con: return; Cuando una función se encuentra con una sentencia return se vuelve a la rutina de llamada inmediatamente y las sentencias posteriores a return no se ejecutan. Además de con las sentencia return, las funciones terminan su ejecución y vuelven al lugar desde donde se les llamó cuando alcanzan la llave de cierre de función } tras ejecutar la última sentencia de la misma. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. Además de devolver valores, una función también puede recibir parámetros (denominados argumentos) según se indicó en su definición. Por ejemplo: int suma(int a, int b) Parámetros { formales return(a+b); } main() { int c; Argumentos c= suma(10 , 23); 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 parámetro formal de la función y no modifica su valor en la función de partida. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 13
  • 14. 26/06/2012 DECLARACIONES DE CONTROL If-else Cuando la expresión evaluada es verdadera, Las instrucciones de la sentencia 1 son ejecutadas. Si la expresión es falsa, las instrucciones de la sentencia 2 son ejecutadas. La expresión debe ser evaluada a un valor entero. Los paréntesis que encierra la expresión son obligatorios. La palabra especial “else sentencia 2” es opcional. If – else: If – else: if (expresión) if (expresión) { sentencia1; sentencia1;} else else { sentencia2; sentencia2;} PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. Sentencia if. Se ejecuta una sentencia o bloque de código si la expresión que acompaña al if tiene un valor distinto a cero (verdadero). Si es cero (falso) continúa sin ejecutar la sentencia o bloque de sentencias. if (expresión) ó if (expresión) sentencia; { sentencia 1; sentencia 2; … } Sentencia if-else Se evalúa una expresión y, si es cierta se ejecuta el primer bloque de código o sentencia 1. Si es falsa, se ejecuta el segundo. if (expresión) NOTA: Se pueden combinar varios sentencia 1; if-else para establecer múltiples else caminos de decisión sentencia 2; Abreviatura: (expresión)?(sentencia 1): (sentencia 2); PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 14
  • 15. 26/06/2012 NO A=0? C=5 If (A==0) B=10; SI Else C=5; B=10 If (A!=1) B=10; Else C=5; PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. NO A>10? If (A>10) {IF(A>20) B=5; SI Else B=15;} NO A>20? B=15 SI B=5 PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 15
  • 16. 26/06/2012 NO A>10? if (A>10) {IF(A>20) B=15;} SI else B=5; B=5 SI A>20? B=15 NO PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. Sentencia switch Sustituye a if-else cuando se realiza una selección múltiple que compara una expresión con una lista de constantes enteras o caracteres. Cuando se da una coincidencia, el cuerpo de sentencias asociadas a esa constante se ejecuta hasta que aparezca break. switch (expresión) Nota: break es opcional. Si { no aparece se sigue con el case constante 1: case siguiente. grupo de sentencias; break; default es opcional y el case constante 2: bloque asociado se ejecuta grupo de sentencias; sólo si no hay ninguna break; coincidencia con las constantes especificadas. … default: No puede haber dos grupo n de sentencias; constantes iguales en dos } case de la misma sentencia switch. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 16
  • 17. 26/06/2012 SI switch (A){ A=0? B=1 case 0: B=1; NO break; case 2: SI B=2; A=2? B=2 break; case 3: NO B=3; break; SI A=3? B=3 default:break; } NO PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. Sentencia de bucle for. Se emplea para repetir una sentencia o bloque de sentencias: for (inicialización; condición; incremento) { sentencia(s); } En la inicialización se le asigna un valor inicial a una variable que se emplea para el control de la repetición del bucle. La condición se evalúa antes de ejecutar la sentencia. Si es cierta, se ejecuta el bucle. Si no, se sale del mismo. El incremento establece cómo cambia la variable de control cada vez que se repite el bucle. Es posible anidar bucles for para modificar dos o más variables de control. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 17
  • 18. 26/06/2012 For(N=1;N<=10;N++) N=1 { NO Printf(“%u”,N); } NO N<=10? SI IMPRIMIR N N=N+1 SI NO PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. Sentencia de bucle while: La repetición se lleva a cabo mientras sea cierta una expresión. while (expresión) { sentencia(s); } La expresión se evalúa antes de cualquier iteración. Si es falsa, ya no se ejecuta la sentencia o bloque de sentencias. Sentencia de bucle do-while: do { sentencia(s); } while (expresión) Las sentencias se ejecutan antes de que se evalúe la expresión, por lo que el bucle se ejecuta siempre al menos una vez. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 18
  • 19. 26/06/2012 Figure 2.3.1 Comparison of While and Do..While Loop Condition True? Statement Block Statement Block Condition True? (a) While loop (b) Do..While loop Listing 2.9 DOWHILE.C contains both types of ‘while’ loop // DOWHILE.C // Comparison of WHILE and DO WHILE loops #include "16F877A.H" main() { int outbyte1=0; int outbyte2=0; int count; count=0; // This loop is not while (count!=0) // executed { output_C(outbyte1); outbyte1++; count--; } count=0; // This loop is do // executed { output_C(outbyte2); outbyte2++; count--; } while (count!=0); while(1){}; } 19
  • 20. 26/06/2012 Figure 2.8 Break, continue and goto label Statement Block Continue Goto Break Listing 2.10 Continue, Break & Goto // CONTINUE.C // Continue, break and goto jumps #include "16F877A.H" #use delay(clock=4000000) main() { int outbyte; again: outbyte=0; // Goto destination while(1) { output_C(outbyte); // Loop operation delay_ms(10); outbyte++; if (!input(PIN_D0)) continue; // Restart loop if (!input(PIN_D1)) break; // Terminate loop delay_ms(100); if (outbyte==100) goto again; // Unconditional jump } } 20
  • 21. 26/06/2012 COMENTARIOS Los comentarios se incluyen en el código fuente para documentar y orientar al programador sobre el código que se diseña. Son ignorados por el compilador y no afectan a la longitud ni rapidez de ejecución del código final. Un comentario se puede colocar en cualquier lugar del programa y pueden tener la longitud y el número de líneas que se quiera. Hay dos formatos posibles para los comentarios: Formato 1. Empiezan por // y llegan hasta el final de la línea. // Esto es un comentario. Formato 2. Empiezan por /* y finalizan por */. No es posible anidar comentarios con este formato. Ejemplos: /*Esto también es un comentario*/ /*Pero esto que /*parece un comentario válido*/ no lo es*/ PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. OTRAS SENTENCIAS • Return: se emplea para devolver datos en las funciones. • Break: permite salir de un bucle, se utiliza para While, For, Do y Switch. • Goto: provoca un salto incondicional. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 21
  • 22. 26/06/2012 DIRECTIVAS • Las directivas de pre-procesado comienzan con el símbolo # y continúan con un comando específico. La sintaxis depende del comando. Algunos comandos no permiten otros elementos sintácticos en la misma expresión. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. DIRECTIVAS DE INTERÉS # DEVICE chip: permite definir el PIC con el que se realizará la compilación. Ejemplo: #device PIC16F877 #FUSES options: permite definir la palabra de configuración para programar un PIC. Ejemplo: #fuses XT,NOWDT,PUT,NOPROTECT, NOLVP #INCLUDE <archivo>: permite incluir un fichero en el programa. Ejemplo: #INCLUDE <16f877.h> PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 22
  • 23. 26/06/2012 DIRECTIVAS DE INTERÉS #USE DELAY (CLOCK=SPEED): permite definir las frecuencias del oscilador del PIC, el compilador lo utiliza para realizar cálculos de tiempo. Se puede utilizar M, MHZ, K y KHZ para definir la frecuencia. Ejemplo: #use delay(clock=4000000) Luego de definida en las declaraciones se pueden utilizar las funciones: delay_ms(tiempo en milisegundos) delay_us(tiempo en microsegundos) delay_cycles(tiempo en base a los ciclos de máquina) PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. FUNCIONES • El compilador CCS suministra una serie de funciones predefinidas para acceder y utilizar el PIC y sus periféricos. Estas funciones facilitan la configuración del PIC sin entrar en el nivel de los registros especiales. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 23
  • 24. 26/06/2012 ESTRUCTURA DE UN PROGRAMA Encabezado En general un programa está estructurado en tres grandes partes: a) Encabezado: Define el tipo de PIC con Configuración, que se está trabajando, Bloque de Declaración de declaraciones de variables y Registros, Datos, constantes, Constantes y funciones. b) Configuración de registros especiales: Registro OPTION, INTCON, TMR0, puertos A y B, EECON, STATUS. org C) Cuerpo del programa: Aquí están contenidas todas las instrucciones Cuerpo del relacionadas a la ejecución de un Programa programa bajo un diseño individual, end realizado por el programador. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. ESTRUCTURA DE UN PROGRAMA EN C ( ciclo while ) // Definición de variables globales // Definición de funciones void main(void) { // Definición de variables locales // Configuración de registros (recursos y puertos) // ciclo infinito while ( 1 ) { // Programa de usuario } } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 24
  • 25. 26/06/2012 ESTRUCTURA DE UN PROGRAMA EN C ( ciclo for ) // Definición de variables globales // Definición de funciones void main(void) { // Definición de variables locales // Configuración de registros (recursos y puertos) // ciclo infinito for ( ; ; ) { // Programa de usuario } } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. ESTRUCTURA DE UN PROGRAMA EN C ( ciclo do - while ) // Definición de variables globales // Definición de funciones void main(void) { // Definición de variables locales // Configuración de registros (recursos y puertos) // ciclo infinito do { // Programa de usuario } while ( 1 ) ; } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 25
  • 26. 26/06/2012 CONFIGURANDO UN PUERTO EN ASM La configuración de puertos es muy fácil: 1. Se selecciona el banco 1 • Aquí se encuentran los registros que manipulan mediante software a los circuitos triestados que determinan que un pin o puerto trabaje como entrada o salida. 2. Se configuran mediante los registros asociados a los puertos (TRISA y TRISB), los pines de un puerto como entrada o salida. • Si coloco un uno (1) en un bit asociado a un puerto (RA0, RA1, RB5, RB7,etc), éste se comportará como una entrada y solamente podremos leer por esta entrada. • Si coloco un cero (0) en un bit asociado a un puerto, éste se comportará como una salida y solamente podremos escribir por esta entrada. • Podemos hacer analogía de la siguiente forma: 1 = In = Entrada = Solo lectura 0 = Out = Salida = Solo escritura Microcontroladores Prof. Luis Zurita CONFIGURANDO UN PUERTO EN ASM La configuración de puertos es muy fácil: 3. Se selecciona o se regresa al banco 0, para trabajar con los puertos que han sido previamente configurados. • Si un puerto (o pin) ha sido configurado como salida, entonces se podrá escribir sobre él, para sacar datos. • Si un puerto (o pin) ha sido configurado como entrada, entonces se podrá leer los datos que están ingresando por él. • Nota: Escribir sobre un puerto (o pin) configurado como entrada, no tiene ningún efecto. Si se desea escribir sobre él, es necesario que el mismo sea habilitado como salida. Microcontroladores Prof. Luis Zurita 26
  • 27. 26/06/2012 MANEJO DE LOS PUERTOS • En lenguaje C se pueden gestionar los puertos de dos formas: – Se declaran los registros TRISX y PORTX definiendo su posición en la memoria RAM como variables de C. – Utilizando las directivas específicas del compilador (#USE FAST_IO,#USE STANDARD_IO) PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. MANEJO DE LOS PUERTOS • A través de la RAM: #BYTE variable=constante. Ejemplo: #BYTE TRISA=0x85 //variable TRISA en 85h #BYTE PORTA=0x05 //variable PORTA en 05h #BYTE TRISB=0x86 //variable TRISB en 86h #BYTE PORTB=0x06 //variable PORTB en 06h #BYTE TRISC=0x87 //variable TRISC en 87h #BYTE PORTC=0x07 //variable PORTC en 07h PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 27
  • 28. 26/06/2012 MANEJO DE LOS PUERTOS • Una vez definidas estas variables se pueden configurar y controlar los puertos a través de los comandos de asignación. TRISA= 0xFF; TRISB= 0x00; TRISC=0x0F; • Escritura en los puertos: PORTC=0x0A; • Lectura de puertos: dato=PORTA; // Asigna el valor del puerto A a la // variable dato. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. MANEJO DE LOS PUERTOS Existen unas funciones de C que permiten trabajar bit a bit con los registros o variables definidas previamente. Estas funciones son las siguientes: bit_clear(var,bit); bit_set(var,bit); Bit_test(var,bit); Swap(var); Ejemplos: bit_set(PORTC,4); If (bit_test(PORTB,0)==1) bit_clear(PORTB,1); PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 28
  • 29. 26/06/2012 MANEJO DE LOS PUERTOS • Se puede declarar un bit de un registro mediante la directiva #BIT, lo que permite trabajar directamente con el terminal: #BIT nombre = posición.bit. Ejemplo: #BIT RB4=0x06.4 //PORTB=0x06 RB4=0; PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. MANEJO DE LOS PUERTOS #include <16F877.h> #fuses XT,NOWDT,NOLVP #use delay (clock=4000000) #BYTE TRISB=0x86 #BYTE PORTB=0x06 #BYTE OPTION_REG=0x81 void main ( ) { bit_clear (OPTION_REG,7); bit_set (TRISB,0); bit_clear (TRISB,1); bit_clear (PORTB,1); while (1){ if (bit_test(PORTB,0)==1) bit_clear(PORTB,1); else bit_set(PORTB,1); } } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 29
  • 30. 26/06/2012 MANEJO DE PUERTOS • A través de las directivas El compilador ofrece funciones predefinidas para trabajar con los puertos. Estas funciones son: output_X(valor); input_X( ); set_tris_X(valor); port_b_pullups (valor); //True o FALSE get_tris( ); Ejemplo: output_A(0xFF); valor=input_B( ); set_tris_C(0x0F); PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. MANEJO DE PUERTOS • Existen una serie de funciones asociadas a un pin*. El parámetro pin se define en el fichero include con un formato del tipo PIN_Xn, donde X es el puerto y n es el número de pin. #define PIN_A0 40 #define PIN_A1 41 Las funciones son: output_low (pin*); output_high (pin*); output_bit (pin*,valor); output_toggle (pin*); output_float (pin*); // pin de entrada a tensión flotante input_state (pin*); Input (pin*); PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 30
  • 31. 26/06/2012 MANEJO DE PUERTOS • Las funciones output_x() e input_x() dependen de la directiva tipo #USE_IO que esté activa. Directivas: #USE FAST_IO(PUERTO) Con la función output_x() se saca el valor al puerto y con la función input_x() se lee el puerto. La directiva no modifica previamente el registro TRIS correspondiente. PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. MANEJO DE PUERTOS #include <16F877.h> #fuses XT,NOWDT,NOLVP #use delay (clock=4000000) #use fast_io(B) void main ( ) { port_B_pullups (TRUE); set_tris_B(0x01); output_low(PIN_B1); while (1){ if (input(PIN_B0)==1) output_low(PIN_B1); else output_high (PIN_B1); } } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 31
  • 32. 26/06/2012 MANEJO DE PUERTOS #USE STANDARD_IO(PUERTO) Con la función output_x() el compilador se asegura de que el terminal, o terminales correspondientes sean de salida mediante la modificación del TRIS correspondiente. Con la función input_x() ocurre lo mismo pero asegurando el terminal o terminales como entrada. Es la directiva por defecto. Entonces, el ejemplo anterior quedaría: PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. MANEJO DE PUERTOS #include <16F877.h> #fuses XT,NOWDT,NOLVP #use delay (clock=4000000) #use standard_io(B) void main ( ) { port_b_pullups (TRUE); output_low(PIN_B1); while (1){ if (input(PIN_B0)==1) output_low(PIN_B1); else output_high (PIN_B1); } } PROF. LUIS ZURITA DIGITALES. ING. INSTRUMENTACIÓN Y CONTROL. 32