MANEJO DE PUERTOS DIGITALES (PRACTICA 2)
Ahora pasaremos a dar la entrega de dos de los ejercicios restantes, pertenecientes al curso de "Programacion de PIC en Assembler".
C) Se tiene tres valvulas (A,B y C) que alimenta un tanque, el tanque a su vez tiene una salida. Existen 3 sensores de nivel (X,Y y Z). Cuando el tanque esta vacio los 3 sensores estan a 0-logico y es necesario activar el trabajo de las tres bombas. Cuando se llena 1/3 del tanque el sensor X pasa a 1-logico y la bomba A deja de funcionar.Cuando se llenan 2/3 del tanque el sensor Y esta activado y la bomba B deja de funcionar. Cuando esta lleno el tanque el sensor Z se activa y la bomba C deja de funcionar. Una vez que el tanque esta lleno este empieza a expulsa el liquido acumulado. Cuando los 3 sensores pasan a 0-logico la secuencia antes descrita se repite antes NO.
A continuacion presentamos el esquema en proteus:
Para una mejor resolucion del problema imaginemos los siguientes graficos:
Algoritrmo:
1. Configurar el PORTB como entrada y PORTC como salida
2. Si PORTB !=0 entonces ir paso 2
3. Abrir las 3 valvulas (PORTC = 0x07)
4. Si PORTB !=0x01entonces ir paso 4
5. Abrir 2 valvulas (PORTC = 0x06)
6. PORTB != 0x03 entonces Ir paso 6
7. Abrir 1 valvula (PORTC = 0x04)
8. si PORTB != 0x07 entonces ir paso 8
9. Cerrar todas las valvulas (PORTC = 0x00)
10. Ir paso 2
Ahora tenemos el codigo:
D) Diseñar un programa que lea los 4 bits inferiores del puerto A y muestre el dato en un display de 7 segmentos que se encuentra en el puerto C
El esquema en PROTEUS es el siguiente:
Ahora nos ayudaremos del siguiente gráfico:
Algoritmo:
1. Ir banco 0
2. Configurar RA0-3 como entrada digital
3. Configurar RC0-7 como salida digital
4. Ir banco 1
5. W=0x0F
6. W = PORTA AND W
7. W = TABLA[W]
8. PORTC = W
9. Ir paso 5
Diagrama de flujo:
Definiciones previas:
CALL Llamada a una rutina
Sintaxis [etiqueta] CALL k
Operandos 0<= k <= 2047
Operacion: (PC)+1 -> TOS (Sumamos 1 al valor acutal del PC y lo guardamos en la cima de la pila)
k -> PC <10:0>
PCLATH<4:3> -> PC <12:11>
Bits afectados en el STATUS: No aplica
Descripcion: CALL se usa para llamar a una rutina. Primer suma 1 al valor actual del PC y lo guarda en la cima de la pila (primera posicion libre en la pila). Los 11 bits definitivos por k (o el valor de esa etiqueta) es almacenada en el PC en los bits 0-10. Los bits superiores son cargados desde el PCLATH. La instruccion CALL ocupa dos ciclos de instruccion.
Ejemplo: AQUI: CALL ALLA
Diseño del programa:
Al inicio configuramos las lineas del puerto A como entradas en tanto que las lineas del puerto C seran configuradas como salida. Luego entramos a un bucle infinito que empieza explorando el valor del puerto A (PORTA), tomaremos los 4 bits menos significativos que representa el indice de la tabla, entraremos a la tabla a buscar el contenido señalado por el indice, ese valor sera depositado el puerto C (PORTC).
Ahora tenemos el programa en MPLAB.:
©Copyrigth Bach. Ing. Mishell Sanchez Guevara cell: 985 653 382
No hay comentarios:
Publicar un comentario