SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
GUÍA DE EJERCICIOS RESUELTOS

                    TEMA 3:

      HERRAMIENTAS DE PROGRAMACIÓN




Prof. Luis Zurita      1      Microcontroladores I
PROCEDIMIENTO DE RESOLUCIÓN

       El procedimiento estándar para la resolución de un proyecto en general
recomendado por el autor, consiste en segmentar el proyecto en tres pasos:

       Paso 1. Enunciado y delimitación del Hardware: El enunciado es la
razón de ser de cualquier proyecto. Es el problema que debe ser solucionado.

       Si el enunciado es proporcionado junto con el hardware, este paso nos
los ahorraremos. En caso contrario, se deben delimitar y definir todas las
variables de entradas y de salida. Debemos asignar los pines que van a actuar
como entrada de datos (Sensores) y los que van a actuar como salida de datos
(Actuadores o elementos finales de control).

       Se debe tratar de develar todo lo que se espera que haga el
funcionamiento del diseño que se está proponiendo. Se debe establecer un
resumen de cómo se debe comportar el circuito de control en base a lo que
queremos diseñar.

       Sirve para:

   •   Ponerle límites a nuestro proyecto

   •   Determinar las funciones que se espera que haga.

   •   Y fundamentalmente para especificar el hardware que va a ser
       controlado y gobernado por el microcontrolador



Paso 2. Diagrama de Flujo: Este nos proporcionará el funcionamiento lógico
del problema, proyecto o sistema que queremos diseñar.

       Si un proyecto es de mediana o gran complejidad, se recomienda
seccionar el diagrama de flujo en partes para analizar su funcionamiento y
posteriormente unirlo, bajo el lema de segmentar un proyecto grande en partes
pequeñas para su entendimiento y luego se agrupan, obteniendo la solución total
del proyecto.


Prof. Luis Zurita                      2                   Microcontroladores I
Generalmente se parte del enunciado que se ha delimitado en el paso
anterior.

Como recomendación general, antes de pasar a la elaboración del lenguaje
ensamblador, hágase las siguientes preguntas:

      ¿El diagrama de flujo tiene continuidad y lógica?
      ¿Cumplo con las normas de elaboración de un diagrama de flujo, vistas en
       clases?
      ¿El diagrama de flujo cumple con el enunciado?

       Si estas preguntas son afirmativas, bien, vayamos al paso 3. En caso
contrario debemos corregirlo, hasta lograr que funcione como se exige o como
lo deseamos.

Paso 3. Elaboración del Lenguaje Ensamblador: Si usted ha elaborado
correctamente el diagrama de flujo, este paso será sencillo de llevar a cabo,
recordando que a cada bloque que se haya colocado en el diagrama le
corresponderá un conjunto de instrucciones que salen exclusivamente de las 35
disponibles que traen los microcontroladores de la familia 16F con la que se
trabaja en este curso. Su documentación previa, experiencia, inventiva e
ingenio le permitirán combinarlas para que realicen la misma función expresada
en el diagrama de flujo.

       Se deben tener presente las diferentes rutinas ya estudiadas y vistas a
lo largo del curso, así como otras rutinas estándares que existen para el uso en
diferentes procedimientos, tales como: Rutinas matemáticas, manejo de LCD,
comunicaciones, conversiones entre códigos, etc.

       Veamos un     diagrama de flujo de la metodología de resolución de
problemas:




Prof. Luis Zurita                       3                   Microcontroladores I
Prof. Luis Zurita   4   Microcontroladores I
1. Dado el siguiente circuito:




Realice un programa que permita explorar el estado del bit RA3. Si RA3 es uno,
se debe mostrar en el display el número 5. Caso contrario se debe mostrar el
número3. (8 ptos)

                                 SOLUCIÓN:

Paso 1. Enunciado y delimitación del Hardware: si el enunciado y el hardware
ya se nos ha proporcionado, saltaremos este paso.

Paso 2. Diagrama de Flujo:




Prof. Luis Zurita                     5                   Microcontroladores I
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

Si tenemos el Diagrama de Flujo bien diseñado, lo demás es “Carpintería”,
veamos:
              List       P=16F84A
              Include    P16F84A.inc         ; Encabezado
              org        00H
              goto       INICIO
                                             ; Bloque 1:
INICIO        bsf        STATUS,5            ;Ir a banco 1
              bsf        TRISA,3             ;RA3 se configura como entrada
              clrf       TRISB               ;RB7 a RB4 como salida
              bcf        STATUS,5            ;Regresar al banco 0
                                             ; Bloque 2:
EXPLORA       btfss      PORTA,3             ;RA3= 1?
              goto       TRES                ;RA3 =0. Mostrar 3 en display
              goto       CINCO               ;Este paso podemos obviarlo.
                                             ; Bloque 3:
CINCO         movlw      B’10100000’         ;RA3=1. Mostrar 5 en display
              movwf      PORTB               ;5→Display
              goto       EXPLORA             ;Seguimos explorando el Bit RA3
                                             ; Bloque 4:
TRES          movlw      B’11000000’         ;RA3=0. Mostrar 3 en display
              movwf      PORTB               ;3→Display
              goto       EXPLORA             ;Seguimos explorando el Bit RA3
              end


Nota: Otra forma de hacer los bloques 3 y 4 sería la siguiente:
Bloque 3:                              Bloque 4:
bsf    PORTB,7                         bsf   PORTB,7
bcf    PORTB,6                         bsf   PORTB,6
bsf    PORTB,5                         bcf   PORTB,5
bcf    PORTB,4                         bcf   PORTB,4
Observe la conexión del puerto B con el display.

Prof. Luis Zurita                      6                     Microcontroladores I
2. Dado el siguiente circuito:




Realice un programa que permita mostrar en el display la letra “C”, si la entrada
está en nivel bajo ó la letra “U” si la entrada está en nivel alto. (8 ptos)

                                   SOLUCIÓN:

Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado pero
el hardware no está del todo claro.

       Como no se especifica que bit del microcontrolador controla a cuál
segmento del display, debemos especificarlo. Además no se especifica que
display vamos a utilizar, no sabemos si es ánodo común o cátodo común. Por lo
tanto lo asignaremos a nuestro criterio. Eligiendo un cátodo común tendremos:

             Bits de microcontrolador
 RB7 RB6 RB5 RB4 RB3 RB2 RB1                RB0
                Segmentos del Display
 dp    g      f     e     d     c     b     a           LETRA        Valor Hex
 0     0      1     1     1     0     0     1           C            39H
 0     0      1     1     1     1     1     0           U            3EH
La identificación de los segmentos de un display       a nivel internacional es la
siguiente:




Prof. Luis Zurita                        7                     Microcontroladores I
Paso 2. Diagrama de Flujo:




Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

       El lenguaje ensamblador es similar al ejercicio 1:
              List        P=16F84A
              Include     P16F84A.inc         ; Encabezado
              org         00H
              goto        INICIO
                                              ; Bloque 1:
INICIO        bsf         STATUS,5            ;Ir a banco 1
              bsf         TRISA,1             ;RA1 se configura como entrada
              clrf        TRISB               ;Todo el Puerto B como salida
              bcf         STATUS,5            ;Regresar al banco 0
                                              ; Bloque 2:
EXPLORA       btfss       PORTA,1             ;RA1= 1?
              goto        CCC                 ;RA1 =0. Mostrar C en display

Prof. Luis Zurita                       8                     Microcontroladores I
goto        UUU                ;Este paso podemos obviarlo.
                                             ; Bloque 3:
UUU           movlw       3EH                ;RA1=1. Mostrar U en display
              movwf       PORTB              ;3EH→Display
              goto        EXPLORA            ;Seguimos explorando el Bit RA1
                                             ; Bloque 4:
CCC           movlw       39H                ;RA1=0. Mostrar C en display
              movwf       PORTB              ;39H→Display
              goto        EXPLORA            ;Seguimos explorando el Bit RA1
              end



3. Diseñe un contador de 8 bits, que se incrementa cada vez que se pulsa
   “P” (RA3). Visualice el resultado por el puerto B. Activar un led (RA0),
   cuando el contador llegue a D’125’ y apagarlo cuando llegue a D’221’.
   Repetir el ciclo.

                                  SOLUCIÓN:

Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado y
parte del hardware definido.

      Se ha asignado a RA3 como un sensor de entrada (Pulsador)
      Se ha asignado a RA0 como un elemento de salida (Led)
      Se pide al puerto B que muestre el valor de un contador (Son ocho bits),
       por lo que es un elemento de salida (8 leds)

   ¿Cómo quedaría delimitado el hardware?

       Asignaremos la lógica del Pulsador (Lógica negativa):

      Si P es presionado, RA3=0
      Si P no es presionado, RA3=1.

Si usted desea trabajar con lógica positiva, no hay problema, debe
reconfigurar el circuito del pulsador.




Prof. Luis Zurita                       9                      Microcontroladores I
VDD




            C1
            22p
                                    U1                                                                     R1
                     X1        16
                               15
                                     OSC1/CLKIN       RA0
                                                             17
                                                             18
                                                                                                           1k
                                                                                                                 Pulsador
                                                                                                                 PULSADOR
                     CRYSTAL         OSC2/CLKOUT      RA1                                      VSS
            C2                                               1
                                                      RA2
                               4                             2
                                     MCLR             RA3
                                                             3
                                                RA4/T0CKI
            22p
     VSS
                                                             6
                                                   RB0/INT
                                                             7
                                                      RB1
                                                             8
                                                      RB2                                                             VSS
                                                             9
                                                      RB3
                                                             10
                                                      RB4
                                                             11
                                                      RB5
                                                             12
                                                      RB6
                                                             13
                                                      RB7
                                    PIC16F84A




                                                              Todas las Resistencias= 330 Ohmios
                                                Todas las Resistencias= 330 Ω
                                                                                                           VSS




       Listo, tenemos el cascarón vacío del proyecto. Ahora vamos a darle
inteligencia.



Paso 2. Diagrama de Flujo:

       Debemos usar un registro que lleve la cuenta (Contador de 8 bits) por lo
que debemos declararlo en el paso 3.

       Veamos el diagrama de flujo:




Prof. Luis Zurita                                      10                                          Microcontroladores I
INICIO

                                                               Bloque 1
                         Declarar
                     Registro Contador
                                                               Bloque 2
                        Configurar
                       Puerto A y B
                                                               Bloque 3
                       Inicializamos
                     Registro Contador
                                                               Bloque 4

                     Contador→PORTB

     Bloque 5                                                      1
                                 RA3=0?

                                          NO
                          ¿Se ha
                        pulsado P?


                                 SI                                Bloque 6

                    Contador=Contador+1
                                                                   Bloque 7

                     Contador→PORTB
                                                                                      Bloque 9
     Bloque 8

                                          NO                              NO
                      ¿Contador=125?                ¿Contador=221?                1


                                 SI                           SI

                         Led=ON                        Led=OFF



                             1                            1




Prof. Luis Zurita                              11                             Microcontroladores I
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

       Recuerde la declaración el registro CONTADOR:


              List      P=16F84A
              Include   P16F84A.inc        ; Encabezado
                                           ;Bloque 1: (Declaraciones)
CONTADOR equ            20H                ;Declaramos el Registro


              org       00H
              goto      INICIO
                                           ; Bloque 2:
INICIO        bsf       STATUS,5           ;Ir a banco 1
              bsf       TRISA,3            ;RA1 se configura como entrada
              bcf       TRISA,0            ;RA0 como salida
              clrf      TRISB              ;Todo el Puerto B como salida
              bcf       STATUS,5           ;Regresar al banco 0
                                           ; Bloque 3:
              clrf      CONTADOR           ;Inicializamos el contador
              clrf      PORTB              ;Limpiamos el Puerto B
                                           ; Bloque 4:
              movf      CONTADOR,0         ;CONTADOR→W
              movwf     PORTB              ; W→PORTB
                                           ; Bloque 5:
CUENTA        btfsc     PORTA,3            ;RA3= 1? ¿Se ha pulsado P?
NO            goto      CUENTA             ;No. Seguimos explorando
              goto      SI                 ;Si. Vamos al bloque 6
                                           ; Bloque 6:
SI            incf      CONTADOR,1         ;Si. Contador= Contador + 1
                                           ; Bloque 7:
              movf      CONTADOR,0         ;CONTADOR→W
              movwf     PORTB              ; W→PORTB
                                           ; Bloque 8:
              sublw     .125               ;¿Contador=125? W =Contador.

Prof. Luis Zurita                     12                   Microcontroladores I
btfss     STATUS,2          ;Z=1?
              goto      VALOR2            ;Ir a preguntar si Contador=221
              bsf       PORTA,0           ;Contador=125, Led=ON
              goto      EXPLORA           ;Volvemos a explorar el Pulsador
                                          ; Bloque 9:
VALOR2        movf      CONTADOR          ; CONTADOR→W
;Aquí pasamos contador a W porque no sabemos si W tenía su valor
              sublw     .221              ;¿Contador=221?
              btfss     STATUS,2          ;Z=1?
              goto      EXPLORA           ; Volvemos a explorar el Pulsador
              bcf       PORTA,0           ;Contador=221, Led=OFF
              goto      EXPLORA           ;Volvemos a explorar el Pulsador
              end



4. Diseñe un control de nivel para un tanque. Al pulsar “INICIO”, se
   activa la bomba B1. La bomba permanece encendida hasta alcanzar el
   nivel máximo, mediante el cual se apagará. Se debe abrir la válvula de
   vaciado. La bomba (B1) se volverá a activar de forma automática
   cuando se alcance el nivel mínimo procediendo a cerrar la válvula de
   vaciado, hasta que alcance el nivel máximo, repitiendo el ciclo de forma
   automática sin necesidad de volver a pulsar “INICIO”.




Prof. Luis Zurita                    13                  Microcontroladores I
Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado pero
el hardware debemos delimitarlo.

       Para lograr esta tarea debemos asignar los pines de control de Entrada y
de salida, con la finalidad de saber qué vamos a controlar y quién nos dará la
información.

       Debemos identificar cuales elementos son entrada y cuales salida:

            ENTRADA          ¿Qué    pin SALIDA               ¿Qué    pin
                             Asignamos?                       Asignamos?
      Sensor Máximo          RA0         Bomba B1             RB0
      Sensor Mínimo          RA1         Válvula Vaciado      RB1
      Pulsador “INICIO”      RA2


¿Y si quiero asignar otros pines? Perfecto, queda a libre elección.



Paso 2. Diagrama de Flujo:

       Veamos el diagrama de flujo:




Prof. Luis Zurita                      14                    Microcontroladores I
INICIO

                                                          Bloque 1
                                  Configurar
                                 Puerto A y B
                                                          Bloque 2

                                 Bomba=OFF
                                                           Bloque 3

                             Válvula Vaciado=OFF

             Bloque 4
                                          RA2=0?

                                                     NO
                                  ¿Se pulsó
                                   Inicio?

                                           SI
                         1                                Bloque 5

                                 Bomba=ON
                                                          Bloque 6

                             Válvula Vaciado=OFF


             Bloque 7
                                                    NO

                               ¿Nivel Máximo?


                                                           Bloque 8
                                          SI

                                 Bomba=OFF
                                                          Bloque 9

                             Válvula Vaciado=ON


             Bloque 10
                                                    NO

                                ¿Nivel Mínimo?


                                          SI
                                      1




Prof. Luis Zurita                              15         Microcontroladores I
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

              List      P=16F84A
              Include   P16F84A.inc        ; Encabezado
              org       00H
              goto      INICIO
                                           ; Bloque 1:
INICIO        bsf       STATUS,5           ;Ir a banco 1
              bsf       TRISA,0            ;RA0 entrada. Sensor máximo.
              bsf       TRISA,1            ;RA1 entrada. Sensor mínimo.
              bsf       TRISA,2            ;RA2 entrada. Pulsador.
              bcf       TRISB,0            ;RB0 salida. Bomba B1
              bcf       TRISB,1            ;RB1 salida. Válvula Vaciado.
              bcf       STATUS,5           ;Regresar al banco 0
                                           ; Bloque 2:
              bcf       PORTB,0            ;Bomba=OFF
                                           ; Bloque 3:
              bcf       PORTB,1            ; Válvula Vaciado=OFF
                                           ; Bloque 4:
EXPLORA       btfsc     PORTA,2            ;¿Se ha pulsado INICIO?
              goto      EXPLORA            ;No. Seguimos explorando
                                           ; Bloque 5:
REPITE        bsf       PORTB,0            ;Se pulsó INICIO. Bomba=ON
                                           ; Bloque 6:
              bcf       PORTB,1            ;Válvula=OFF
                                           ; Bloque 7:
MAXIMO        btfsc     PORTA,0            ;¿Se ha llegado al máximo?
              goto      MAXIMO             ;No. Seguimos explorando
                                           ; Bloque 8:
SIMAX         bcf       PORTB,0            ;Nivel Máximo. Bomba=OFF.
                                           ; Bloque 9:
              bsf       PORTB,1            ;Válvula=ON
MINIMO        btfsc     PORTA,1            ;¿Se ha llegado al mínimo?
              goto      MINIMO             ;No. Seguimos explorando
              goto      REPITE             ;Nivel mínimo, repetimos ciclo.
              end




Prof. Luis Zurita                     16                  Microcontroladores I
5. Se    desea      diseñar   un   sistema    de   protección   para   una   línea   de
   ensamblaje que contiene 4 máquinas soldadoras.

          M1 (RA0)      M2 (RA1)     M3 (RA2) M4 (RA3)
          Máquina activa= 1          Máquina inactiva= 0
* Cada máquina tiene dos leds que indican si están funcionando:

          (Led Verde=ON) o si están apagadas (Led Rojo=ON).
* Si ninguna máquina está activa, debe activarse adicionalmente una señal
sonora (RA4).




                                     SOLUCIÓN:

Paso 1. Enunciado y delimitación del Hardware: si el enunciado y el hardware
ya se nos ha proporcionado, saltaremos este paso.




Prof. Luis Zurita                            17                  Microcontroladores I
Paso 2. Diagrama de Flujo:


         INICIO                                1



       Configurar
      Puerto A y B                         ¿Motor 4=      NO
                                             OK?
   Declarar Registro                                        LVM4=OFF
                                                 SI
      Indicador
                                          LVM4=OFF           LRM4=ON
  Todos los Leds=OFF                       LRM4=ON
                                                            Indicador=1

      Sirena=OFF

                                          ¿Indicador=     NO
  Registro Indicador=0
                                               0?
                              CICLO
                                                   SI
                                                            Sirena=OFF
                                           Sirena=ON
       ¿Motor 1=         NO
         OK?
                          LVM1=OFF                             CICLO
             SI                               CICLO
      LVM1=OFF             LRM1=ON

      LRM1=ON
                          Indicador=1
                                        ¿Qué función tiene el registro Indicador?
     Indicador=0
                                        El ciclo de exploración de las máquinas
                                        empieza por la primera. Si esta no funciona,
       ¿Motor 2=         NO             Indicador vale 0. Si funciona, Indicador vale 1.
         OK?                            Si alguna de las restantes máquinas
                          LVM2=OFF      funciona, Indicador pasará a valer 1, lo que
             SI
                                        nos informa que al menos hay una máquina
      LVM2=OFF                LRM2=ON   trabajando, por lo que no debería activarse la
       LRM2=ON                          alarma.
                          Indicador=1
                                        Ahora. Si la máquina 1 no funciona, y no
                                        funciona ninguna de las restantes, Indicador
                                        seguirá valiendo 0, por lo que al preguntar
                                        por su valor, se debe activar la alarma, tal
       ¿Motor 3=         NO             como se exige en el enunciado.
         OK?                            Existen otras formas de hacerlo, como por
                          LVM3=OFF      ejemplo, preguntar al final si cada máquina es
             SI
                                        cero para activar o no la alarma, pero el
      LVM3=OFF                LRM3=ON   diagrama de flujo quedaría más extenso, así
       LRM3=ON                          como su programa.
                          Indicador=1



           1



Prof. Luis Zurita                        18                         Microcontroladores I
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

       Existe una forma más resumida de hacer este problema, pero
necesitamos el uso de las tablas, tema que veremos en otra unidad. Veamos la
forma extendida:

          List          P=16F84A
          Include       P16F84A.inc        ;Encabezado
INDICADOR equ           20H                ;Declaramos el registro Indicador

              org       00H
              goto      INICIO

INICIO        bsf       STATUS,5           ;Ir a banco 1
              movlw     B’00001111’
              movwf     TRISA              ;Configuramos el Puerto A
              clrf      TRISB              ;Configuramos el Puerto B
              bcf       STATUS,5           ;Regresar al banco 0

              clrf      PORTB              ;Todos los Leds=OFF
              bcf       PORTA,4            ;Sirena=OFF
              clrf      INDICADOR          ;Registro Indicador=0
MAQ1          btfsc     PORTA,0            ;Máquina 1 inactiva?
              goto      M1OK               ;Vamos a Máquina 1 bien.
M1MAL         bcf       PORTB,0            ;LVM1=OFF
              bsf       PORTB,1            ;LRM1=ON
              clrf      INDICADOR          ;Indicador a cero
              goto      MAQ2               ;Vamos a explorar Máquina 2
M1OK          bsf       PORTB,0            ;LVM1=ON
              bcf       PORTB,1            ;LRM1=OFF
              movlw     .1
              movwf     INDICADOR          ;Indicador=1
              goto      MAQ2               ;Vamos a explorar Máquina 2
MAQ2          btfsc     PORTA,1            ;Máquina 2 inactiva?
              goto      M2OK               ;Vamos a Máquina 2 bien.
M2MAL         bcf       PORTB,2            ;LVM2=OFF
              bsf       PORTB,3            ;LRM2=ON
              clrf      INDICADOR          ;Indicador a cero
              goto      MAQ3               ;Vamos a explorar Máquina 2
Prof. Luis Zurita                     19                   Microcontroladores I
M2OK          bsf     PORTB,2       ;LVM2=ON
              bcf     PORTB,3       ;LRM2=OFF
              movlw   .1
              movwf   INDICADOR     ;Indicador=1
              goto    MAQ3          ;Vamos a explorar Máquina 3
MAQ3          btfsc   PORTA,2       ;Máquina 3 inactiva?
              goto    M3OK          ;Vamos a Máquina 3 bien.
M3MAL         bcf     PORTB,4       ;LVM3=OFF
              bsf     PORTB,5       ;LRM3=ON
              clrf    INDICADOR     ;Indicador a cero
              goto    MAQ4          ;Vamos a explorar Máquina 4
M3OK          bsf     PORTB,4       ;LVM3=ON
              bcf     PORTB,5       ;LRM3=OFF
              movlw   .1
              movwf   INDICADOR     ;Indicador=1
              goto    MAQ4          ;Vamos a explorar Máquina 4
MAQ4          btfsc   PORTA,3       ;Máquina 4 inactiva?
              goto    M4OK          ;Vamos a Máquina 4 bien.
M4MAL         bcf     PORTB,6       ;LVM4=OFF
              bsf     PORTB,7       ;LRM4=ON
              clrf    INDICADOR     ;Indicador a cero
              goto    ALARMA        ;Vamos a explorar la Alarma
M4OK          bsf     PORTB,6       ;LVM4=ON
              bcf     PORTB,7       ;LRM4=OFF
              movlw   .1
              movwf   INDICADOR     ;Indicador=1
              goto    ALARMA        ;Vamos a explorar la Alarma
ALARMA        movf    INDICADOR,0   ;INDICADOR→W
              sublw   00H
              btfss   STATUS,2      ;Z=1? INDICADOR=0?
              goto    ALAOFF        ; Hay al menos una máquina=ON.
              goto    ALAON         ; Todas las máquinas= OFF
ALAON         bsf     PORTA,4       ; ALARMA=ON
              goto    MAQ1          ;Repetimos el ciclo de exploración.
ALAOFF        bcf     PORTA,4       ; ALARMA=OFF
              goto    MAQ1          ;Repetimos el ciclo de exploración.
              end                   ;Fin del Programa



Prof. Luis Zurita              20                  Microcontroladores I
6. Diseñe un control de nivel para un tanque.
       Se tiene un interruptor selector de “MODO”
       Si “MODO” es manual, las bombas se activan sin importar el nivel
   del tanque subterráneo.
       Si “MODO” es automático, la activación de las bombas dependerá
   de:
       Si el nivel del agua está por debajo del nivel mínimo, se activará la
   bomba 1 hasta que se alcance el nivel Máximo, y procederá a apagarse.
       Si el nivel del agua está por encima del nivel mínimo, pero por
   debajo del nivel máximo, se activará la bomba 2 hasta que se alcance
   el nivel Máximo y procederá a apagarse.
       Se debe monitorear si ha cambiado el “MODO”.



                                    SOLUCIÓN:

Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado, sin
embargo debemos delimitar el hardware.

       Para lograr esta tarea debemos asignar los pines de control de Entrada y
de salida, con la finalidad de saber qué vamos a controlar y quién nos dará la
información.

       Debemos identificar cuales elementos son entrada y cuales salida:

            ENTRADA       ¿Qué    pin SALIDA                   ¿Qué    pin
                          Asignamos?                           Asignamos?
     Interruptor “INICIO” RA0         Bomba B1                 RB0
     Sensor Máximo        RA1         Bomba B2                 RB1
     Sensor Mínimo            RA2


¿Y si quiero asignar otros pines? Perfecto, queda a libre elección.




Prof. Luis Zurita                      21                    Microcontroladores I
Paso 2. Diagrama de Flujo:




            INICIO




          Configurar
         Puerto A y B




           Inicializar
            Puerto B



  M

                         SI   Bomba 1= ON
          ¿Manual?
                              Bomba 2= ON

                   NO

                         SI                  SI   Bomba 1= ON
         ¿SMáximo?             ¿SMínimo?
                                                  Bomba 2= OFF

                   NO                  NO                                1

                              Bomba 1= OFF
               2
                              Bomba 2= ON                        SI
                                                   ¿Smáximo?


                                                           NO
                                   1                                     2

                                                  Bomba 1= OFF
                                                  Bomba 2= OFF



                                                       M




Prof. Luis Zurita                       22                 Microcontroladores I
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

              list      P=16F84A
              include   P16F84A.INC

              org       00H
              goto      INICIO

INICIO        bsf       STATUS,5
              clrf      TRISB
              movlw     1FH
              movwf     TRISA
              bcf       STATUS,5
              clrf PORTB

MODO          btfsc     PORTA,0           ;MODO AUTO?
              goto      AUTO
MANUAL        bsf       PORTB,0           ;No. Modo manual. Bomba 1= ON
              bsf       PORTB,1           ;Bomba 2=ON
              goto      MODO
AUTO          btfsc     PORTA,1           ;MÁXIMO?
              goto      DOS
              btfsc     PORTA,2           ;MÍNIMO
              goto      MODO1
MODO2         bsf       PORTB,0           ;Bomba 1=ON
              bcf       PORTB,1           ;Bomba 2=OFF
UNO           btfss     PORTA,1           ;MÁXIMO ALCANZADO
              goto      UNO
DOS           bcf       PORTB,0           ;Bomba 1=OFF
              bcf       PORTB,1           ;Bomba 2=OFF
              goto      MODO
MODO1         bcf       PORTB,0           ;Bomba 1=OFF
              bsf       PORTB,1           ;Bomba 2=ON
              goto      UNO
              end




Prof. Luis Zurita                   23                   Microcontroladores I

Más contenido relacionado

La actualidad más candente

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
 
modulo-allend-bradley-manual_compress.pdf
modulo-allend-bradley-manual_compress.pdfmodulo-allend-bradley-manual_compress.pdf
modulo-allend-bradley-manual_compress.pdf
dfdfdf7
 
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
 

La actualidad más candente (20)

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
 
direccionamiento microcontroladores pic
direccionamiento microcontroladores picdireccionamiento microcontroladores pic
direccionamiento microcontroladores pic
 
Contadores a y s síncronos
Contadores a y s síncronosContadores a y s síncronos
Contadores a y s síncronos
 
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
 
Trabajo especial modulacion angular
Trabajo especial modulacion angularTrabajo especial modulacion angular
Trabajo especial modulacion angular
 
Montaje de un indicador de la tensión de la bateria
Montaje de un indicador de la tensión de la bateriaMontaje de un indicador de la tensión de la bateria
Montaje de un indicador de la tensión de la bateria
 
DiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo JkDiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo Jk
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 
TMR0 Y RB0_INT
TMR0 Y RB0_INTTMR0 Y RB0_INT
TMR0 Y RB0_INT
 
problemas amplificador multietapa
problemas amplificador multietapaproblemas amplificador multietapa
problemas amplificador multietapa
 
1.3.1 polarizacion del jfet
1.3.1 polarizacion del jfet1.3.1 polarizacion del jfet
1.3.1 polarizacion del jfet
 
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOSTRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
TRANSFORMADA DE LAPLACE PARA CIRCUITOS ELÉCTRICOS
 
Laboratorio de Microcomputadoras - Práctica 01
Laboratorio de Microcomputadoras - Práctica 01Laboratorio de Microcomputadoras - Práctica 01
Laboratorio de Microcomputadoras - Práctica 01
 
Informe 4 digitales
Informe 4 digitalesInforme 4 digitales
Informe 4 digitales
 
Flip flop
Flip flopFlip flop
Flip flop
 
modulo-allend-bradley-manual_compress.pdf
modulo-allend-bradley-manual_compress.pdfmodulo-allend-bradley-manual_compress.pdf
modulo-allend-bradley-manual_compress.pdf
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
Circuitos de disparo con aislamiento
Circuitos de disparo con aislamientoCircuitos de disparo con aislamiento
Circuitos de disparo con aislamiento
 
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
 

Similar a Guía de ejercicios resueltos tema 2

Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
georgeguitar
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11
Mauricio Diaz Garcia
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
Jair BG
 

Similar a Guía de ejercicios resueltos tema 2 (20)

Microcontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdfMicrocontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdf
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2
 
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
 
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
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
Picprimerospasos
PicprimerospasosPicprimerospasos
Picprimerospasos
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
 
Tarea final
Tarea finalTarea final
Tarea final
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11
 
Tutorial ii proyectos en basic proton
Tutorial ii   proyectos en basic protonTutorial ii   proyectos en basic proton
Tutorial ii proyectos en basic proton
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
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
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 

Más de Luis Zurita

TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
Luis Zurita
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
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
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13
Luis Zurita
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
Luis Zurita
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronica
Luis Zurita
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iyc
Luis Zurita
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013
Luis Zurita
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronica
Luis Zurita
 

Más de Luis Zurita (20)

TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUS
 
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
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
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
 

Último

RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Último (20)

ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 

Guía de ejercicios resueltos tema 2

  • 1. GUÍA DE EJERCICIOS RESUELTOS TEMA 3: HERRAMIENTAS DE PROGRAMACIÓN Prof. Luis Zurita 1 Microcontroladores I
  • 2. PROCEDIMIENTO DE RESOLUCIÓN El procedimiento estándar para la resolución de un proyecto en general recomendado por el autor, consiste en segmentar el proyecto en tres pasos: Paso 1. Enunciado y delimitación del Hardware: El enunciado es la razón de ser de cualquier proyecto. Es el problema que debe ser solucionado. Si el enunciado es proporcionado junto con el hardware, este paso nos los ahorraremos. En caso contrario, se deben delimitar y definir todas las variables de entradas y de salida. Debemos asignar los pines que van a actuar como entrada de datos (Sensores) y los que van a actuar como salida de datos (Actuadores o elementos finales de control). Se debe tratar de develar todo lo que se espera que haga el funcionamiento del diseño que se está proponiendo. Se debe establecer un resumen de cómo se debe comportar el circuito de control en base a lo que queremos diseñar. Sirve para: • Ponerle límites a nuestro proyecto • Determinar las funciones que se espera que haga. • Y fundamentalmente para especificar el hardware que va a ser controlado y gobernado por el microcontrolador Paso 2. Diagrama de Flujo: Este nos proporcionará el funcionamiento lógico del problema, proyecto o sistema que queremos diseñar. Si un proyecto es de mediana o gran complejidad, se recomienda seccionar el diagrama de flujo en partes para analizar su funcionamiento y posteriormente unirlo, bajo el lema de segmentar un proyecto grande en partes pequeñas para su entendimiento y luego se agrupan, obteniendo la solución total del proyecto. Prof. Luis Zurita 2 Microcontroladores I
  • 3. Generalmente se parte del enunciado que se ha delimitado en el paso anterior. Como recomendación general, antes de pasar a la elaboración del lenguaje ensamblador, hágase las siguientes preguntas:  ¿El diagrama de flujo tiene continuidad y lógica?  ¿Cumplo con las normas de elaboración de un diagrama de flujo, vistas en clases?  ¿El diagrama de flujo cumple con el enunciado? Si estas preguntas son afirmativas, bien, vayamos al paso 3. En caso contrario debemos corregirlo, hasta lograr que funcione como se exige o como lo deseamos. Paso 3. Elaboración del Lenguaje Ensamblador: Si usted ha elaborado correctamente el diagrama de flujo, este paso será sencillo de llevar a cabo, recordando que a cada bloque que se haya colocado en el diagrama le corresponderá un conjunto de instrucciones que salen exclusivamente de las 35 disponibles que traen los microcontroladores de la familia 16F con la que se trabaja en este curso. Su documentación previa, experiencia, inventiva e ingenio le permitirán combinarlas para que realicen la misma función expresada en el diagrama de flujo. Se deben tener presente las diferentes rutinas ya estudiadas y vistas a lo largo del curso, así como otras rutinas estándares que existen para el uso en diferentes procedimientos, tales como: Rutinas matemáticas, manejo de LCD, comunicaciones, conversiones entre códigos, etc. Veamos un diagrama de flujo de la metodología de resolución de problemas: Prof. Luis Zurita 3 Microcontroladores I
  • 4. Prof. Luis Zurita 4 Microcontroladores I
  • 5. 1. Dado el siguiente circuito: Realice un programa que permita explorar el estado del bit RA3. Si RA3 es uno, se debe mostrar en el display el número 5. Caso contrario se debe mostrar el número3. (8 ptos) SOLUCIÓN: Paso 1. Enunciado y delimitación del Hardware: si el enunciado y el hardware ya se nos ha proporcionado, saltaremos este paso. Paso 2. Diagrama de Flujo: Prof. Luis Zurita 5 Microcontroladores I
  • 6. Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador: Si tenemos el Diagrama de Flujo bien diseñado, lo demás es “Carpintería”, veamos: List P=16F84A Include P16F84A.inc ; Encabezado org 00H goto INICIO ; Bloque 1: INICIO bsf STATUS,5 ;Ir a banco 1 bsf TRISA,3 ;RA3 se configura como entrada clrf TRISB ;RB7 a RB4 como salida bcf STATUS,5 ;Regresar al banco 0 ; Bloque 2: EXPLORA btfss PORTA,3 ;RA3= 1? goto TRES ;RA3 =0. Mostrar 3 en display goto CINCO ;Este paso podemos obviarlo. ; Bloque 3: CINCO movlw B’10100000’ ;RA3=1. Mostrar 5 en display movwf PORTB ;5→Display goto EXPLORA ;Seguimos explorando el Bit RA3 ; Bloque 4: TRES movlw B’11000000’ ;RA3=0. Mostrar 3 en display movwf PORTB ;3→Display goto EXPLORA ;Seguimos explorando el Bit RA3 end Nota: Otra forma de hacer los bloques 3 y 4 sería la siguiente: Bloque 3: Bloque 4: bsf PORTB,7 bsf PORTB,7 bcf PORTB,6 bsf PORTB,6 bsf PORTB,5 bcf PORTB,5 bcf PORTB,4 bcf PORTB,4 Observe la conexión del puerto B con el display. Prof. Luis Zurita 6 Microcontroladores I
  • 7. 2. Dado el siguiente circuito: Realice un programa que permita mostrar en el display la letra “C”, si la entrada está en nivel bajo ó la letra “U” si la entrada está en nivel alto. (8 ptos) SOLUCIÓN: Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado pero el hardware no está del todo claro. Como no se especifica que bit del microcontrolador controla a cuál segmento del display, debemos especificarlo. Además no se especifica que display vamos a utilizar, no sabemos si es ánodo común o cátodo común. Por lo tanto lo asignaremos a nuestro criterio. Eligiendo un cátodo común tendremos: Bits de microcontrolador RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Segmentos del Display dp g f e d c b a LETRA Valor Hex 0 0 1 1 1 0 0 1 C 39H 0 0 1 1 1 1 1 0 U 3EH La identificación de los segmentos de un display a nivel internacional es la siguiente: Prof. Luis Zurita 7 Microcontroladores I
  • 8. Paso 2. Diagrama de Flujo: Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador: El lenguaje ensamblador es similar al ejercicio 1: List P=16F84A Include P16F84A.inc ; Encabezado org 00H goto INICIO ; Bloque 1: INICIO bsf STATUS,5 ;Ir a banco 1 bsf TRISA,1 ;RA1 se configura como entrada clrf TRISB ;Todo el Puerto B como salida bcf STATUS,5 ;Regresar al banco 0 ; Bloque 2: EXPLORA btfss PORTA,1 ;RA1= 1? goto CCC ;RA1 =0. Mostrar C en display Prof. Luis Zurita 8 Microcontroladores I
  • 9. goto UUU ;Este paso podemos obviarlo. ; Bloque 3: UUU movlw 3EH ;RA1=1. Mostrar U en display movwf PORTB ;3EH→Display goto EXPLORA ;Seguimos explorando el Bit RA1 ; Bloque 4: CCC movlw 39H ;RA1=0. Mostrar C en display movwf PORTB ;39H→Display goto EXPLORA ;Seguimos explorando el Bit RA1 end 3. Diseñe un contador de 8 bits, que se incrementa cada vez que se pulsa “P” (RA3). Visualice el resultado por el puerto B. Activar un led (RA0), cuando el contador llegue a D’125’ y apagarlo cuando llegue a D’221’. Repetir el ciclo. SOLUCIÓN: Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado y parte del hardware definido.  Se ha asignado a RA3 como un sensor de entrada (Pulsador)  Se ha asignado a RA0 como un elemento de salida (Led)  Se pide al puerto B que muestre el valor de un contador (Son ocho bits), por lo que es un elemento de salida (8 leds) ¿Cómo quedaría delimitado el hardware? Asignaremos la lógica del Pulsador (Lógica negativa):  Si P es presionado, RA3=0  Si P no es presionado, RA3=1. Si usted desea trabajar con lógica positiva, no hay problema, debe reconfigurar el circuito del pulsador. Prof. Luis Zurita 9 Microcontroladores I
  • 10. VDD C1 22p U1 R1 X1 16 15 OSC1/CLKIN RA0 17 18 1k Pulsador PULSADOR CRYSTAL OSC2/CLKOUT RA1 VSS C2 1 RA2 4 2 MCLR RA3 3 RA4/T0CKI 22p VSS 6 RB0/INT 7 RB1 8 RB2 VSS 9 RB3 10 RB4 11 RB5 12 RB6 13 RB7 PIC16F84A Todas las Resistencias= 330 Ohmios Todas las Resistencias= 330 Ω VSS Listo, tenemos el cascarón vacío del proyecto. Ahora vamos a darle inteligencia. Paso 2. Diagrama de Flujo: Debemos usar un registro que lleve la cuenta (Contador de 8 bits) por lo que debemos declararlo en el paso 3. Veamos el diagrama de flujo: Prof. Luis Zurita 10 Microcontroladores I
  • 11. INICIO Bloque 1 Declarar Registro Contador Bloque 2 Configurar Puerto A y B Bloque 3 Inicializamos Registro Contador Bloque 4 Contador→PORTB Bloque 5 1 RA3=0? NO ¿Se ha pulsado P? SI Bloque 6 Contador=Contador+1 Bloque 7 Contador→PORTB Bloque 9 Bloque 8 NO NO ¿Contador=125? ¿Contador=221? 1 SI SI Led=ON Led=OFF 1 1 Prof. Luis Zurita 11 Microcontroladores I
  • 12. Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador: Recuerde la declaración el registro CONTADOR: List P=16F84A Include P16F84A.inc ; Encabezado ;Bloque 1: (Declaraciones) CONTADOR equ 20H ;Declaramos el Registro org 00H goto INICIO ; Bloque 2: INICIO bsf STATUS,5 ;Ir a banco 1 bsf TRISA,3 ;RA1 se configura como entrada bcf TRISA,0 ;RA0 como salida clrf TRISB ;Todo el Puerto B como salida bcf STATUS,5 ;Regresar al banco 0 ; Bloque 3: clrf CONTADOR ;Inicializamos el contador clrf PORTB ;Limpiamos el Puerto B ; Bloque 4: movf CONTADOR,0 ;CONTADOR→W movwf PORTB ; W→PORTB ; Bloque 5: CUENTA btfsc PORTA,3 ;RA3= 1? ¿Se ha pulsado P? NO goto CUENTA ;No. Seguimos explorando goto SI ;Si. Vamos al bloque 6 ; Bloque 6: SI incf CONTADOR,1 ;Si. Contador= Contador + 1 ; Bloque 7: movf CONTADOR,0 ;CONTADOR→W movwf PORTB ; W→PORTB ; Bloque 8: sublw .125 ;¿Contador=125? W =Contador. Prof. Luis Zurita 12 Microcontroladores I
  • 13. btfss STATUS,2 ;Z=1? goto VALOR2 ;Ir a preguntar si Contador=221 bsf PORTA,0 ;Contador=125, Led=ON goto EXPLORA ;Volvemos a explorar el Pulsador ; Bloque 9: VALOR2 movf CONTADOR ; CONTADOR→W ;Aquí pasamos contador a W porque no sabemos si W tenía su valor sublw .221 ;¿Contador=221? btfss STATUS,2 ;Z=1? goto EXPLORA ; Volvemos a explorar el Pulsador bcf PORTA,0 ;Contador=221, Led=OFF goto EXPLORA ;Volvemos a explorar el Pulsador end 4. Diseñe un control de nivel para un tanque. Al pulsar “INICIO”, se activa la bomba B1. La bomba permanece encendida hasta alcanzar el nivel máximo, mediante el cual se apagará. Se debe abrir la válvula de vaciado. La bomba (B1) se volverá a activar de forma automática cuando se alcance el nivel mínimo procediendo a cerrar la válvula de vaciado, hasta que alcance el nivel máximo, repitiendo el ciclo de forma automática sin necesidad de volver a pulsar “INICIO”. Prof. Luis Zurita 13 Microcontroladores I
  • 14. Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado pero el hardware debemos delimitarlo. Para lograr esta tarea debemos asignar los pines de control de Entrada y de salida, con la finalidad de saber qué vamos a controlar y quién nos dará la información. Debemos identificar cuales elementos son entrada y cuales salida: ENTRADA ¿Qué pin SALIDA ¿Qué pin Asignamos? Asignamos? Sensor Máximo RA0 Bomba B1 RB0 Sensor Mínimo RA1 Válvula Vaciado RB1 Pulsador “INICIO” RA2 ¿Y si quiero asignar otros pines? Perfecto, queda a libre elección. Paso 2. Diagrama de Flujo: Veamos el diagrama de flujo: Prof. Luis Zurita 14 Microcontroladores I
  • 15. INICIO Bloque 1 Configurar Puerto A y B Bloque 2 Bomba=OFF Bloque 3 Válvula Vaciado=OFF Bloque 4 RA2=0? NO ¿Se pulsó Inicio? SI 1 Bloque 5 Bomba=ON Bloque 6 Válvula Vaciado=OFF Bloque 7 NO ¿Nivel Máximo? Bloque 8 SI Bomba=OFF Bloque 9 Válvula Vaciado=ON Bloque 10 NO ¿Nivel Mínimo? SI 1 Prof. Luis Zurita 15 Microcontroladores I
  • 16. Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador: List P=16F84A Include P16F84A.inc ; Encabezado org 00H goto INICIO ; Bloque 1: INICIO bsf STATUS,5 ;Ir a banco 1 bsf TRISA,0 ;RA0 entrada. Sensor máximo. bsf TRISA,1 ;RA1 entrada. Sensor mínimo. bsf TRISA,2 ;RA2 entrada. Pulsador. bcf TRISB,0 ;RB0 salida. Bomba B1 bcf TRISB,1 ;RB1 salida. Válvula Vaciado. bcf STATUS,5 ;Regresar al banco 0 ; Bloque 2: bcf PORTB,0 ;Bomba=OFF ; Bloque 3: bcf PORTB,1 ; Válvula Vaciado=OFF ; Bloque 4: EXPLORA btfsc PORTA,2 ;¿Se ha pulsado INICIO? goto EXPLORA ;No. Seguimos explorando ; Bloque 5: REPITE bsf PORTB,0 ;Se pulsó INICIO. Bomba=ON ; Bloque 6: bcf PORTB,1 ;Válvula=OFF ; Bloque 7: MAXIMO btfsc PORTA,0 ;¿Se ha llegado al máximo? goto MAXIMO ;No. Seguimos explorando ; Bloque 8: SIMAX bcf PORTB,0 ;Nivel Máximo. Bomba=OFF. ; Bloque 9: bsf PORTB,1 ;Válvula=ON MINIMO btfsc PORTA,1 ;¿Se ha llegado al mínimo? goto MINIMO ;No. Seguimos explorando goto REPITE ;Nivel mínimo, repetimos ciclo. end Prof. Luis Zurita 16 Microcontroladores I
  • 17. 5. Se desea diseñar un sistema de protección para una línea de ensamblaje que contiene 4 máquinas soldadoras.  M1 (RA0) M2 (RA1) M3 (RA2) M4 (RA3)  Máquina activa= 1 Máquina inactiva= 0 * Cada máquina tiene dos leds que indican si están funcionando:  (Led Verde=ON) o si están apagadas (Led Rojo=ON). * Si ninguna máquina está activa, debe activarse adicionalmente una señal sonora (RA4). SOLUCIÓN: Paso 1. Enunciado y delimitación del Hardware: si el enunciado y el hardware ya se nos ha proporcionado, saltaremos este paso. Prof. Luis Zurita 17 Microcontroladores I
  • 18. Paso 2. Diagrama de Flujo: INICIO 1 Configurar Puerto A y B ¿Motor 4= NO OK? Declarar Registro LVM4=OFF SI Indicador LVM4=OFF LRM4=ON Todos los Leds=OFF LRM4=ON Indicador=1 Sirena=OFF ¿Indicador= NO Registro Indicador=0 0? CICLO SI Sirena=OFF Sirena=ON ¿Motor 1= NO OK? LVM1=OFF CICLO SI CICLO LVM1=OFF LRM1=ON LRM1=ON Indicador=1 ¿Qué función tiene el registro Indicador? Indicador=0 El ciclo de exploración de las máquinas empieza por la primera. Si esta no funciona, ¿Motor 2= NO Indicador vale 0. Si funciona, Indicador vale 1. OK? Si alguna de las restantes máquinas LVM2=OFF funciona, Indicador pasará a valer 1, lo que SI nos informa que al menos hay una máquina LVM2=OFF LRM2=ON trabajando, por lo que no debería activarse la LRM2=ON alarma. Indicador=1 Ahora. Si la máquina 1 no funciona, y no funciona ninguna de las restantes, Indicador seguirá valiendo 0, por lo que al preguntar por su valor, se debe activar la alarma, tal ¿Motor 3= NO como se exige en el enunciado. OK? Existen otras formas de hacerlo, como por LVM3=OFF ejemplo, preguntar al final si cada máquina es SI cero para activar o no la alarma, pero el LVM3=OFF LRM3=ON diagrama de flujo quedaría más extenso, así LRM3=ON como su programa. Indicador=1 1 Prof. Luis Zurita 18 Microcontroladores I
  • 19. Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador: Existe una forma más resumida de hacer este problema, pero necesitamos el uso de las tablas, tema que veremos en otra unidad. Veamos la forma extendida: List P=16F84A Include P16F84A.inc ;Encabezado INDICADOR equ 20H ;Declaramos el registro Indicador org 00H goto INICIO INICIO bsf STATUS,5 ;Ir a banco 1 movlw B’00001111’ movwf TRISA ;Configuramos el Puerto A clrf TRISB ;Configuramos el Puerto B bcf STATUS,5 ;Regresar al banco 0 clrf PORTB ;Todos los Leds=OFF bcf PORTA,4 ;Sirena=OFF clrf INDICADOR ;Registro Indicador=0 MAQ1 btfsc PORTA,0 ;Máquina 1 inactiva? goto M1OK ;Vamos a Máquina 1 bien. M1MAL bcf PORTB,0 ;LVM1=OFF bsf PORTB,1 ;LRM1=ON clrf INDICADOR ;Indicador a cero goto MAQ2 ;Vamos a explorar Máquina 2 M1OK bsf PORTB,0 ;LVM1=ON bcf PORTB,1 ;LRM1=OFF movlw .1 movwf INDICADOR ;Indicador=1 goto MAQ2 ;Vamos a explorar Máquina 2 MAQ2 btfsc PORTA,1 ;Máquina 2 inactiva? goto M2OK ;Vamos a Máquina 2 bien. M2MAL bcf PORTB,2 ;LVM2=OFF bsf PORTB,3 ;LRM2=ON clrf INDICADOR ;Indicador a cero goto MAQ3 ;Vamos a explorar Máquina 2 Prof. Luis Zurita 19 Microcontroladores I
  • 20. M2OK bsf PORTB,2 ;LVM2=ON bcf PORTB,3 ;LRM2=OFF movlw .1 movwf INDICADOR ;Indicador=1 goto MAQ3 ;Vamos a explorar Máquina 3 MAQ3 btfsc PORTA,2 ;Máquina 3 inactiva? goto M3OK ;Vamos a Máquina 3 bien. M3MAL bcf PORTB,4 ;LVM3=OFF bsf PORTB,5 ;LRM3=ON clrf INDICADOR ;Indicador a cero goto MAQ4 ;Vamos a explorar Máquina 4 M3OK bsf PORTB,4 ;LVM3=ON bcf PORTB,5 ;LRM3=OFF movlw .1 movwf INDICADOR ;Indicador=1 goto MAQ4 ;Vamos a explorar Máquina 4 MAQ4 btfsc PORTA,3 ;Máquina 4 inactiva? goto M4OK ;Vamos a Máquina 4 bien. M4MAL bcf PORTB,6 ;LVM4=OFF bsf PORTB,7 ;LRM4=ON clrf INDICADOR ;Indicador a cero goto ALARMA ;Vamos a explorar la Alarma M4OK bsf PORTB,6 ;LVM4=ON bcf PORTB,7 ;LRM4=OFF movlw .1 movwf INDICADOR ;Indicador=1 goto ALARMA ;Vamos a explorar la Alarma ALARMA movf INDICADOR,0 ;INDICADOR→W sublw 00H btfss STATUS,2 ;Z=1? INDICADOR=0? goto ALAOFF ; Hay al menos una máquina=ON. goto ALAON ; Todas las máquinas= OFF ALAON bsf PORTA,4 ; ALARMA=ON goto MAQ1 ;Repetimos el ciclo de exploración. ALAOFF bcf PORTA,4 ; ALARMA=OFF goto MAQ1 ;Repetimos el ciclo de exploración. end ;Fin del Programa Prof. Luis Zurita 20 Microcontroladores I
  • 21. 6. Diseñe un control de nivel para un tanque. Se tiene un interruptor selector de “MODO” Si “MODO” es manual, las bombas se activan sin importar el nivel del tanque subterráneo. Si “MODO” es automático, la activación de las bombas dependerá de: Si el nivel del agua está por debajo del nivel mínimo, se activará la bomba 1 hasta que se alcance el nivel Máximo, y procederá a apagarse. Si el nivel del agua está por encima del nivel mínimo, pero por debajo del nivel máximo, se activará la bomba 2 hasta que se alcance el nivel Máximo y procederá a apagarse. Se debe monitorear si ha cambiado el “MODO”. SOLUCIÓN: Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado, sin embargo debemos delimitar el hardware. Para lograr esta tarea debemos asignar los pines de control de Entrada y de salida, con la finalidad de saber qué vamos a controlar y quién nos dará la información. Debemos identificar cuales elementos son entrada y cuales salida: ENTRADA ¿Qué pin SALIDA ¿Qué pin Asignamos? Asignamos? Interruptor “INICIO” RA0 Bomba B1 RB0 Sensor Máximo RA1 Bomba B2 RB1 Sensor Mínimo RA2 ¿Y si quiero asignar otros pines? Perfecto, queda a libre elección. Prof. Luis Zurita 21 Microcontroladores I
  • 22. Paso 2. Diagrama de Flujo: INICIO Configurar Puerto A y B Inicializar Puerto B M SI Bomba 1= ON ¿Manual? Bomba 2= ON NO SI SI Bomba 1= ON ¿SMáximo? ¿SMínimo? Bomba 2= OFF NO NO 1 Bomba 1= OFF 2 Bomba 2= ON SI ¿Smáximo? NO 1 2 Bomba 1= OFF Bomba 2= OFF M Prof. Luis Zurita 22 Microcontroladores I
  • 23. Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador: list P=16F84A include P16F84A.INC org 00H goto INICIO INICIO bsf STATUS,5 clrf TRISB movlw 1FH movwf TRISA bcf STATUS,5 clrf PORTB MODO btfsc PORTA,0 ;MODO AUTO? goto AUTO MANUAL bsf PORTB,0 ;No. Modo manual. Bomba 1= ON bsf PORTB,1 ;Bomba 2=ON goto MODO AUTO btfsc PORTA,1 ;MÁXIMO? goto DOS btfsc PORTA,2 ;MÍNIMO goto MODO1 MODO2 bsf PORTB,0 ;Bomba 1=ON bcf PORTB,1 ;Bomba 2=OFF UNO btfss PORTA,1 ;MÁXIMO ALCANZADO goto UNO DOS bcf PORTB,0 ;Bomba 1=OFF bcf PORTB,1 ;Bomba 2=OFF goto MODO MODO1 bcf PORTB,0 ;Bomba 1=OFF bsf PORTB,1 ;Bomba 2=ON goto UNO end Prof. Luis Zurita 23 Microcontroladores I