SlideShare a Scribd company logo
1 of 29
Download to read offline
DIAGRAMAS DE FLUJO PARA RUTINAS DE RETARDO DE 1 HASTA 60 MINUTOS




                DIAGRAMA DE FLUJO PARA CERROJO AUTOMÁTICO

  CERROJO                  CERROJO
 TRADICIONAL              AUTOMÁTICO

                              TAREA1
     TAREA1
                          Inicializar registro:
                           CONTACERR=0
NO    ¿Ocurrió
     condición?
                                                                                 Delay 15
           SI                                                                   msegundos

                             ¿Ocurrió             NO    ¿CONTACERR=       NO    CONTACERR=
     TAREA2                 condición?                      200?               CONTACERR +1

                                      SI                          SI

                                                            IR A PARADA
                              TAREA2


                                                   Delay 15
                                                  msegundos


                                           La sacamos del PDEL


                                                   Return
¿Cuánto tiempo pasa para salir del cerrojo?
CONTACERR se incrementará hasta 200, y por cada incremento se debe esperar 15
milisegundos, es decir=

                 Tiempo de espera en cerrojo= 15mseg*200= 3 segundos.

Este tiempo puede ajustarse según sea el diseño que se esté realizando.



                    USO DE LAS TABLAS EN LENGUAJE ENSAMBLADOR

        Las tablas nos permiten extraer valores para ser utilizados en otras tareas, tales
como la visualización de datos, linealización de valores, conversión de códigos, etc.
        Su aplicación era principalmente para el uso de los sistemas contadores en conjunto
con la multiplexación de displays, sin el uso de un decodificador BCD a 7 segmentos; sin
embargo, pueden servir para semáforos, sistemas de monitoreo, aplicaciones
residenciales, entre otras.
        Su funcionamiento se basa en la manipulación del contador de programa (PC)
mediante la suma de un dato a extraer de la tabla (registro) y la parte baja del contador de
programa (PCL). Para un rango máximo de 256 valores, se manipula directamente el PCL.
En caso de valores superiores, se debe manipular adicionalmente el PCLATH, que amplía la
capacidad de datos en una tabla.
        La instrucción RETLW K (Retorna de la subrutina y carga en W el valor constante k),
está muy asociada a las tablas, ya que cuando se llama a una subrutina “tabla”, esta
instrucción regresa de la subrutina y a su vez extrae el valor de la misma previamente
seleccionada por el puntero de tabla.
        Normalmente, cuando se llama a una subrutina “tabla”, previamente se carga el
valor del dato a sacar de la tabla. Dentro de la subrutina “tabla”, el dato a sacar, se suma al
PCL que es el encabezado o puntero de la tabla, “saltando” al valor correspondiente
indicado por el dato que se desea extraer de la tabla.
        En la siguiente imagen, supongamos que se desea sacar el valor del registro UNIDAD
(supongamos que UNIDAD= 5 al momento de ejecutar el llamado a la tabla), por lo que se
le sumará UNIDAD + PCL (5+PCL ubicado en el puntero o encabezado de la tabla), y éste
saltará desde el encabezado al valor de la UNIDAD (que vale 5 para este ejemplo) y W
retornará con ese valor cargado (W=’Valor5’).
Cuando se trabaja con displays y la respectiva multiplexación es un estándar utilizar
los siguientes códigos o extractos de un programa:
movf           DATO,0         ;DATO pasa a W. es el dato que se
call           TABLA          ;quiere extraer de la tabla
                              ; Después que se regresa de la tabla con el valor del registro
                              ; “DATO”, se saca este valor y se pasa a la salida del puerto
                              ; que está controlando los 7 sgmentos de los displays.
movwf          PORTB ;o puede ser PORTC o D, según el PIC

       Es importante resaltar que el uso de las tablas elimina tener que utilizar un
decodificador y permite mostrar números, letras y algunos símbolos al manipular
directamente los 7 segmentos de un display.

       Veamos los siguientes ejemplos del uso de las tablas en programas con estructura
de contadores y multiplexación de displays.
Ejemplo 1. Contador de 2 cifras estándar (00 a 99).
El diagrama de flujo es el mismo de contador ascendente de 2 cifras en la guía 3_2 de
microcontroladores I, de Rutinas intermedias.
                          Programa en Lenguaje Ensamblador:
             LIST                   P=16F877A
             INCLUDE                P16F877A.INC
;**************************
;DECLARACIÓN DE REGISTROS=
;**************************
UNI          EQU                    20H
DEC          EQU                    21H
COPIA        EQU                    26H
PDel0        EQU                    27H
CONTADOR EQU                        28H
;**************************
             ORG            00H
             GOTO           INICIO
INICIO       BSF            STATUS,5
             MOVLW          B'00000110'
             MOVWF          ADCON1
             CLRF           TRISA
             MOVLW          B'00001111'
             MOVWF          TRISB
             CLRF           TRISC
             BCF            STATUS,5
             CLRF           UNI
             CLRF           DEC
;****************************
;CONTADOR CLÁSICO DE 00 A 99
;****************************
EME          CALL           MOSTRAR
             BTFSC          PORTB,0               ;+1=0?
             GOTO           EME                   ;NO. VA A EXPLORAR DE NUEVO
ANTIREB1     CALL           MOSTRAR               ;EQUIVALE A DELAY DE CALL DELAY5MS
             BTFSS          PORTB,0               ;+1=1?
             GOTO           ANTIREB1
             MOVF           UNI,0                 ;UNI A W
             SUBLW          .9
BTFSS        STATUS,2          ;Z=1? UNI=9?
             GOTO         SUBEUNI
             GOTO         DECENA
SUBEUNI      INCF         UNI,1             ;UNI=UNI+1
             GOTO         EME
DECENA       CLRF         UNI
             MOVF         DEC,0             ;DEC A W
             SUBLW        .9
             BTFSS        STATUS,2          ;Z=1? DEC=9?
             GOTO         SUBEDEC
             CLRF         DEC
             CLRF         UNI
             GOTO         EME
SUBEDEC      INCF         DEC,1             ;DEC=DEC+1
             GOTO         EME
;**************************************************
;RUTINA MOSTRAR(INCLUYE CONVERSIONES BINARIO A BCD)
;**************************************************
MOSTRAR      BCF          PORTB,5           ;DISPLAY DEC OFF
             BSF          PORTB,4           ;DISPLAY UNI ON
;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR=
;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A)
             MOVF         UNI,0      ;UNI A W
             CALL         TABLA      ;W VA A TABLA Y REGRESA CON VALOR DE UNI
             MOVWF        PORTC      ;UNI ES SACADO HACIA LA TABLA
;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A)
             ;MOVF        UNI,0
             ;MOVWF       PORTA      ;UNIV A PORTA
             CALL         DELAY5MS
             BSF          PORTB,5    ;DISPLAY DEC ON
             BCF          PORTB,4    ;DISPLAY UNI OFF
;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR=
;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A)
             MOVF         DEC,0      ;DEC A W
             CALL         TABLA      ;W VA A TABLA Y REGRESA CON VALOR DE DEC
             MOVWF        PORTC      ;DEC ES SACADO HACIA LA TABLA
;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A)
             ;MOVF          DEC,0
             ;MOVWF         PORTA         ;DECV A PORTA
             CALL DELAY5MS
             RETURN
;****************************************************************
;**********************SUBRUTINA DE TABLA************************
;****************************************************************
;CONVIERTE DATO BCD A 7SEGMENTOS, COMO SI FUERA UN DECODIFICADOR
;ESTA TABLA ES PARA ÁNODO COMÚN, SI ES PARA CÁTODO COMÚN SE DEBE
;INVERTIR LOS 0' POR 1' Y LOS 1' POR 0'
;****************************************************************
;IMPORTANTE: ¿PARA QUÉ SON ESTOS VALORES QUE SE MUESTRAN EN LA TABLA?
                                       VALORES
;TOMEMOS EL PRIMERO= B’11000000’, RECORDANDO QUE ESTE DATO VA A SALIR
;POR UN PUERTO DE 8 BITS, SEA EL PORTB, PORTC O PORTD HACIA LOS 7 SEGMENTOS
;DE UN DISPLAY ÁNODO COMÚN:




;VEMOS QUE SE HA FORMADO EL CERO (0) Y ASÍ PARA CADA NÚMERO O LETRA COMO
                                           PARA
;SE VERÁ EN EL EJEMPLO 3.
TABLA         ADDWF       PCL,1
              RETLW       B'11000000'       ;VALOR 0
              RETLW       B'11111001'       ;VALOR 1
              RETLW       B'10100100'       ;VALOR 2
              RETLW       B'10110000'       ;VALOR 3
RETLW    B'10011001'          ;VALOR 4
               RETLW    B'10010010'          ;VALOR 5
               RETLW    B'10000011'          ;VALOR 6
               RETLW    B'11111000'          ;VALOR 7
               RETLW    B'10000000'          ;VALOR 8
               RETLW    B'10011000'          ;VALOR 9
;;;RUTINA 5MS GENERADA DEL PDEL;
DELAY5MS movlw          .248          ; 1 set numero de repeticion
               movwf    PDel0         ;1|
PLoop0         clrwdt                 ; 1 clear watchdog
               decfsz   PDel0, 1      ; 1 + (1) es el tiempo 0 ?
               goto     PLoop0        ; 2 no, loop
PDelL1         goto     PDelL2        ; 2 ciclos delay
PDelL2         clrwdt                 ; 1 ciclo delay
               return                 ; 2+2 Fin.
               END
Circuito en Proteus:
Ejemplo 2. Marcador para cancha de Bolas criollas.
Es el mismo ejercicio pero sin el uso del decodificador. Se migró a un PIC16F877 por no
alcanzar los pines del PIC16F84A. Asumir el mismo diagrama de flujo. Lo que varia es la
rutina de mostrar, ya que no se utiliza el decodificador.

                       Programa en Lenguaje Ensamblador:
            LIST         P=16F877A
            INCLUDE      P16F877A.INC
;**************************
;DECLARACIÓN DE REGISTROS=
;**************************
UNIV        EQU          20H
DECV        EQU          21H
UNIR        EQU          22H
DECR        EQU          23H
CONTAV      EQU          24H
CONTAR      EQU          25H
COPIA       EQU          26H
PDel0       EQU          27H
CONTADOR EQU             28H
;**************************
            ORG          00H
            GOTO         INICIO
INICIO      BSF          STATUS,5
            MOVLW        B'00000110'
            MOVWF        ADCON1
            CLRF         TRISA
            MOVLW        B'00001111'
            MOVWF        TRISB
            CLRF         TRISC
            BCF          STATUS,5
            CLRF         UNIV
            CLRF         DECV
            CLRF         UNIR
            CLRF         DECR
            CLRF         CONTAV
            CLRF         CONTAR
EME         CALL         MOSTRAR
BTFSC   PORTB,0    ;+1V=0?
           GOTO    SIGUE1     ;NO. VA A -1V
ANTIREB1   CALL    MOSTRAR    ;EQUIVALE A DELAY DE CALL DELAY5MS
           BTFSS   PORTB,0    ;+1V=1?
           GOTO    ANTIREB1
           MOVF    CONTAV,0
           SUBLW   .24
           BTFSS   STATUS,2   ;Z=1? CONTAV=24?
           GOTO    SUBEV
           GOTO    EME
SUBEV      INCF    CONTAV,1   ;CONTAV=CONTAV+1
           GOTO    EME
SIGUE1     BTFSC   PORTB,1    ;-1V=0?
           GOTO    SIGUE2     ;VA A +1R
ANTIREB2   CALL    MOSTRAR    ;EQUIVALE A DELAY DE CALL DELAY5MS
           BTFSS   PORTB,1    ;-1V=1?
           GOTO    ANTIREB2
           MOVF    CONTAV,0
           SUBLW   .0
           BTFSS   STATUS,2   ;Z=1? CONTAV=0?
           GOTO    BAJAV
           GOTO    EME
BAJAV      DECF    CONTAV,1   ;CONTAV=CONTAV-1
           GOTO    EME
SIGUE2     BTFSC   PORTB,2    ;+1R=0?
           GOTO    SIGUE3     ;NO. VA A -1R
ANTIREB3   CALL    MOSTRAR    ;EQUIVALE A DELAY DE CALL DELAY5MS
           BTFSS   PORTB,2    ;+1R=1?
           GOTO    ANTIREB3
           MOVF    CONTAR,0
           SUBLW   .24
           BTFSS   STATUS,2   ;Z=1? CONTAR=24?
           GOTO    SUBER
           GOTO    EME
SUBER      INCF    CONTAR,1   ;CONTAR=CONTAR+1
           GOTO    EME
SIGUE3     BTFSC   PORTB,3    ;-1R=0?
           GOTO    EME
ANTIREB4     CALL         MOSTRAR    ;EQUIVALE A DELAY DE CALL DELAY5MS
             BTFSS        PORTB,3    ;-1R=1?
             GOTO         ANTIREB4
             MOVF         CONTAR,0
             SUBLW        .0
             BTFSS        STATUS,2   ;Z=1? CONTAR=0?
             GOTO         BAJAR
             GOTO         EME
BAJAR        DECF         CONTAR,1   ;CONTAR=CONTAR-1
             GOTO         EME
;**************************************************
;RUTINA MOSTRAR(INCLUYE CONVERSIONES BINARIO A BCD)
;**************************************************
MOSTRAR      CALL         BIN_BCDV
             CALL         BIN_BCDR
             BCF          PORTB,7    ;DISPLAY DECROJO OFF
             BCF          PORTB,6    ;DISPLAY UNIROJO OFF
             BCF          PORTB,5    ;DISPLAY DECVERDE OFF
             BSF          PORTB,4    ;DISPLAY UNIVERDE ON
;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR=
;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A)
             MOVF         UNIV,0     ;UNIV A W
             CALL         TABLA      ;W VA A TABLA Y REGRESA CON VALOR UNIV
             MOVWF        PORTC      ;UNIV SE MUESTRA POR EL PORTC
;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A)
             ;MOVF        UNIV,0
             ;MOVWF       PORTA      ;UNIV A PORTA
             CALL         DELAY5MS
             BCF          PORTB,7    ;DISPLAY DECROJO OFF
             BCF          PORTB,6    ;DISPLAY UNIROJO OFF
             BSF          PORTB,5    ;DISPLAY DECVERDE ON
             BCF          PORTB,4    ;DISPLAY UNIVERDE OFF
;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR=
;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A)
             MOVF         DECV,0     ;DECV A W
             CALL         TABLA      ;W VA A TABLA Y REGRESA CON VALOR DECV
             MOVWF        PORTC      ;DECV SE MUESTRA POR EL PORTC
;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A)
             ;MOVF        DECV,0
             ;MOVWF       PORTA      ;DECV A PORTA
             CALL         DELAY5MS
             BCF          PORTB,7    ;DISPLAY DECROJO OFF
             BSF          PORTB,6    ;DISPLAY UNIROJO ON
             BCF          PORTB,5    ;DISPLAY DECVERDE OFF
             BCF          PORTB,4    ;DISPLAY UNIVERDE OFF
;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR=
;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A)
             MOVF         UNIR,0     ;UNIR A W
             CALL         TABLA      ;W VA A TABLA Y REGRESA CON VALOR UNIR
             MOVWF        PORTC      ;UNIR SE MUESTRA POR EL PORTC
;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A)
             ;MOVF        UNIR,0
             ;MOVWF       PORTA      ;UNIR A PORTA
             CALL         DELAY5MS
             BSF          PORTB,7    ;DISPLAY DECROJO ON
             BCF          PORTB,6    ;DISPLAY UNIROJO OFF
             BCF          PORTB,5    ;DISPLAY DECVERDE OFF
             BCF          PORTB,4    ;DISPLAY UNIVERDE OFF
;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR=
;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A)
             MOVF         DECR,0     ;DECR A W
             CALL         TABLA      ; W VA A TABLA Y REGRESA CON VALOR DECR
             MOVWF        PORTC      ;DECR SE MUESTRA POR EL PORTC
;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A)
             ;MOVF        DECR,0
             ;MOVWF       PORTA      ;DECR A PORTA
             CALL         DELAY5MS
             RETURN
;******************************
;RUTINA DE BINARIO A BCD VERDE:
;******************************
BIN_BCDV     CLRF         UNIV
             CLRF         DECV
             CLRF         COPIA
             MOVF         CONTAV,0
             MOVWF        COPIA
SUBEDV       MOVLW        .10
             SUBWF        COPIA,1
             BTFSC        STATUS,0
             GOTO         SUBEDECV
             GOTO         SUBEUV
SUBEDECV     INCF         DECV,1
             GOTO         SUBEDV
SUBEUV       MOVLW        .10
             ADDWF        COPIA,1
SUBEU2V      MOVLW        .1
             SUBWF        COPIA,1
             BTFSS        STATUS,0
             RETURN
SUBEU3V      INCF         UNIV,1
             GOTO         SUBEU2V
;******************************
;RUTINA DE BINARIO A BCD ROJO:
;******************************
BIN_BCDR     CLRF         UNIR
             CLRF         DECR
             CLRF         COPIA
             MOVF         CONTAR,0
             MOVWF        COPIA
SUBEDR       MOVLW        .10
             SUBWF        COPIA,1
             BTFSC        STATUS,0
             GOTO         SUBEDECR
             GOTO         SUBEUR
SUBEDECR     INCF         DECR,1
             GOTO         SUBEDR
SUBEUR     MOVLW       .10
           ADDWF       COPIA,1
SUBEU2R    MOVLW       .1
           SUBWF       COPIA,1
           BTFSS       STATUS,0
           RETURN
SUBEU3R    INCF        UNIR,1
           GOTO        SUBEU2R

;****************************************************************
;**********************SUBRUTINA DE TABLA************************
;****************************************************************
;CONVIERTE DATO BCD A 7SEGMENTOS, COMO SI FUERA UN DECODIFICADOR
;ESTA TABLA ES PARA ÁNODO COMÚN, SI ES PARA CÁTODO COMÚN SE DEBE
;INVERTIR LOS 0' POR 1' Y LOS 1' POR 0'
;****************************************************************
TABLA        ADDWF           PCL,1
             RETLW           B'11000000' ;VALOR 0
             RETLW           B'11111001' ;VALOR 1
             RETLW           B'10100100' ;VALOR 2
             RETLW           B'10110000' ;VALOR 3
             RETLW           B'10011001' ;VALOR 4
             RETLW           B'10010010' ;VALOR 5
             RETLW           B'10000011' ;VALOR 6
             RETLW           B'11111000' ;VALOR 7
             RETLW           B'10000000' ;VALOR 8
             RETLW           B'10011000' ;VALOR 9
;;;RUTINA 5MS GENERADA DEL PDEL;
DELAY5MS movlw               .248 ; 1 set numero de repeticion
             movwf           PDel0 ; 1 |
PLoop0       clrwdt         ; 1 clear watchdog
             decfsz          PDel0, 1 ; 1 + (1) es el tiempo 0 ?
             goto            PLoop0 ; 2 no, loop
PDelL1       goto            PDelL2       ; 2 ciclos delay
PDelL2       clrwdt         ; 1 ciclo delay
             return         ; 2+2 Fin.
             END
Circuito en Proteus:




Ejemplo 3. Contador de 3 etapas.
        Para este ejemplo se asume que cada etapa va a contar 6 eventos. Este número
puede ser modificado a gusto del usuario. Aquí se introduce el uso de las letras que es
una de las ventajas de no utilizar decodificadores, ya que estos limitan la visualización del
0 al 9.
        En cada etapa, se muestra un mensaje de 2 letras y al lado el contador de los
eventos.
        Se muestra una tabla en la que contiene lo que considero pueden ser la tabla más
completa de números, letras y algunos símbolos que pueden mostrarse en un display
convencional de 7 segmentos.
        El diagrama de flujo es simple. A continuación:
RB0= +1
RB4= DISPLAY UNI
RB5= DISPLAY DEC
RB6= DISPLAY LETRA1
RB7= DISPLAY LETRA2
PORTC= SALIDA A LOS SEGMENTOS
Programa en Lenguaje Ensamblador:
                  LIST        P=16F877A
                  INCLUDE     P16F877A.INC
;**************************
;DECLARACIÓN DE REGISTROS=
;**************************
UNI               EQU         20H
DEC               EQU         21H
LETRA1            EQU         22H
LETRA2            EQU         23H
CONTA             EQU         24H
COPIA             EQU         26H
PDel0             EQU         27H
PDel0A            EQU         29H
PDel1             EQU         2AH
CONTADOR          EQU         28H
;**************************
ORG        00H
                    GOTO       INICIO
INICIO              BSF        STATUS,5
                    MOVLW      B'00000110'
                    MOVWF      ADCON1
                    CLRF       TRISA
                    MOVLW      B'00001111'
                    MOVWF      TRISB
                    CLRF       TRISC
                    BCF        STATUS,5
                    CLRF       UNI
                    CLRF       DEC
                    CLRF       CONTADOR
;***************************************
;MENSAJE DE INICIO CON TODAS LAS LETRAS
;***************************************
;ESTE MENSAJE MUESTRA TODOS LOS NÚMEROS Y LETRAS DE LA TABLA
ENTRADAMSJ          CALL       MOSTRAR2
                    MOVF       CONTADOR,0
                    SUBLW      .37
                    BTFSS      STATUS,2
                    GOTO       SUBELETRA
                    CLRF       CONTADOR
                    GOTO       ETAPA1
SUBELETRA           INCF       CONTADOR,1
                    CALL       RET05S
                    GOTO       ENTRADAMSJ
;***************************************
;***************************************
;***************************************
ETAPA1              MOVLW      .26
                    MOVWF      LETRA2
                    MOVLW      .14
                    MOVWF      LETRA1
EME                 CALL       MOSTRAR
                    BTFSC      PORTB,0     ;+1=0?
                    GOTO       EME ;NO. SIGUE PREGUNTANDO POR SENSOR
ANTIREB1            CALL       MOSTRAR     ;EQUIVALE A DELAY DE CALL DELAY5MS
BTFSS   PORTB,0     ;+1=1?
           GOTO    ANTIREB1
           MOVF    CONTA,0
           SUBLW   .6
           BTFSS   STATUS,2    ;Z=1? CONTA=24?
           GOTO    SUBE
           GOTO    ETAPA2
SUBE       INCF    CONTA,1     ;CONTA=CONTA+1
           GOTO    EME
ETAPA2     CLRF    CONTA
           MOVLW   .35
           MOVWF   LETRA1
           MOVLW   .1
           MOVWF   LETRA2
EME2       CALL    MOSTRAR
           BTFSC   PORTB,0     ;+1=0?
           GOTO    EME2 ;NO. SIGUE PREGUNTANDO POR SENSOR
ANTIREB2   CALL    MOSTRAR     ;EQUIVALE A DELAY DE CALL DELAY5MS
           BTFSS   PORTB,0     ;+1=1?
           GOTO    ANTIREB2
           MOVF    CONTA,0
           SUBLW   .6
           BTFSS   STATUS,2    ;Z=1? CONTA=24?
           GOTO    SUBE2
           GOTO    ETAPA3
SUBE2      INCF    CONTA,1     ;CONTA=CONTA+1
           GOTO    EME2
ETAPA3     CLRF    CONTA
           MOVLW   .23
           MOVWF   LETRA1
           MOVLW   .20
           MOVWF   LETRA2
EME3       CALL    MOSTRAR
           BTFSC   PORTB,0     ;+1=0?
           GOTO    EME3 ;NO. SIGUE PREGUNTANDO POR SENSOR
ANTIREB3   CALL    MOSTRAR     ;EQUIVALE A DELAY DE CALL DELAY5MS
           BTFSS   PORTB,0     ;+1=1?
           GOTO    ANTIREB3
MOVF        CONTA,0
                  SUBLW       .6
                  BTFSS       STATUS,2    ;Z=1? CONTA=24?
                  GOTO        SUBE3
                  CLRF        CONTA
                  GOTO        ETAPA1
SUBE3             INCF        CONTA,1     ;CONTA=CONTA+1
                  GOTO        EME3

;**************************************************
;****************RUTINA MOSTRAR******************
;****************INCLUYE (NÚMEROS)****************
;****************INCLUYE (LETRAS)*******************
;**************************************************
MOSTRAR            CALL        BIN_BCD
                   BCF         PORTB,7     ;DISPLAY LETRADEC OFF
                   BCF         PORTB,6     ;DISPLAY LETRAUNI OFF
                   BCF         PORTB,5     ;DISPLAY CONTADEC OFF
                   BSF         PORTB,4     ;DISPLAY CONTAUNI ON
                   MOVF        UNI,0
                   CALL        TABLA
                   MOVWF       PORTC
                   CALL        DELAY5MS
                   BCF         PORTB,7     ;DISPLAY LETRADEC OFF
                   BCF         PORTB,6     ;DISPLAY LETRAUNI OFF
                   BSF         PORTB,5     ;DISPLAY CONTADEC ON
                   BCF         PORTB,4     ;DISPLAY CONTAUNI OFF
                   MOVF        DEC,0
                   CALL        TABLA
                   MOVWF       PORTC
                   CALL        DELAY5MS
                   BCF         PORTB,7     ;DISPLAY LETRADEC OFF
                   BSF         PORTB,6     ;DISPLAY LETRAUNI ON
                   BCF         PORTB,5     ;DISPLAY CONTADEC OFF
                   BCF         PORTB,4     ;DISPLAY CONTAUNI OFF
                   MOVF        LETRA1,0
                   CALL        TABLA
                   MOVWF       PORTC
CALL        DELAY5MS
                   BSF         PORTB,7     ;DISPLAY LETRADEC ON
                   BCF         PORTB,6     ;DISPLAY LETRAUNI OFF
                   BCF         PORTB,5     ;DISPLAY CONTADEC OFF
                   BCF         PORTB,4     ;DISPLAY CONTAUNI OFF
                   MOVF        LETRA2,0
                   CALL        TABLA
                   MOVWF       PORTC
                   CALL        DELAY5MS
                   RETURN
;***********************************************
;MUESTRA LETRAS Y SÍMBOLOS EN TODOS LOS DISPLAYS
;***********************************************
MOSTRAR2           BSF         PORTB,7     ;DISPLAY LETRADEC ON
                   BSF         PORTB,6     ;DISPLAY LETRAUNI ON
                   BSF         PORTB,5     ;DISPLAY CONTADEC ON
                   BSF         PORTB,4     ;DISPLAY CONTAUNI ON
                   MOVF        CONTADOR,0
                   CALL        TABLA
                   MOVWF       PORTC
                   RETURN
;*********************************
;RUTINA DE BINARIO A BCD CONTADOR:
;*********************************
BIN_BCD            CLRF        UNI
                   CLRF        DEC
                   CLRF        COPIA
                   MOVF        CONTA,0
                   MOVWF       COPIA
SUBED              MOVLW       .10
                   SUBWF       COPIA,1
                   BTFSC       STATUS,0
                   GOTO        SUBEDEC
                   GOTO        SUBEU
SUBEDEC            INCF        DEC,1
                   GOTO        SUBED
SUBEU              MOVLW       .10
                   ADDWF       COPIA,1
SUBEU2               MOVLW         .1
                     SUBWF         COPIA,1
                     BTFSS         STATUS,0
                     RETURN
SUBEU3               INCF          UNI,1
                     GOTO          SUBEU2
;*****************************************************************
;********SUBRUTINA DE TABLA DE NUMEROS, LETRAS Y SIMBOLOS*********
;*****************************************************************
;MUESTRA VARIAS LETRAS O SÍMBOLOS QUE SE PUEDEN MOSTRAR EN DISPLAY
;ESTA TABLA ES PARA ÁNODO COMÚN, SI ES PARA CÁTODO COMÚN SE DEBE
;INVERTIR LOS 0' POR 1' Y LOS 1' POR 0'
;*****************************************************************
TABLA                ADDWF         PCL,1       ;PUNTERO O ENCABEZADO DE LA TABLA
                     RETLW         B'11000000' ;0. VALOR 0
                     RETLW         B'11111001' ;1. VALOR 1
                     RETLW         B'10100100' ;2. VALOR 2
                     RETLW         B'10110000' ;3. VALOR 3
                     RETLW         B'10011001' ;4. VALOR 4
                     RETLW         B'10010010' ;5. VALOR 5
                     RETLW         B'10000011' ;6. VALOR 6
                     RETLW         B'11111000' ;7. VALOR 7
                     RETLW         B'10000000' ;8. VALOR 8
                     RETLW         B'10011000' ;9. VALOR 9
                     RETLW         B'10001000' ;10. A
                     RETLW         B'10000011' ;11. b
                     RETLW         B'11000110' ;12. C
                     RETLW         B'10100001' ;13. d
                     RETLW         B'10000110' ;14. E
                     RETLW         B'10001110' ;15. F
                     RETLW         B'10010000' ;16. g
                     RETLW         B'10001001' ;17. H
                     RETLW         B'11001111' ;18. I
                     RETLW         B'11100001' ;19. J
                     RETLW         B'11000111' ;20. L
                     RETLW         B'10101011' ;21. n
                     RETLW         B'10100011' ;22. o
                     RETLW         B'10001100' ;23. P
RETLW         B'10101111'   ;24. r
                    RETLW         B'10010010'   ;25. S
                    RETLW         B'11000001'   ;26. U
                    RETLW         B'10010001'   ;27. Y
                    RETLW         B'10101011'   ;28. SIMBOLO1
                    RETLW         B'10101010'   ;29. SIMBOLO2
                    RETLW         B'11001001'   ;30. SIMBOLO3
                    RETLW         B'11011100'   ;31. SIMBOLO4
                    RETLW         B'11110000'   ;32. SIMBOLO5
                    RETLW         B'10011100'   ;33. SIMBOLO6
                    RETLW         B'10110110'   ;34. SIMBOLO NIVEL ALTO
                    RETLW         B'10110111'   ;35. SIMBOLO NIVEL MEDIO
                    RETLW         B'11110111'   ;36. SIMBOLO NIVEL BAJO
;LÍMITE DE TABLA2= 37 (DEL 0 AL 36)

;;;RUTINA 5MS GENERADA DEL PDEL;
DELAY5MS           movlw .248           ; 1 set numero de repeticion
                   movwf PDel0          ;1|
PLoop0             clrwdt               ; 1 clear watchdog
                   decfsz PDel0, 1      ; 1 + (1) es el tiempo 0 ?
                   goto PLoop0          ; 2 no, loop
PDelL1             goto PDelL2          ; 2 ciclos delay
PDelL2             clrwdt               ; 1 ciclo delay
                   return               ; 2+2 Fin.

;;;RUTINA 0,5SEG GENERADA DEL PDEL
RET05S        NOP
ret5                movlw .245          ; 1 set numero de repeticion (B)
                    movwf PDel0A        ;1|
PLoop1X             movlw .254          ; 1 set numero de repeticion (A)
                    movwf PDel1         ;1|
PLoop2X             clrwdt              ; 1 clear watchdog
                    decfsz PDel1, 1     ; 1 + (1) es el tiempo 0 ? (A)
                    goto PLoop2X        ; 2 no, loop
                    decfsz PDel0A, 1    ; 1 + (1) es el tiempo 0 ? (B)
                    goto PLoop1X        ; 2 no, loop
PDelL1X             goto PDelL2X        ; 2 ciclos delay
PDelL2X             clrwdt              ; 1 ciclo delay
return

                       END      ; FIN DEL PROGRAMA

Circuito en Proteus:
Ejemplo 4. Semáforo 4 esquinas simple.
En este ejemplo se muestra el uso de dos tablas, una para mostrarse por el puerto A y otra
para mostrarse por el puerto B. Ambos puertos manipulan los 12 bombillos que poseería el
semáforo 4 esquinas.
El diagrama de flujo muestra los estados de tiempo largo, cuando el semáforo esta en rojo
o en verde y los estados de tiempo corto, cuando está en amarillo.
Este ejemplo es limitado a un semáforo sencillo de 4 esquinas, sin embargo puede
modificarse separando cada etapa con tiempos distintos a los que se muestran a
continuación.
Diagrama de flujo


                              INICIO                    MOSTRAR            TABLA1



                       Declarar registro:              CONTA → W      W + PCL → PCL
                  CONTA, CONTA2,PDel0, PDel1


                                                         TABLA1    Retornamos con el valor
                           Configurar
                                                                   en W extraido de la tabla
                          Puerto A y B
                                                                      correspondiente al
                                                      W → PORTB            Puerto B
                       Inicializar registros:
                        CONTA, CONTA2                  CONTA → W            Return
                           Puerto A y B


                                                         TABLA2            TABLA2
                    NO
                            ¿Se pulsó
                             INICIO?                   W → PORTA
                                     SI                               W + PCL → PCL
            1
                                                          Return
                           MOSTRAR                                 Retornamos con el valor
                                                                   en W extraido de la tabla
                                                                      correspondiente al
                          Delay 30 seg                                     Puerto A


                       CONTA= CONTA +1                                      Return



                           MOSTRAR


                           Delay 5 seg



                  NO
CONTA= CONTA +1           ¿CONTA=7?


       1                             SI

                           CONTA= 0


                                 1
Delay 30 seg                                      Delay 5 seg



                           Inicializar registro:                            Inicializar registro:
                                 CONTA2                                           CONTA2


                              Delay 1 seg                                      Delay 1 seg



                     NO                                                NO
 CONTA2= CONTA2 +1           ¿CONTA2=29?           CONTA2= CONTA2 +1          ¿CONTA2=4?


                                       SI                                               SI

                                 Return                                           Return




                            Delay 1 segundo



                          La sacamos del PDEL


                                 Return




             LIST P=16F84A
             INCLUDE P16F84A.INC
CONTA        EQU         20H ;Registro contador de estados del semáforo
CONTA2       EQU         21H ;Registro para las rutinas de tiempo de 30 y 5 segundos
PDel0        EQU         22H ;Registros para las rutinas de tiempo de 1 segundo
PDel1        EQU         23H
PDel2        EQU         24H

             ORG                00H
             GOTO               INICIO
INICIO       BSF                STATUS,5
             CLRF               TRISB       ;Puerto B como salida
             MOVLW              B'00010000' ;RA4= Entrada y el Resto como salidas
             MOVWF              TRISA
             BCF                STATUS,5
CLRF        CONTA       ;INICIALIZAMOS LOS REGISTROS Y PUERTOS
           CLRF        CONTA2
           CLRF        PORTA
           CLRF        PORTB
NCICLO     CALL        MOSTRAR
           CALL        DELAY30S    ;Se inicia la primera cuenta del 1er estado
           INCF        CONTA,1
           CALL        MOSTRAR     ;Se llama a subrutina mostrar
           CALL        DELAY5S     ;Se espera el estado amarillo
           MOVLW       07H
           SUBWF       CONTA,0     ;Se pregunta si se llegó al final de los estados
                                   ;del semáforo
             BTFSS       STATUS,2
             GOTO        SUBE
             CLRF        CONTA
             GOTO        NCICLO
SUBE         INCF        CONTA,1
             GOTO        NCICLO
;***************************************************
;RUTINA PARA MOSTRAR LOS DATOS EXTRAIDOS DE LA TABLA
;POR LOS PUERTOS A Y B
;***************************************************
MOSTRAR      MOVF        CONTA,0
             CALL        TABLA1
             MOVWF       PORTB
             MOVF        CONTA,0
             CALL        TABLA2
             MOVWF       PORTA
             RETURN
;********************************
;RUTINA DE RETARDO DE 30 SEGUNDOS
;********************************
DELAY30S     CLRF        CONTA2
OTRO         CALL        RET1S
             MOVLW       D'10'
             SUBWF       CONTA2,0
             BTFSS       STATUS,2
             GOTO        PREVIO
RETURN
PREVIO       INCF         CONTA2,1
             GOTO         OTRO
;*******************************
;RUTINA DE RETARDO DE 5 SEGUNDOS
;*******************************
DELAY5S      CLRF         CONTA2
OTRO2        CALL         RET1S
             MOVLW        D'4'
             SUBWF        CONTA2,0
             BTFSS        STATUS,2
             GOTO         PREVIO2
             RETURN
PREVIO2      INCF         CONTA2,1
             GOTO         OTRO2
;**************************************************
;RUTINA DE TIEMPO DE 1 SEGUNDO GENERADA POR EL PDEL
;**************************************************
RET1S        movlw        .14     ; 1 set numero de repeticion (C)
             movwf        PDel0 ; 1 |
PLoop0       movlw        .72     ; 1 set numero de repeticion (B)
             movwf        PDel1 ; 1 |
PLoop1       movlw        .247 ; 1 set numero de repeticion (A)
             movwf        PDel2 ; 1 |
PLoop2       clrwdt      ; 1 clear watchdog
             decfsz       PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A)
             goto         PLoop2 ; 2 no, loop
             decfsz       PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B)
             goto         PLoop1 ; 2 no, loop
             decfsz       PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C)
             goto         PLoop0 ; 2 no, loop
PDelL1       goto         PDelL2        ; 2 ciclos delay
PDelL2       clrwdt      ; 1 ciclo delay
             return      ; 2+2 Fin.
;*************************************
;TABLA QUE CONTIENE EL ESTADO DE LOS
;BOMBILLOS CONTROLADOS POR EL PUERTO B
;**************************************
TABLA1      ADDWF        PCL,1
            RETLW        B'10110011' ;4CH;
            RETLW        B'10110101' ;4AH;
            RETLW        B'10011110' ;61H;
            RETLW        B'10101110' ;51H;
            RETLW        B'11110110' ;09H;
            RETLW        B'01110110' ;89H;
            RETLW        B'10110110' ;49H;
            RETLW        B'10110110' ;49H;
;*************************************
;TABLA QUE CONTIENE EL ESTADO DE LOS
;BOMBILLOS CONTROLADOS POR EL PUERTO A
;*************************************
TABLA2      ADDWF        PCL,1
            RETLW        B'00001101' ;02H;
            RETLW        B'00001101' ;02H;
            RETLW        B'00001101' ;02H;
            RETLW        B'00001101' ;02H;
            RETLW        B'00001100' ;03H;
            RETLW        B'00001101' ;02H;
            RETLW        B'00000111' ;08H;
            RETLW        B'00001011' ;04H;

            END
Circuito en Proteus:

More Related Content

What's hot

Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Carlos Pastorino
 
Modulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicionModulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicionAlieth Guevara
 
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,Miguel Brunings
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarthejp
 
Sistema control onoff
Sistema control onoffSistema control onoff
Sistema control onoffSalvador-UNSA
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesLuis Zurita
 
Protocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modemProtocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modemMirna L. Torres Garcia
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosRosviannis Barreiro
 
Codigos de Linea - Telecomunicaciones III
Codigos de Linea - Telecomunicaciones IIICodigos de Linea - Telecomunicaciones III
Codigos de Linea - Telecomunicaciones IIIAndy Juan Sarango Veliz
 
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
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresBertha Vega
 
Familias logicas caracteristicas
Familias logicas caracteristicasFamilias logicas caracteristicas
Familias logicas caracteristicasLuisana Parra
 

What's hot (20)

Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Modulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicionModulación por desplazamiento de fase (psk) exposicion
Modulación por desplazamiento de fase (psk) exposicion
 
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
Diferentes tipos de flip flops (jk, sr, d, t) sus tablas de verdad,
 
codificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolarcodificaciones unipolar, polar, bipolar
codificaciones unipolar, polar, bipolar
 
Sistema control onoff
Sistema control onoffSistema control onoff
Sistema control onoff
 
Codigo Hamming
Codigo HammingCodigo Hamming
Codigo Hamming
 
8 2 convertidor-analogico_-digital
8 2 convertidor-analogico_-digital8 2 convertidor-analogico_-digital
8 2 convertidor-analogico_-digital
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Sesion 7 S Dbos
Sesion 7 S DbosSesion 7 S Dbos
Sesion 7 S Dbos
 
Circuitos secuenciales
Circuitos secuencialesCircuitos secuenciales
Circuitos secuenciales
 
Protocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modemProtocolos, estandares y tipos de modem
Protocolos, estandares y tipos de modem
 
Análisis de la respuesta del sistema
Análisis de la respuesta del sistemaAnálisis de la respuesta del sistema
Análisis de la respuesta del sistema
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
 
Reporte compuertas logicas
Reporte compuertas logicas Reporte compuertas logicas
Reporte compuertas logicas
 
Codigos de Linea - Telecomunicaciones III
Codigos de Linea - Telecomunicaciones IIICodigos de Linea - Telecomunicaciones III
Codigos de Linea - Telecomunicaciones III
 
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
 
Ejercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadoresEjercicios de Multiplexores y decodificadores
Ejercicios de Multiplexores y decodificadores
 
Familias logicas caracteristicas
Familias logicas caracteristicasFamilias logicas caracteristicas
Familias logicas caracteristicas
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 

Viewers also liked

EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENLuis Zurita
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CLuis Zurita
 
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
 
TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APALuis Zurita
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3Luis Zurita
 

Viewers also liked (7)

EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
 
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
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
TALLER NORMAS APA
TALLER NORMAS APATALLER NORMAS APA
TALLER NORMAS APA
 
Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3GUÍA DE EJERCICIOS RESUELTOS TEMA 3
GUÍA DE EJERCICIOS RESUELTOS TEMA 3
 

Similar to Uso de las tablas en lenguaje ensamblador

Examen 4 intensivo micro
Examen 4 intensivo microExamen 4 intensivo micro
Examen 4 intensivo microLuis Zurita
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2Luis Zurita
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
 
Laboratorio de Microcomputadoras - Práctica 06
 Laboratorio de Microcomputadoras - Práctica 06 Laboratorio de Microcomputadoras - Práctica 06
Laboratorio de Microcomputadoras - Práctica 06Cristian Ortiz Gómez
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupcionesLuis Zurita
 
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
 
Sistema de acceso comunicacion serial
Sistema de acceso comunicacion  serialSistema de acceso comunicacion  serial
Sistema de acceso comunicacion serialDitiveca Diseño
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersmarco calderon layme
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4Luis Zurita
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Hamiltonn Casallas
 
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
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitEnrique Trascastro
 
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Anllel Cardenas Yllanes
 

Similar to Uso de las tablas en lenguaje ensamblador (20)

Examen 4 intensivo micro
Examen 4 intensivo microExamen 4 intensivo micro
Examen 4 intensivo micro
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
Semaforos
SemaforosSemaforos
Semaforos
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 
Laboratorio de Microcomputadoras - Práctica 06
 Laboratorio de Microcomputadoras - Práctica 06 Laboratorio de Microcomputadoras - Práctica 06
Laboratorio de Microcomputadoras - Práctica 06
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupciones
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
Sistema de acceso comunicacion serial
Sistema de acceso comunicacion  serialSistema de acceso comunicacion  serial
Sistema de acceso comunicacion serial
 
Microprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timersMicroprogramacion - Interrupciones y timers
Microprogramacion - Interrupciones y timers
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4GUÍA DE EJERCICIOS RESUELTOS TEMA 4
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
 
Uso del tmr0
Uso del tmr0Uso del tmr0
Uso del tmr0
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Tarea final
Tarea finalTarea final
Tarea final
 
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
 
Ejercicio 07 Timers
Ejercicio 07 TimersEjercicio 07 Timers
Ejercicio 07 Timers
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekit
 
Proye84
Proye84Proye84
Proye84
 
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
 

More from Luis 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
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronicaLuis Zurita
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Luis Zurita
 

More from Luis Zurita (20)

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
 
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
 
Acumuladas electronica
Acumuladas electronicaAcumuladas electronica
Acumuladas electronica
 
Pevmicro2013
Pevmicro2013Pevmicro2013
Pevmicro2013
 
Proyecto2 notas iyc2013
Proyecto2 notas iyc2013Proyecto2 notas iyc2013
Proyecto2 notas iyc2013
 

Recently uploaded

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
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSYadi Campos
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptxRigoTito
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdfMiNeyi1
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfUPTAIDELTACHIRA
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
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
 

Recently uploaded (20)

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
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
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...
 

Uso de las tablas en lenguaje ensamblador

  • 1. DIAGRAMAS DE FLUJO PARA RUTINAS DE RETARDO DE 1 HASTA 60 MINUTOS DIAGRAMA DE FLUJO PARA CERROJO AUTOMÁTICO CERROJO CERROJO TRADICIONAL AUTOMÁTICO TAREA1 TAREA1 Inicializar registro: CONTACERR=0 NO ¿Ocurrió condición? Delay 15 SI msegundos ¿Ocurrió NO ¿CONTACERR= NO CONTACERR= TAREA2 condición? 200? CONTACERR +1 SI SI IR A PARADA TAREA2 Delay 15 msegundos La sacamos del PDEL Return
  • 2. ¿Cuánto tiempo pasa para salir del cerrojo? CONTACERR se incrementará hasta 200, y por cada incremento se debe esperar 15 milisegundos, es decir= Tiempo de espera en cerrojo= 15mseg*200= 3 segundos. Este tiempo puede ajustarse según sea el diseño que se esté realizando. USO DE LAS TABLAS EN LENGUAJE ENSAMBLADOR Las tablas nos permiten extraer valores para ser utilizados en otras tareas, tales como la visualización de datos, linealización de valores, conversión de códigos, etc. Su aplicación era principalmente para el uso de los sistemas contadores en conjunto con la multiplexación de displays, sin el uso de un decodificador BCD a 7 segmentos; sin embargo, pueden servir para semáforos, sistemas de monitoreo, aplicaciones residenciales, entre otras. Su funcionamiento se basa en la manipulación del contador de programa (PC) mediante la suma de un dato a extraer de la tabla (registro) y la parte baja del contador de programa (PCL). Para un rango máximo de 256 valores, se manipula directamente el PCL. En caso de valores superiores, se debe manipular adicionalmente el PCLATH, que amplía la capacidad de datos en una tabla. La instrucción RETLW K (Retorna de la subrutina y carga en W el valor constante k), está muy asociada a las tablas, ya que cuando se llama a una subrutina “tabla”, esta instrucción regresa de la subrutina y a su vez extrae el valor de la misma previamente seleccionada por el puntero de tabla. Normalmente, cuando se llama a una subrutina “tabla”, previamente se carga el valor del dato a sacar de la tabla. Dentro de la subrutina “tabla”, el dato a sacar, se suma al PCL que es el encabezado o puntero de la tabla, “saltando” al valor correspondiente indicado por el dato que se desea extraer de la tabla. En la siguiente imagen, supongamos que se desea sacar el valor del registro UNIDAD (supongamos que UNIDAD= 5 al momento de ejecutar el llamado a la tabla), por lo que se le sumará UNIDAD + PCL (5+PCL ubicado en el puntero o encabezado de la tabla), y éste saltará desde el encabezado al valor de la UNIDAD (que vale 5 para este ejemplo) y W retornará con ese valor cargado (W=’Valor5’).
  • 3. Cuando se trabaja con displays y la respectiva multiplexación es un estándar utilizar los siguientes códigos o extractos de un programa: movf DATO,0 ;DATO pasa a W. es el dato que se call TABLA ;quiere extraer de la tabla ; Después que se regresa de la tabla con el valor del registro ; “DATO”, se saca este valor y se pasa a la salida del puerto ; que está controlando los 7 sgmentos de los displays. movwf PORTB ;o puede ser PORTC o D, según el PIC Es importante resaltar que el uso de las tablas elimina tener que utilizar un decodificador y permite mostrar números, letras y algunos símbolos al manipular directamente los 7 segmentos de un display. Veamos los siguientes ejemplos del uso de las tablas en programas con estructura de contadores y multiplexación de displays.
  • 4. Ejemplo 1. Contador de 2 cifras estándar (00 a 99). El diagrama de flujo es el mismo de contador ascendente de 2 cifras en la guía 3_2 de microcontroladores I, de Rutinas intermedias. Programa en Lenguaje Ensamblador: LIST P=16F877A INCLUDE P16F877A.INC ;************************** ;DECLARACIÓN DE REGISTROS= ;************************** UNI EQU 20H DEC EQU 21H COPIA EQU 26H PDel0 EQU 27H CONTADOR EQU 28H ;************************** ORG 00H GOTO INICIO INICIO BSF STATUS,5 MOVLW B'00000110' MOVWF ADCON1 CLRF TRISA MOVLW B'00001111' MOVWF TRISB CLRF TRISC BCF STATUS,5 CLRF UNI CLRF DEC ;**************************** ;CONTADOR CLÁSICO DE 00 A 99 ;**************************** EME CALL MOSTRAR BTFSC PORTB,0 ;+1=0? GOTO EME ;NO. VA A EXPLORAR DE NUEVO ANTIREB1 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,0 ;+1=1? GOTO ANTIREB1 MOVF UNI,0 ;UNI A W SUBLW .9
  • 5. BTFSS STATUS,2 ;Z=1? UNI=9? GOTO SUBEUNI GOTO DECENA SUBEUNI INCF UNI,1 ;UNI=UNI+1 GOTO EME DECENA CLRF UNI MOVF DEC,0 ;DEC A W SUBLW .9 BTFSS STATUS,2 ;Z=1? DEC=9? GOTO SUBEDEC CLRF DEC CLRF UNI GOTO EME SUBEDEC INCF DEC,1 ;DEC=DEC+1 GOTO EME ;************************************************** ;RUTINA MOSTRAR(INCLUYE CONVERSIONES BINARIO A BCD) ;************************************************** MOSTRAR BCF PORTB,5 ;DISPLAY DEC OFF BSF PORTB,4 ;DISPLAY UNI ON ;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR= ;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A) MOVF UNI,0 ;UNI A W CALL TABLA ;W VA A TABLA Y REGRESA CON VALOR DE UNI MOVWF PORTC ;UNI ES SACADO HACIA LA TABLA ;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR= ;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A) ;MOVF UNI,0 ;MOVWF PORTA ;UNIV A PORTA CALL DELAY5MS BSF PORTB,5 ;DISPLAY DEC ON BCF PORTB,4 ;DISPLAY UNI OFF ;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR= ;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A) MOVF DEC,0 ;DEC A W CALL TABLA ;W VA A TABLA Y REGRESA CON VALOR DE DEC MOVWF PORTC ;DEC ES SACADO HACIA LA TABLA ;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR=
  • 6. ;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A) ;MOVF DEC,0 ;MOVWF PORTA ;DECV A PORTA CALL DELAY5MS RETURN ;**************************************************************** ;**********************SUBRUTINA DE TABLA************************ ;**************************************************************** ;CONVIERTE DATO BCD A 7SEGMENTOS, COMO SI FUERA UN DECODIFICADOR ;ESTA TABLA ES PARA ÁNODO COMÚN, SI ES PARA CÁTODO COMÚN SE DEBE ;INVERTIR LOS 0' POR 1' Y LOS 1' POR 0' ;**************************************************************** ;IMPORTANTE: ¿PARA QUÉ SON ESTOS VALORES QUE SE MUESTRAN EN LA TABLA? VALORES ;TOMEMOS EL PRIMERO= B’11000000’, RECORDANDO QUE ESTE DATO VA A SALIR ;POR UN PUERTO DE 8 BITS, SEA EL PORTB, PORTC O PORTD HACIA LOS 7 SEGMENTOS ;DE UN DISPLAY ÁNODO COMÚN: ;VEMOS QUE SE HA FORMADO EL CERO (0) Y ASÍ PARA CADA NÚMERO O LETRA COMO PARA ;SE VERÁ EN EL EJEMPLO 3. TABLA ADDWF PCL,1 RETLW B'11000000' ;VALOR 0 RETLW B'11111001' ;VALOR 1 RETLW B'10100100' ;VALOR 2 RETLW B'10110000' ;VALOR 3
  • 7. RETLW B'10011001' ;VALOR 4 RETLW B'10010010' ;VALOR 5 RETLW B'10000011' ;VALOR 6 RETLW B'11111000' ;VALOR 7 RETLW B'10000000' ;VALOR 8 RETLW B'10011000' ;VALOR 9 ;;;RUTINA 5MS GENERADA DEL PDEL; DELAY5MS movlw .248 ; 1 set numero de repeticion movwf PDel0 ;1| PLoop0 clrwdt ; 1 clear watchdog decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? goto PLoop0 ; 2 no, loop PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 clrwdt ; 1 ciclo delay return ; 2+2 Fin. END Circuito en Proteus:
  • 8. Ejemplo 2. Marcador para cancha de Bolas criollas. Es el mismo ejercicio pero sin el uso del decodificador. Se migró a un PIC16F877 por no alcanzar los pines del PIC16F84A. Asumir el mismo diagrama de flujo. Lo que varia es la rutina de mostrar, ya que no se utiliza el decodificador. Programa en Lenguaje Ensamblador: LIST P=16F877A INCLUDE P16F877A.INC ;************************** ;DECLARACIÓN DE REGISTROS= ;************************** UNIV EQU 20H DECV EQU 21H UNIR EQU 22H DECR EQU 23H CONTAV EQU 24H CONTAR EQU 25H COPIA EQU 26H PDel0 EQU 27H CONTADOR EQU 28H ;************************** ORG 00H GOTO INICIO INICIO BSF STATUS,5 MOVLW B'00000110' MOVWF ADCON1 CLRF TRISA MOVLW B'00001111' MOVWF TRISB CLRF TRISC BCF STATUS,5 CLRF UNIV CLRF DECV CLRF UNIR CLRF DECR CLRF CONTAV CLRF CONTAR EME CALL MOSTRAR
  • 9. BTFSC PORTB,0 ;+1V=0? GOTO SIGUE1 ;NO. VA A -1V ANTIREB1 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,0 ;+1V=1? GOTO ANTIREB1 MOVF CONTAV,0 SUBLW .24 BTFSS STATUS,2 ;Z=1? CONTAV=24? GOTO SUBEV GOTO EME SUBEV INCF CONTAV,1 ;CONTAV=CONTAV+1 GOTO EME SIGUE1 BTFSC PORTB,1 ;-1V=0? GOTO SIGUE2 ;VA A +1R ANTIREB2 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,1 ;-1V=1? GOTO ANTIREB2 MOVF CONTAV,0 SUBLW .0 BTFSS STATUS,2 ;Z=1? CONTAV=0? GOTO BAJAV GOTO EME BAJAV DECF CONTAV,1 ;CONTAV=CONTAV-1 GOTO EME SIGUE2 BTFSC PORTB,2 ;+1R=0? GOTO SIGUE3 ;NO. VA A -1R ANTIREB3 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,2 ;+1R=1? GOTO ANTIREB3 MOVF CONTAR,0 SUBLW .24 BTFSS STATUS,2 ;Z=1? CONTAR=24? GOTO SUBER GOTO EME SUBER INCF CONTAR,1 ;CONTAR=CONTAR+1 GOTO EME SIGUE3 BTFSC PORTB,3 ;-1R=0? GOTO EME
  • 10. ANTIREB4 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,3 ;-1R=1? GOTO ANTIREB4 MOVF CONTAR,0 SUBLW .0 BTFSS STATUS,2 ;Z=1? CONTAR=0? GOTO BAJAR GOTO EME BAJAR DECF CONTAR,1 ;CONTAR=CONTAR-1 GOTO EME ;************************************************** ;RUTINA MOSTRAR(INCLUYE CONVERSIONES BINARIO A BCD) ;************************************************** MOSTRAR CALL BIN_BCDV CALL BIN_BCDR BCF PORTB,7 ;DISPLAY DECROJO OFF BCF PORTB,6 ;DISPLAY UNIROJO OFF BCF PORTB,5 ;DISPLAY DECVERDE OFF BSF PORTB,4 ;DISPLAY UNIVERDE ON ;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR= ;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A) MOVF UNIV,0 ;UNIV A W CALL TABLA ;W VA A TABLA Y REGRESA CON VALOR UNIV MOVWF PORTC ;UNIV SE MUESTRA POR EL PORTC ;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR= ;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A) ;MOVF UNIV,0 ;MOVWF PORTA ;UNIV A PORTA CALL DELAY5MS BCF PORTB,7 ;DISPLAY DECROJO OFF BCF PORTB,6 ;DISPLAY UNIROJO OFF BSF PORTB,5 ;DISPLAY DECVERDE ON BCF PORTB,4 ;DISPLAY UNIVERDE OFF ;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR= ;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A) MOVF DECV,0 ;DECV A W CALL TABLA ;W VA A TABLA Y REGRESA CON VALOR DECV MOVWF PORTC ;DECV SE MUESTRA POR EL PORTC
  • 11. ;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR= ;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A) ;MOVF DECV,0 ;MOVWF PORTA ;DECV A PORTA CALL DELAY5MS BCF PORTB,7 ;DISPLAY DECROJO OFF BSF PORTB,6 ;DISPLAY UNIROJO ON BCF PORTB,5 ;DISPLAY DECVERDE OFF BCF PORTB,4 ;DISPLAY UNIVERDE OFF ;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR= ;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A) MOVF UNIR,0 ;UNIR A W CALL TABLA ;W VA A TABLA Y REGRESA CON VALOR UNIR MOVWF PORTC ;UNIR SE MUESTRA POR EL PORTC ;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR= ;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A) ;MOVF UNIR,0 ;MOVWF PORTA ;UNIR A PORTA CALL DELAY5MS BSF PORTB,7 ;DISPLAY DECROJO ON BCF PORTB,6 ;DISPLAY UNIROJO OFF BCF PORTB,5 ;DISPLAY DECVERDE OFF BCF PORTB,4 ;DISPLAY UNIVERDE OFF ;ESTA ES LA MODIFICACIÓN CUANDO NO SE TIENE UN DECODIFICADOR= ;NOTA= LOS SEGMENTOS DEL DISPLAY ESTÁN CONECTADOS AL PUERTO C (16F877A) MOVF DECR,0 ;DECR A W CALL TABLA ; W VA A TABLA Y REGRESA CON VALOR DECR MOVWF PORTC ;DECR SE MUESTRA POR EL PORTC ;ESTAS INSTRUCCIONES SE USAN CUANDO SE TIENE UN DECODIFICADOR= ;NOTA= EL DECODIFICADOR ESTÁ CONECTADO POR EL PUERTO A (16F84A) ;MOVF DECR,0 ;MOVWF PORTA ;DECR A PORTA CALL DELAY5MS RETURN
  • 12. ;****************************** ;RUTINA DE BINARIO A BCD VERDE: ;****************************** BIN_BCDV CLRF UNIV CLRF DECV CLRF COPIA MOVF CONTAV,0 MOVWF COPIA SUBEDV MOVLW .10 SUBWF COPIA,1 BTFSC STATUS,0 GOTO SUBEDECV GOTO SUBEUV SUBEDECV INCF DECV,1 GOTO SUBEDV SUBEUV MOVLW .10 ADDWF COPIA,1 SUBEU2V MOVLW .1 SUBWF COPIA,1 BTFSS STATUS,0 RETURN SUBEU3V INCF UNIV,1 GOTO SUBEU2V ;****************************** ;RUTINA DE BINARIO A BCD ROJO: ;****************************** BIN_BCDR CLRF UNIR CLRF DECR CLRF COPIA MOVF CONTAR,0 MOVWF COPIA SUBEDR MOVLW .10 SUBWF COPIA,1 BTFSC STATUS,0 GOTO SUBEDECR GOTO SUBEUR SUBEDECR INCF DECR,1 GOTO SUBEDR
  • 13. SUBEUR MOVLW .10 ADDWF COPIA,1 SUBEU2R MOVLW .1 SUBWF COPIA,1 BTFSS STATUS,0 RETURN SUBEU3R INCF UNIR,1 GOTO SUBEU2R ;**************************************************************** ;**********************SUBRUTINA DE TABLA************************ ;**************************************************************** ;CONVIERTE DATO BCD A 7SEGMENTOS, COMO SI FUERA UN DECODIFICADOR ;ESTA TABLA ES PARA ÁNODO COMÚN, SI ES PARA CÁTODO COMÚN SE DEBE ;INVERTIR LOS 0' POR 1' Y LOS 1' POR 0' ;**************************************************************** TABLA ADDWF PCL,1 RETLW B'11000000' ;VALOR 0 RETLW B'11111001' ;VALOR 1 RETLW B'10100100' ;VALOR 2 RETLW B'10110000' ;VALOR 3 RETLW B'10011001' ;VALOR 4 RETLW B'10010010' ;VALOR 5 RETLW B'10000011' ;VALOR 6 RETLW B'11111000' ;VALOR 7 RETLW B'10000000' ;VALOR 8 RETLW B'10011000' ;VALOR 9 ;;;RUTINA 5MS GENERADA DEL PDEL; DELAY5MS movlw .248 ; 1 set numero de repeticion movwf PDel0 ; 1 | PLoop0 clrwdt ; 1 clear watchdog decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? goto PLoop0 ; 2 no, loop PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 clrwdt ; 1 ciclo delay return ; 2+2 Fin. END
  • 14. Circuito en Proteus: Ejemplo 3. Contador de 3 etapas. Para este ejemplo se asume que cada etapa va a contar 6 eventos. Este número puede ser modificado a gusto del usuario. Aquí se introduce el uso de las letras que es una de las ventajas de no utilizar decodificadores, ya que estos limitan la visualización del 0 al 9. En cada etapa, se muestra un mensaje de 2 letras y al lado el contador de los eventos. Se muestra una tabla en la que contiene lo que considero pueden ser la tabla más completa de números, letras y algunos símbolos que pueden mostrarse en un display convencional de 7 segmentos. El diagrama de flujo es simple. A continuación: RB0= +1 RB4= DISPLAY UNI RB5= DISPLAY DEC RB6= DISPLAY LETRA1 RB7= DISPLAY LETRA2 PORTC= SALIDA A LOS SEGMENTOS
  • 15. Programa en Lenguaje Ensamblador: LIST P=16F877A INCLUDE P16F877A.INC ;************************** ;DECLARACIÓN DE REGISTROS= ;************************** UNI EQU 20H DEC EQU 21H LETRA1 EQU 22H LETRA2 EQU 23H CONTA EQU 24H COPIA EQU 26H PDel0 EQU 27H PDel0A EQU 29H PDel1 EQU 2AH CONTADOR EQU 28H ;**************************
  • 16. ORG 00H GOTO INICIO INICIO BSF STATUS,5 MOVLW B'00000110' MOVWF ADCON1 CLRF TRISA MOVLW B'00001111' MOVWF TRISB CLRF TRISC BCF STATUS,5 CLRF UNI CLRF DEC CLRF CONTADOR ;*************************************** ;MENSAJE DE INICIO CON TODAS LAS LETRAS ;*************************************** ;ESTE MENSAJE MUESTRA TODOS LOS NÚMEROS Y LETRAS DE LA TABLA ENTRADAMSJ CALL MOSTRAR2 MOVF CONTADOR,0 SUBLW .37 BTFSS STATUS,2 GOTO SUBELETRA CLRF CONTADOR GOTO ETAPA1 SUBELETRA INCF CONTADOR,1 CALL RET05S GOTO ENTRADAMSJ ;*************************************** ;*************************************** ;*************************************** ETAPA1 MOVLW .26 MOVWF LETRA2 MOVLW .14 MOVWF LETRA1 EME CALL MOSTRAR BTFSC PORTB,0 ;+1=0? GOTO EME ;NO. SIGUE PREGUNTANDO POR SENSOR ANTIREB1 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS
  • 17. BTFSS PORTB,0 ;+1=1? GOTO ANTIREB1 MOVF CONTA,0 SUBLW .6 BTFSS STATUS,2 ;Z=1? CONTA=24? GOTO SUBE GOTO ETAPA2 SUBE INCF CONTA,1 ;CONTA=CONTA+1 GOTO EME ETAPA2 CLRF CONTA MOVLW .35 MOVWF LETRA1 MOVLW .1 MOVWF LETRA2 EME2 CALL MOSTRAR BTFSC PORTB,0 ;+1=0? GOTO EME2 ;NO. SIGUE PREGUNTANDO POR SENSOR ANTIREB2 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,0 ;+1=1? GOTO ANTIREB2 MOVF CONTA,0 SUBLW .6 BTFSS STATUS,2 ;Z=1? CONTA=24? GOTO SUBE2 GOTO ETAPA3 SUBE2 INCF CONTA,1 ;CONTA=CONTA+1 GOTO EME2 ETAPA3 CLRF CONTA MOVLW .23 MOVWF LETRA1 MOVLW .20 MOVWF LETRA2 EME3 CALL MOSTRAR BTFSC PORTB,0 ;+1=0? GOTO EME3 ;NO. SIGUE PREGUNTANDO POR SENSOR ANTIREB3 CALL MOSTRAR ;EQUIVALE A DELAY DE CALL DELAY5MS BTFSS PORTB,0 ;+1=1? GOTO ANTIREB3
  • 18. MOVF CONTA,0 SUBLW .6 BTFSS STATUS,2 ;Z=1? CONTA=24? GOTO SUBE3 CLRF CONTA GOTO ETAPA1 SUBE3 INCF CONTA,1 ;CONTA=CONTA+1 GOTO EME3 ;************************************************** ;****************RUTINA MOSTRAR****************** ;****************INCLUYE (NÚMEROS)**************** ;****************INCLUYE (LETRAS)******************* ;************************************************** MOSTRAR CALL BIN_BCD BCF PORTB,7 ;DISPLAY LETRADEC OFF BCF PORTB,6 ;DISPLAY LETRAUNI OFF BCF PORTB,5 ;DISPLAY CONTADEC OFF BSF PORTB,4 ;DISPLAY CONTAUNI ON MOVF UNI,0 CALL TABLA MOVWF PORTC CALL DELAY5MS BCF PORTB,7 ;DISPLAY LETRADEC OFF BCF PORTB,6 ;DISPLAY LETRAUNI OFF BSF PORTB,5 ;DISPLAY CONTADEC ON BCF PORTB,4 ;DISPLAY CONTAUNI OFF MOVF DEC,0 CALL TABLA MOVWF PORTC CALL DELAY5MS BCF PORTB,7 ;DISPLAY LETRADEC OFF BSF PORTB,6 ;DISPLAY LETRAUNI ON BCF PORTB,5 ;DISPLAY CONTADEC OFF BCF PORTB,4 ;DISPLAY CONTAUNI OFF MOVF LETRA1,0 CALL TABLA MOVWF PORTC
  • 19. CALL DELAY5MS BSF PORTB,7 ;DISPLAY LETRADEC ON BCF PORTB,6 ;DISPLAY LETRAUNI OFF BCF PORTB,5 ;DISPLAY CONTADEC OFF BCF PORTB,4 ;DISPLAY CONTAUNI OFF MOVF LETRA2,0 CALL TABLA MOVWF PORTC CALL DELAY5MS RETURN ;*********************************************** ;MUESTRA LETRAS Y SÍMBOLOS EN TODOS LOS DISPLAYS ;*********************************************** MOSTRAR2 BSF PORTB,7 ;DISPLAY LETRADEC ON BSF PORTB,6 ;DISPLAY LETRAUNI ON BSF PORTB,5 ;DISPLAY CONTADEC ON BSF PORTB,4 ;DISPLAY CONTAUNI ON MOVF CONTADOR,0 CALL TABLA MOVWF PORTC RETURN ;********************************* ;RUTINA DE BINARIO A BCD CONTADOR: ;********************************* BIN_BCD CLRF UNI CLRF DEC CLRF COPIA MOVF CONTA,0 MOVWF COPIA SUBED MOVLW .10 SUBWF COPIA,1 BTFSC STATUS,0 GOTO SUBEDEC GOTO SUBEU SUBEDEC INCF DEC,1 GOTO SUBED SUBEU MOVLW .10 ADDWF COPIA,1
  • 20. SUBEU2 MOVLW .1 SUBWF COPIA,1 BTFSS STATUS,0 RETURN SUBEU3 INCF UNI,1 GOTO SUBEU2 ;***************************************************************** ;********SUBRUTINA DE TABLA DE NUMEROS, LETRAS Y SIMBOLOS********* ;***************************************************************** ;MUESTRA VARIAS LETRAS O SÍMBOLOS QUE SE PUEDEN MOSTRAR EN DISPLAY ;ESTA TABLA ES PARA ÁNODO COMÚN, SI ES PARA CÁTODO COMÚN SE DEBE ;INVERTIR LOS 0' POR 1' Y LOS 1' POR 0' ;***************************************************************** TABLA ADDWF PCL,1 ;PUNTERO O ENCABEZADO DE LA TABLA RETLW B'11000000' ;0. VALOR 0 RETLW B'11111001' ;1. VALOR 1 RETLW B'10100100' ;2. VALOR 2 RETLW B'10110000' ;3. VALOR 3 RETLW B'10011001' ;4. VALOR 4 RETLW B'10010010' ;5. VALOR 5 RETLW B'10000011' ;6. VALOR 6 RETLW B'11111000' ;7. VALOR 7 RETLW B'10000000' ;8. VALOR 8 RETLW B'10011000' ;9. VALOR 9 RETLW B'10001000' ;10. A RETLW B'10000011' ;11. b RETLW B'11000110' ;12. C RETLW B'10100001' ;13. d RETLW B'10000110' ;14. E RETLW B'10001110' ;15. F RETLW B'10010000' ;16. g RETLW B'10001001' ;17. H RETLW B'11001111' ;18. I RETLW B'11100001' ;19. J RETLW B'11000111' ;20. L RETLW B'10101011' ;21. n RETLW B'10100011' ;22. o RETLW B'10001100' ;23. P
  • 21. RETLW B'10101111' ;24. r RETLW B'10010010' ;25. S RETLW B'11000001' ;26. U RETLW B'10010001' ;27. Y RETLW B'10101011' ;28. SIMBOLO1 RETLW B'10101010' ;29. SIMBOLO2 RETLW B'11001001' ;30. SIMBOLO3 RETLW B'11011100' ;31. SIMBOLO4 RETLW B'11110000' ;32. SIMBOLO5 RETLW B'10011100' ;33. SIMBOLO6 RETLW B'10110110' ;34. SIMBOLO NIVEL ALTO RETLW B'10110111' ;35. SIMBOLO NIVEL MEDIO RETLW B'11110111' ;36. SIMBOLO NIVEL BAJO ;LÍMITE DE TABLA2= 37 (DEL 0 AL 36) ;;;RUTINA 5MS GENERADA DEL PDEL; DELAY5MS movlw .248 ; 1 set numero de repeticion movwf PDel0 ;1| PLoop0 clrwdt ; 1 clear watchdog decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? goto PLoop0 ; 2 no, loop PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 clrwdt ; 1 ciclo delay return ; 2+2 Fin. ;;;RUTINA 0,5SEG GENERADA DEL PDEL RET05S NOP ret5 movlw .245 ; 1 set numero de repeticion (B) movwf PDel0A ;1| PLoop1X movlw .254 ; 1 set numero de repeticion (A) movwf PDel1 ;1| PLoop2X clrwdt ; 1 clear watchdog decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A) goto PLoop2X ; 2 no, loop decfsz PDel0A, 1 ; 1 + (1) es el tiempo 0 ? (B) goto PLoop1X ; 2 no, loop PDelL1X goto PDelL2X ; 2 ciclos delay PDelL2X clrwdt ; 1 ciclo delay
  • 22. return END ; FIN DEL PROGRAMA Circuito en Proteus:
  • 23. Ejemplo 4. Semáforo 4 esquinas simple. En este ejemplo se muestra el uso de dos tablas, una para mostrarse por el puerto A y otra para mostrarse por el puerto B. Ambos puertos manipulan los 12 bombillos que poseería el semáforo 4 esquinas. El diagrama de flujo muestra los estados de tiempo largo, cuando el semáforo esta en rojo o en verde y los estados de tiempo corto, cuando está en amarillo. Este ejemplo es limitado a un semáforo sencillo de 4 esquinas, sin embargo puede modificarse separando cada etapa con tiempos distintos a los que se muestran a continuación.
  • 24. Diagrama de flujo INICIO MOSTRAR TABLA1 Declarar registro: CONTA → W W + PCL → PCL CONTA, CONTA2,PDel0, PDel1 TABLA1 Retornamos con el valor Configurar en W extraido de la tabla Puerto A y B correspondiente al W → PORTB Puerto B Inicializar registros: CONTA, CONTA2 CONTA → W Return Puerto A y B TABLA2 TABLA2 NO ¿Se pulsó INICIO? W → PORTA SI W + PCL → PCL 1 Return MOSTRAR Retornamos con el valor en W extraido de la tabla correspondiente al Delay 30 seg Puerto A CONTA= CONTA +1 Return MOSTRAR Delay 5 seg NO CONTA= CONTA +1 ¿CONTA=7? 1 SI CONTA= 0 1
  • 25. Delay 30 seg Delay 5 seg Inicializar registro: Inicializar registro: CONTA2 CONTA2 Delay 1 seg Delay 1 seg NO NO CONTA2= CONTA2 +1 ¿CONTA2=29? CONTA2= CONTA2 +1 ¿CONTA2=4? SI SI Return Return Delay 1 segundo La sacamos del PDEL Return LIST P=16F84A INCLUDE P16F84A.INC CONTA EQU 20H ;Registro contador de estados del semáforo CONTA2 EQU 21H ;Registro para las rutinas de tiempo de 30 y 5 segundos PDel0 EQU 22H ;Registros para las rutinas de tiempo de 1 segundo PDel1 EQU 23H PDel2 EQU 24H ORG 00H GOTO INICIO INICIO BSF STATUS,5 CLRF TRISB ;Puerto B como salida MOVLW B'00010000' ;RA4= Entrada y el Resto como salidas MOVWF TRISA BCF STATUS,5
  • 26. CLRF CONTA ;INICIALIZAMOS LOS REGISTROS Y PUERTOS CLRF CONTA2 CLRF PORTA CLRF PORTB NCICLO CALL MOSTRAR CALL DELAY30S ;Se inicia la primera cuenta del 1er estado INCF CONTA,1 CALL MOSTRAR ;Se llama a subrutina mostrar CALL DELAY5S ;Se espera el estado amarillo MOVLW 07H SUBWF CONTA,0 ;Se pregunta si se llegó al final de los estados ;del semáforo BTFSS STATUS,2 GOTO SUBE CLRF CONTA GOTO NCICLO SUBE INCF CONTA,1 GOTO NCICLO ;*************************************************** ;RUTINA PARA MOSTRAR LOS DATOS EXTRAIDOS DE LA TABLA ;POR LOS PUERTOS A Y B ;*************************************************** MOSTRAR MOVF CONTA,0 CALL TABLA1 MOVWF PORTB MOVF CONTA,0 CALL TABLA2 MOVWF PORTA RETURN ;******************************** ;RUTINA DE RETARDO DE 30 SEGUNDOS ;******************************** DELAY30S CLRF CONTA2 OTRO CALL RET1S MOVLW D'10' SUBWF CONTA2,0 BTFSS STATUS,2 GOTO PREVIO
  • 27. RETURN PREVIO INCF CONTA2,1 GOTO OTRO ;******************************* ;RUTINA DE RETARDO DE 5 SEGUNDOS ;******************************* DELAY5S CLRF CONTA2 OTRO2 CALL RET1S MOVLW D'4' SUBWF CONTA2,0 BTFSS STATUS,2 GOTO PREVIO2 RETURN PREVIO2 INCF CONTA2,1 GOTO OTRO2 ;************************************************** ;RUTINA DE TIEMPO DE 1 SEGUNDO GENERADA POR EL PDEL ;************************************************** RET1S movlw .14 ; 1 set numero de repeticion (C) movwf PDel0 ; 1 | PLoop0 movlw .72 ; 1 set numero de repeticion (B) movwf PDel1 ; 1 | PLoop1 movlw .247 ; 1 set numero de repeticion (A) movwf PDel2 ; 1 | PLoop2 clrwdt ; 1 clear watchdog decfsz PDel2, 1 ; 1 + (1) es el tiempo 0 ? (A) goto PLoop2 ; 2 no, loop decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (B) goto PLoop1 ; 2 no, loop decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (C) goto PLoop0 ; 2 no, loop PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 clrwdt ; 1 ciclo delay return ; 2+2 Fin.
  • 28. ;************************************* ;TABLA QUE CONTIENE EL ESTADO DE LOS ;BOMBILLOS CONTROLADOS POR EL PUERTO B ;************************************** TABLA1 ADDWF PCL,1 RETLW B'10110011' ;4CH; RETLW B'10110101' ;4AH; RETLW B'10011110' ;61H; RETLW B'10101110' ;51H; RETLW B'11110110' ;09H; RETLW B'01110110' ;89H; RETLW B'10110110' ;49H; RETLW B'10110110' ;49H; ;************************************* ;TABLA QUE CONTIENE EL ESTADO DE LOS ;BOMBILLOS CONTROLADOS POR EL PUERTO A ;************************************* TABLA2 ADDWF PCL,1 RETLW B'00001101' ;02H; RETLW B'00001101' ;02H; RETLW B'00001101' ;02H; RETLW B'00001101' ;02H; RETLW B'00001100' ;03H; RETLW B'00001101' ;02H; RETLW B'00000111' ;08H; RETLW B'00001011' ;04H; END