SlideShare una empresa de Scribd logo
1 de 12
Juan Carlos Gamboa P. (200019045)


         PROGRAMACIÓN DEL MICROCONTROLADOR
                      PIC 16xxx

                           Prácticas de laboratorio

   1.   Practica 4.   Direccionamiento con PIC
   2.   Practica 5.   Operaciones aritméticas básicas con PIC
   3.   Practica 6.   Operaciones con puertos en PICs
   4.   Practica 7.   Conversión A/D
Juan Carlos Gamboa P. (200019045)


                                    PRACTICA No. 4
            CARGA DE REGISTROS Y MODOS DE DIRECCIONAMIENTO


   1. Escribir un programa que transfiera el contenido de un registro a otro registro de
      manera directa en un PIC 16c54. Simúlelo.




       Para el direccionamiento directo fue necesaria la implementación del registro de
       trabajo (W) necesario para este tipo de acciones. Básicamente, se carga el registro de
       trabajo con el comando MOVLW con una constante cualquiera, y posteriormente,
       mediante el comando MOVWF se transfiere el contenido cargado en el registro de
       trabajo a una determinado registro ubicado en algún espacio de memoria X.
Juan Carlos Gamboa P. (200019045)


       A continuación, como se puede observar en la fig. 1, se ubican los registros y el
       espacio de memoria del pic16c54. Por último, se observa como la constante 11 es
       transferido de registro en registro, es decir, del registro 0x08 al 0x0C.




                                  Figura 1. Registros del pic16c54.

   2. Realizar un programa que efectué la transferencia de datos de un registro a otro
      utilizando direccionamiento indirecto (con el registro INDF). Simúlelo.




       En el direccionamiento indirecto, se utilizan los registros FSR e INDF, ubicados en los
       registros especiales. El registro FSR sirve como puntero para el direccionamiento
       indirecto. Al operar registro INDF se transfiere el valor cargado en el registro W al
       registro donde está apuntando FSR dentro de la RAM.

       El resultado de la simulación es análogo a la fig. 1. Se pretende transferir datos de un
       registro a otro de manera indirecta.
Juan Carlos Gamboa P. (200019045)


                                PRACTICA No. 3
             OPERACIONES LÓGICAS Y ARITMÉTICAS BÁSICAS

   1. Escribir un programa que sume el contenido de dos registros y guarde el resultado en
      otros dos registros consecutivos.
Juan Carlos Gamboa P. (200019045)


   2. Realizar un programa que efectúe la multiplicación de datos contenidos en dos
      registros. El resultado debe guardarse en otros dos registros consecutivos.
Juan Carlos Gamboa P. (200019045)




   3. Escriba un programa que divida el contenido de dos registros entre el contenido de
      otro registro y guarde el resultado en otros dos registros consecutivos.
Juan Carlos Gamboa P. (200019045)




       Ambas operaciones, tanto división como multiplicación se realizan mediante
       rotaciones y sumas sucesivas del bit contenido en el carry. En la división se emplea el
       comando rlf, que rota el hacia la izquierda los bits que representan el numero decimal.
       Por otro lado, para la multiplicación se empleo la instrucción rrf, el cual de manera
       análoga que el comando anterior rota los bits del vector pero en sentido contrario, es
       decir, hacia la derecha. El código anterior, para ambos casos se inicia cargando las
       constantes a multiplicar, después se crea un vector contador el cual estará encargado
       de contar 8 rotaciones de posición. Después se llama a una subrutina encargada de
       generar las rotaciones y sumas sucesivas. Cuando el contador llegue a cero se detiene
       dicha función y se almacenan en dos vectores la parte alta y baja del resultado ya que
       la multiplicación de dos vectores de 8 bits genera uno de 16 bits. Se comprueba el
       resultado por medio de la calculadora.
Juan Carlos Gamboa P. (200019045)


                                 PRACTICA No. 6
              OPERACIONES CON PUERTOS Y OTRAS UNIDADES
                            PERIFÉRICAS



   1. Escribir un programa que coloque en el puerto B los datos contenidos en el registro f8
      de la siguiente manera: los cuatro bits superiores salen sin ninguna alteración y los
      cuatro bajos son enmascarados con el número "5".




   2. Realizar un circuito básico que permita el funcionamiento de un microcontrolador PIC
      54, en el cual se disponga de 8 leds conectados al puerto B y un pulsador conectado al
      RTCC.
   3. Escribir un programa que cuente los pulsos que entran por el pin RTCC. Cuando la
      cuenta llegue a 10d, active por un segundo el LED 0 el puerto B.

       Hemos integrado estos dos puntos en uno solo. Por un lado generamos un contador de
       rebotes por el puerto RTCC y el resultado son cargados en el puerto B del PIC
       implementado.

       Se implemento un Software PIC Simulator IDE, que nos permite simular en tiempo real
       y observar los resultados de la programación del PIC. Debido a que el Software no
       soporta el PIC16c54 se escogió el PIC16f84a que está habilitado para su
       implementación.
Juan Carlos Gamboa P. (200019045)


       A continuación, se muestra el código Assembler del PIC:




       Se declaran los contadores para el retardo. Además, como se requiere que el conteo
       llegue a 10d, creamos un vector que posteriormente se cargara con .10, se crea un
       vector auxiliar para guardar el valor del Timer0 en cada ciclo de conteo. Por último, se
       genera un vector para que guarde la diferencia con el fin de ir restando el vector
       auxiliar del Timer0 con el valor máximo .10. cuando se haga cero este saltara de una
       subrutina y prendera por un 1seg el LED0 del puerto 0.




       En la etiqueta de inicio se configuran los puertos, las constantes y el vector
       OPTION_REG. Este último se utiliza para configurar el timer0 como contador o
Juan Carlos Gamboa P. (200019045)


       temporizador. En nuestro caso se configura como contador, en nuestro caso hemos
       puesto a “1” los bits T0SC, T0SE y PSA. Esto quiere decir que se habilita el pin RTCC del
       PIC como entrada del Timer0, que cambiara por medio de una transición de ALTO a
       BAJO y, por último, el prescaler se le asigna al WDG. En la etiqueta Contador_pulsos, lo
       que se hace es cargar el valor del Timer0 a W, cabe recalcar que antes de entrar a la
       siguiente instrucción se llama una subrutina que convierte el número decimal a BCD
       que prácticamente es una tabla con los 10 posibles números. Después se enmascara
       con el fin de guardar los 4 bits que nos interesa. Después se realiza una resta sucesiva
       entre tmr0_actual y máximo_num se testea el bit Z del STATUS para verificar cuando
       es cero para generar un salto a la subrutina de retardo donde se prendera el LED0.

       Simulación.




       Como se puede observar, del lado derecho observamos el puertoA,0 en donde está
       conectado un LED el cual es utilizado para indicar cuando la cuenta llegue a 10d. En
       los 7 segmentos se muestra el conteo. También se puede observar las entradas del PIC,
       que se identifican por medio de los botones T. y las salidas por el puerto B indicados
       en color verde.




       Por último, se observa que en el momento que el conteo del Timer llega a 10d se
       prende el LED conectado al puertoA,0. El cual dura 1seg encendido.
Juan Carlos Gamboa P. (200019045)


                                  PRACTICA No. 7
                  EJERCICIOS CON LOS CONVERTIDORES A/D

   1. Realizar el montaje del circuito de la figura, en el cual se dispone de 8 leds conectados
      al puerto B y un potenciómetro.




   2. Escribir un programa que coloque en el puerto B los datos correspondientes al valor
      en hexadecimal producto de la conversión A/D de la señal análoga presente en un pin
      del puerto A.
Juan Carlos Gamboa P. (200019045)




   3. Escribir un programa que entregue una oscilación (ON-OFF) de un LED en el puerto B
      con frecuencia variable y proporcional a la entrada análoga.

       Para la solución de este enunciado planteamos dos posibles soluciones. Primero,
       cuando se haga la conversión de un valor, se testea el bit de interrupción que indica el
       fin de la conversión, de voltaje este valor se carga a un ciclo de espera al cual vamos
       disminuyendo progresivamente hasta que llegue a cero durante este ciclo de espera el
       LED estará encendido. Segundo lugar, configuramos el Timer0 como temporizador y
       que produzca una interrupción mediante desbordamiento. Cargamos el valor
       producto de la conversión en W , después realizamos la resta de 256-W y este le dará
       el tiempo de duración del pulso. El Timer0 comenzara a partir de 256-W y cuando
       llegue a 256 desborda a pasa a 0000. Durante ese tiempo que dura en desbordamiento
       se activara el LED se testeara el bit de interrupción para apagar el LED y comenzar
       todo el proceso de conversión.

Más contenido relacionado

La actualidad más candente

Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Anllel Cardenas Yllanes
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03Cristian Ortiz Gómez
 
Transformada Hilbert-Huang
Transformada Hilbert-HuangTransformada Hilbert-Huang
Transformada Hilbert-HuangGilberto Oregon
 
Registros y contadores - sistema secuancial
Registros y contadores - sistema secuancialRegistros y contadores - sistema secuancial
Registros y contadores - sistema secuancialJulio Chipa
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Jomicast
 
Características de sumadores, codificadores, decodificadores, multiplexores y...
Características de sumadores, codificadores, decodificadores, multiplexores y...Características de sumadores, codificadores, decodificadores, multiplexores y...
Características de sumadores, codificadores, decodificadores, multiplexores y...Miguel Brunings
 
PROYECTO INTEGRADOR DIGITALES FER Y BETO
PROYECTO INTEGRADOR DIGITALES FER Y BETOPROYECTO INTEGRADOR DIGITALES FER Y BETO
PROYECTO INTEGRADOR DIGITALES FER Y BETOFERBETO2009
 
Diapositivas arquitectura registros
Diapositivas arquitectura registrosDiapositivas arquitectura registros
Diapositivas arquitectura registrosalexismoncada1978
 

La actualidad más candente (20)

Sesion 7 S Dbos
Sesion 7 S DbosSesion 7 S Dbos
Sesion 7 S Dbos
 
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
Tipos de flip flops
Tipos de flip flopsTipos de flip flops
Tipos de flip flops
 
Registro de desplazamiento
Registro de desplazamientoRegistro de desplazamiento
Registro de desplazamiento
 
Registro de desplazamiento
Registro de desplazamientoRegistro de desplazamiento
Registro de desplazamiento
 
Contadores digitales
Contadores digitalesContadores digitales
Contadores digitales
 
Lenguaje de Transferencia de Registro
Lenguaje de Transferencia de RegistroLenguaje de Transferencia de Registro
Lenguaje de Transferencia de Registro
 
Diseño de controladores con aplicación flip flop
Diseño de controladores con aplicación flip flopDiseño de controladores con aplicación flip flop
Diseño de controladores con aplicación flip flop
 
Transformada Hilbert-Huang
Transformada Hilbert-HuangTransformada Hilbert-Huang
Transformada Hilbert-Huang
 
Registros y contadores - sistema secuancial
Registros y contadores - sistema secuancialRegistros y contadores - sistema secuancial
Registros y contadores - sistema secuancial
 
ciruitos digitales
ciruitos digitalesciruitos digitales
ciruitos digitales
 
Clase 2 cdii
Clase 2 cdiiClase 2 cdii
Clase 2 cdii
 
Clase 3 cdii
Clase 3 cdiiClase 3 cdii
Clase 3 cdii
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
 
Características de sumadores, codificadores, decodificadores, multiplexores y...
Características de sumadores, codificadores, decodificadores, multiplexores y...Características de sumadores, codificadores, decodificadores, multiplexores y...
Características de sumadores, codificadores, decodificadores, multiplexores y...
 
CONTADORES
CONTADORES CONTADORES
CONTADORES
 
PROYECTO INTEGRADOR DIGITALES FER Y BETO
PROYECTO INTEGRADOR DIGITALES FER Y BETOPROYECTO INTEGRADOR DIGITALES FER Y BETO
PROYECTO INTEGRADOR DIGITALES FER Y BETO
 
Diapositivas arquitectura registros
Diapositivas arquitectura registrosDiapositivas arquitectura registros
Diapositivas arquitectura registros
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 

Similar a Programación del microcontrolador

Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersmarco calderon layme
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitEnrique Trascastro
 
PRESENTACION PROYECTO INTEGRADOR FER Y BETO
PRESENTACION PROYECTO INTEGRADOR FER Y BETOPRESENTACION PROYECTO INTEGRADOR FER Y BETO
PRESENTACION PROYECTO INTEGRADOR FER Y BETOFERBETO2009
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricialGabriel Bravo Rojas
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesiDavid Narváez
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Mauricio Diaz Garcia
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Uso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorUso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorGabriel Beltran
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plcForrestMamani
 
Microcontroladores - Configuración de puertos, bucles y saltos
Microcontroladores - Configuración de puertos, bucles y saltosMicrocontroladores - Configuración de puertos, bucles y saltos
Microcontroladores - Configuración de puertos, bucles y saltosmarco calderon layme
 
Tutorial proton part 4
Tutorial proton part 4Tutorial proton part 4
Tutorial proton part 4dar851112
 
informe-de-contador-de-0-a-9999.pdf
informe-de-contador-de-0-a-9999.pdfinforme-de-contador-de-0-a-9999.pdf
informe-de-contador-de-0-a-9999.pdfJOSEFERNANDOPADILLAA
 

Similar a Programación del microcontrolador (20)

Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekit
 
Proye84
Proye84Proye84
Proye84
 
PRESENTACION PROYECTO INTEGRADOR FER Y BETO
PRESENTACION PROYECTO INTEGRADOR FER Y BETOPRESENTACION PROYECTO INTEGRADOR FER Y BETO
PRESENTACION PROYECTO INTEGRADOR FER Y BETO
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Tarea final
Tarea finalTarea final
Tarea final
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Uso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorUso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontrolador
 
Guia 3
Guia 3Guia 3
Guia 3
 
Tutorial ii proyectos en basic proton
Tutorial ii   proyectos en basic protonTutorial ii   proyectos en basic proton
Tutorial ii proyectos en basic proton
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plc
 
Microcontroladores - Configuración de puertos, bucles y saltos
Microcontroladores - Configuración de puertos, bucles y saltosMicrocontroladores - Configuración de puertos, bucles y saltos
Microcontroladores - Configuración de puertos, bucles y saltos
 
Tutorial proton part 4
Tutorial proton part 4Tutorial proton part 4
Tutorial proton part 4
 
informe-de-contador-de-0-a-9999.pdf
informe-de-contador-de-0-a-9999.pdfinforme-de-contador-de-0-a-9999.pdf
informe-de-contador-de-0-a-9999.pdf
 

Programación del microcontrolador

  • 1. Juan Carlos Gamboa P. (200019045) PROGRAMACIÓN DEL MICROCONTROLADOR PIC 16xxx Prácticas de laboratorio 1. Practica 4. Direccionamiento con PIC 2. Practica 5. Operaciones aritméticas básicas con PIC 3. Practica 6. Operaciones con puertos en PICs 4. Practica 7. Conversión A/D
  • 2. Juan Carlos Gamboa P. (200019045) PRACTICA No. 4 CARGA DE REGISTROS Y MODOS DE DIRECCIONAMIENTO 1. Escribir un programa que transfiera el contenido de un registro a otro registro de manera directa en un PIC 16c54. Simúlelo. Para el direccionamiento directo fue necesaria la implementación del registro de trabajo (W) necesario para este tipo de acciones. Básicamente, se carga el registro de trabajo con el comando MOVLW con una constante cualquiera, y posteriormente, mediante el comando MOVWF se transfiere el contenido cargado en el registro de trabajo a una determinado registro ubicado en algún espacio de memoria X.
  • 3. Juan Carlos Gamboa P. (200019045) A continuación, como se puede observar en la fig. 1, se ubican los registros y el espacio de memoria del pic16c54. Por último, se observa como la constante 11 es transferido de registro en registro, es decir, del registro 0x08 al 0x0C. Figura 1. Registros del pic16c54. 2. Realizar un programa que efectué la transferencia de datos de un registro a otro utilizando direccionamiento indirecto (con el registro INDF). Simúlelo. En el direccionamiento indirecto, se utilizan los registros FSR e INDF, ubicados en los registros especiales. El registro FSR sirve como puntero para el direccionamiento indirecto. Al operar registro INDF se transfiere el valor cargado en el registro W al registro donde está apuntando FSR dentro de la RAM. El resultado de la simulación es análogo a la fig. 1. Se pretende transferir datos de un registro a otro de manera indirecta.
  • 4. Juan Carlos Gamboa P. (200019045) PRACTICA No. 3 OPERACIONES LÓGICAS Y ARITMÉTICAS BÁSICAS 1. Escribir un programa que sume el contenido de dos registros y guarde el resultado en otros dos registros consecutivos.
  • 5. Juan Carlos Gamboa P. (200019045) 2. Realizar un programa que efectúe la multiplicación de datos contenidos en dos registros. El resultado debe guardarse en otros dos registros consecutivos.
  • 6. Juan Carlos Gamboa P. (200019045) 3. Escriba un programa que divida el contenido de dos registros entre el contenido de otro registro y guarde el resultado en otros dos registros consecutivos.
  • 7. Juan Carlos Gamboa P. (200019045) Ambas operaciones, tanto división como multiplicación se realizan mediante rotaciones y sumas sucesivas del bit contenido en el carry. En la división se emplea el comando rlf, que rota el hacia la izquierda los bits que representan el numero decimal. Por otro lado, para la multiplicación se empleo la instrucción rrf, el cual de manera análoga que el comando anterior rota los bits del vector pero en sentido contrario, es decir, hacia la derecha. El código anterior, para ambos casos se inicia cargando las constantes a multiplicar, después se crea un vector contador el cual estará encargado de contar 8 rotaciones de posición. Después se llama a una subrutina encargada de generar las rotaciones y sumas sucesivas. Cuando el contador llegue a cero se detiene dicha función y se almacenan en dos vectores la parte alta y baja del resultado ya que la multiplicación de dos vectores de 8 bits genera uno de 16 bits. Se comprueba el resultado por medio de la calculadora.
  • 8. Juan Carlos Gamboa P. (200019045) PRACTICA No. 6 OPERACIONES CON PUERTOS Y OTRAS UNIDADES PERIFÉRICAS 1. Escribir un programa que coloque en el puerto B los datos contenidos en el registro f8 de la siguiente manera: los cuatro bits superiores salen sin ninguna alteración y los cuatro bajos son enmascarados con el número "5". 2. Realizar un circuito básico que permita el funcionamiento de un microcontrolador PIC 54, en el cual se disponga de 8 leds conectados al puerto B y un pulsador conectado al RTCC. 3. Escribir un programa que cuente los pulsos que entran por el pin RTCC. Cuando la cuenta llegue a 10d, active por un segundo el LED 0 el puerto B. Hemos integrado estos dos puntos en uno solo. Por un lado generamos un contador de rebotes por el puerto RTCC y el resultado son cargados en el puerto B del PIC implementado. Se implemento un Software PIC Simulator IDE, que nos permite simular en tiempo real y observar los resultados de la programación del PIC. Debido a que el Software no soporta el PIC16c54 se escogió el PIC16f84a que está habilitado para su implementación.
  • 9. Juan Carlos Gamboa P. (200019045) A continuación, se muestra el código Assembler del PIC: Se declaran los contadores para el retardo. Además, como se requiere que el conteo llegue a 10d, creamos un vector que posteriormente se cargara con .10, se crea un vector auxiliar para guardar el valor del Timer0 en cada ciclo de conteo. Por último, se genera un vector para que guarde la diferencia con el fin de ir restando el vector auxiliar del Timer0 con el valor máximo .10. cuando se haga cero este saltara de una subrutina y prendera por un 1seg el LED0 del puerto 0. En la etiqueta de inicio se configuran los puertos, las constantes y el vector OPTION_REG. Este último se utiliza para configurar el timer0 como contador o
  • 10. Juan Carlos Gamboa P. (200019045) temporizador. En nuestro caso se configura como contador, en nuestro caso hemos puesto a “1” los bits T0SC, T0SE y PSA. Esto quiere decir que se habilita el pin RTCC del PIC como entrada del Timer0, que cambiara por medio de una transición de ALTO a BAJO y, por último, el prescaler se le asigna al WDG. En la etiqueta Contador_pulsos, lo que se hace es cargar el valor del Timer0 a W, cabe recalcar que antes de entrar a la siguiente instrucción se llama una subrutina que convierte el número decimal a BCD que prácticamente es una tabla con los 10 posibles números. Después se enmascara con el fin de guardar los 4 bits que nos interesa. Después se realiza una resta sucesiva entre tmr0_actual y máximo_num se testea el bit Z del STATUS para verificar cuando es cero para generar un salto a la subrutina de retardo donde se prendera el LED0. Simulación. Como se puede observar, del lado derecho observamos el puertoA,0 en donde está conectado un LED el cual es utilizado para indicar cuando la cuenta llegue a 10d. En los 7 segmentos se muestra el conteo. También se puede observar las entradas del PIC, que se identifican por medio de los botones T. y las salidas por el puerto B indicados en color verde. Por último, se observa que en el momento que el conteo del Timer llega a 10d se prende el LED conectado al puertoA,0. El cual dura 1seg encendido.
  • 11. Juan Carlos Gamboa P. (200019045) PRACTICA No. 7 EJERCICIOS CON LOS CONVERTIDORES A/D 1. Realizar el montaje del circuito de la figura, en el cual se dispone de 8 leds conectados al puerto B y un potenciómetro. 2. Escribir un programa que coloque en el puerto B los datos correspondientes al valor en hexadecimal producto de la conversión A/D de la señal análoga presente en un pin del puerto A.
  • 12. Juan Carlos Gamboa P. (200019045) 3. Escribir un programa que entregue una oscilación (ON-OFF) de un LED en el puerto B con frecuencia variable y proporcional a la entrada análoga. Para la solución de este enunciado planteamos dos posibles soluciones. Primero, cuando se haga la conversión de un valor, se testea el bit de interrupción que indica el fin de la conversión, de voltaje este valor se carga a un ciclo de espera al cual vamos disminuyendo progresivamente hasta que llegue a cero durante este ciclo de espera el LED estará encendido. Segundo lugar, configuramos el Timer0 como temporizador y que produzca una interrupción mediante desbordamiento. Cargamos el valor producto de la conversión en W , después realizamos la resta de 256-W y este le dará el tiempo de duración del pulso. El Timer0 comenzara a partir de 256-W y cuando llegue a 256 desborda a pasa a 0000. Durante ese tiempo que dura en desbordamiento se activara el LED se testeara el bit de interrupción para apagar el LED y comenzar todo el proceso de conversión.