GUÍA DE EJERCICIOS RESUELTOS

                    TEMA 3:

      HERRAMIENTAS DE PROGRAMACIÓN




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

       El procedimiento estándar para la resolución de un proyecto en general
recomendado por...
Generalmente se parte del enunciado que se ha delimitado en el paso
anterior.

Como recomendación general, antes de pasar ...
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 ...
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

Si tenemos el Diagrama de Flujo bien diseñado, lo demás es “Carpin...
2. Dado el siguiente circuito:




Realice un programa que permita mostrar en el display la letra “C”, si la entrada
está ...
Paso 2. Diagrama de Flujo:




Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

       El lenguaje ensamblador es s...
goto        UUU                ;Este paso podemos obviarlo.
                                             ; Bloque 3:
UUU  ...
VDD




            C1
            22p
                                    U1                                             ...
INICIO

                                                               Bloque 1
                         Declarar
        ...
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

       Recuerde la declaración el registro CONTADOR:


           ...
btfss     STATUS,2          ;Z=1?
              goto      VALOR2            ;Ir a preguntar si Contador=221
              ...
Paso 1. Enunciado y delimitación del Hardware: Tenemos el enunciado pero
el hardware debemos delimitarlo.

       Para log...
INICIO

                                                          Bloque 1
                                  Configurar
  ...
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

              List      P=16F84A
              Include   P16F84A.i...
5. Se    desea      diseñar   un   sistema    de   protección   para   una   línea   de
   ensamblaje que contiene 4 máqui...
Paso 2. Diagrama de Flujo:


         INICIO                                1



       Configurar
      Puerto A y B     ...
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

       Existe una forma más resumida de hacer este problema, pero
...
M2OK          bsf     PORTB,2       ;LVM2=ON
              bcf     PORTB,3       ;LRM2=OFF
              movlw   .1
      ...
6. Diseñe un control de nivel para un tanque.
       Se tiene un interruptor selector de “MODO”
       Si “MODO” es manual...
Paso 2. Diagrama de Flujo:




            INICIO




          Configurar
         Puerto A y B




           Inicializa...
Paso 3. Del Diagrama de Flujo al Lenguaje Ensamblador:

              list      P=16F84A
              include   P16F84A.I...
Upcoming SlideShare
Loading in...5
×

Guía de ejercicios resueltos tema 2

27,955

Published on

Published in: Education
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
27,955
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1,122
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Guía de ejercicios resueltos tema 2"

  1. 1. GUÍA DE EJERCICIOS RESUELTOS TEMA 3: HERRAMIENTAS DE PROGRAMACIÓN Prof. Luis Zurita 1 Microcontroladores I
  2. 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. 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. 4. Prof. Luis Zurita 4 Microcontroladores I
  5. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×