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

Las fuentes de alimentación conmutadas (switching)
Las fuentes de alimentación conmutadas (switching)Las fuentes de alimentación conmutadas (switching)
Las fuentes de alimentación conmutadas (switching)Jomicast
 
Seaparat elect pote
Seaparat elect poteSeaparat elect pote
Seaparat elect poteLuis Sanchez
 
Módulos ccp pic 16f887
Módulos ccp pic 16f887Módulos ccp pic 16f887
Módulos ccp pic 16f887whendygarcia
 
Sistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picSistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picRoberto Di Giacomo
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarthejp
 
Control digital: Teoría y practica parte 1
Control digital: Teoría y practica parte 1Control digital: Teoría y practica parte 1
Control digital: Teoría y practica parte 1SANTIAGO PABLO ALBERTO
 
Circuitos recortadores
Circuitos recortadoresCircuitos recortadores
Circuitos recortadoresBernaldo Arnao
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flopsJimmy Osores
 
Guía del mapa de karnaugh
Guía del mapa de karnaughGuía del mapa de karnaugh
Guía del mapa de karnaughLuis Zurita
 

La actualidad más candente (20)

Teclado matricial
Teclado matricialTeclado matricial
Teclado matricial
 
Las fuentes de alimentación conmutadas (switching)
Las fuentes de alimentación conmutadas (switching)Las fuentes de alimentación conmutadas (switching)
Las fuentes de alimentación conmutadas (switching)
 
Conexión darlington transistor
Conexión darlington transistorConexión darlington transistor
Conexión darlington transistor
 
Registros de desplazamiento
Registros de desplazamientoRegistros de desplazamiento
Registros de desplazamiento
 
Seaparat elect pote
Seaparat elect poteSeaparat elect pote
Seaparat elect pote
 
2.7. Recortadores con Diodos
2.7. Recortadores con Diodos2.7. Recortadores con Diodos
2.7. Recortadores con Diodos
 
Practica Filtro pasa bajos
Practica Filtro pasa bajosPractica Filtro pasa bajos
Practica Filtro pasa bajos
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Módulos ccp pic 16f887
Módulos ccp pic 16f887Módulos ccp pic 16f887
Módulos ccp pic 16f887
 
Filtros Activos I
Filtros Activos IFiltros Activos I
Filtros Activos I
 
Sistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador picSistema de control para llenado de tanques con microcontrolador pic
Sistema de control para llenado de tanques con microcontrolador pic
 
Transistor BJT
Transistor BJTTransistor BJT
Transistor BJT
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolar
 
Filtros
FiltrosFiltros
Filtros
 
Control digital: Teoría y practica parte 1
Control digital: Teoría y practica parte 1Control digital: Teoría y practica parte 1
Control digital: Teoría y practica parte 1
 
Convertidores ac,dc
Convertidores ac,dcConvertidores ac,dc
Convertidores ac,dc
 
Circuitos recortadores
Circuitos recortadoresCircuitos recortadores
Circuitos recortadores
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flops
 
tipos de tiristores
tipos de tiristores tipos de tiristores
tipos de tiristores
 
Guía del mapa de karnaugh
Guía del mapa de karnaughGuía del mapa de karnaugh
Guía del mapa de karnaugh
 

Similar a Guía de ejercicios resueltos sobre herramientas de programación

Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Curso Micro Tema 2
Curso Micro Tema 2Curso Micro Tema 2
Curso Micro Tema 2Luis Zurita
 
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
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitEnrique Trascastro
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersmarco calderon layme
 
Picprimerospasos
PicprimerospasosPicprimerospasos
PicprimerospasosMicroPart
 
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 bancoAnibal Ulibarri
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Luis Zurita
 
Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Guia 1 microcontroladores grado 11
Guia 1 microcontroladores grado 11Mauricio Diaz Garcia
 
Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3Luis Zurita
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2Luis Zurita
 
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
 
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
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
 

Similar a Guía de ejercicios resueltos sobre herramientas de programación (20)

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 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
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
 
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
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
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 APALuis Zurita
 
PROTOCOLO MODBUS
PROTOCOLO MODBUSPROTOCOLO MODBUS
PROTOCOLO MODBUSLuis Zurita
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y tecladoLuis Zurita
 
Grupos micro2 13
Grupos micro2 13Grupos micro2 13
Grupos micro2 13Luis Zurita
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 
Notas def electronica
Notas def electronicaNotas def electronica
Notas def electronicaLuis Zurita
 
Notas proyecto3 iyc
Notas proyecto3 iycNotas proyecto3 iyc
Notas proyecto3 iycLuis Zurita
 
Notas definitivas iyc2013
Notas definitivas iyc2013Notas definitivas iyc2013
Notas definitivas iyc2013Luis Zurita
 
Proyecto 2 electronica
Proyecto 2 electronicaProyecto 2 electronica
Proyecto 2 electronicaLuis 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

GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 

Último (20)

GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 

Guía de ejercicios resueltos sobre herramientas de programación

  • 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