SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
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:

Más contenido relacionado

La actualidad más candente

Programacion en WinCupl
Programacion en WinCuplProgramacion en WinCupl
Programacion en WinCuplGilbert_28
 
Circuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronosCircuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronosAlexa Ramirez
 
Diseño de un Amplificador de Audio
Diseño de un Amplificador de AudioDiseño de un Amplificador de Audio
Diseño de un Amplificador de AudioByron Ganazhapa
 
Sistemas lineales invariantes en el tiempo
Sistemas lineales invariantes en el tiempoSistemas lineales invariantes en el tiempo
Sistemas lineales invariantes en el tiempoMari Colmenares
 
Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Julio Daniel Ruano
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flopsJimmy Osores
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABJose Agustin Estrada
 
Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555Israel Magaña
 
DiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo JkDiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo Jkguestff0bcb9e
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comuniscped
 
Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.
Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.
Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.Angel Perez
 
Unidad III: Polos y Ceros de una función de transferencia.
Unidad III: Polos y Ceros de una función de transferencia.Unidad III: Polos y Ceros de una función de transferencia.
Unidad III: Polos y Ceros de una función de transferencia.Mayra Peña
 
Amplificador operacional
Amplificador operacionalAmplificador operacional
Amplificador operacionalTensor
 
Proyectos de control de lazo cerrado
Proyectos de control de lazo cerradoProyectos de control de lazo cerrado
Proyectos de control de lazo cerradoibcalu
 

La actualidad más candente (20)

Programacion en WinCupl
Programacion en WinCuplProgramacion en WinCupl
Programacion en WinCupl
 
Circuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronosCircuitos secuenciales sincronos y asincronos
Circuitos secuenciales sincronos y asincronos
 
Diseño de un Amplificador de Audio
Diseño de un Amplificador de AudioDiseño de un Amplificador de Audio
Diseño de un Amplificador de Audio
 
Sistemas lineales invariantes en el tiempo
Sistemas lineales invariantes en el tiempoSistemas lineales invariantes en el tiempo
Sistemas lineales invariantes en el tiempo
 
Sumador\Restador
Sumador\RestadorSumador\Restador
Sumador\Restador
 
Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)
 
Latches y flip flops
Latches y flip flopsLatches y flip flops
Latches y flip flops
 
Señales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLABSeñales de tiempo continuo y discreto MATLAB
Señales de tiempo continuo y discreto MATLAB
 
Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555Pulsos de reloj de Circuito integrado 555
Pulsos de reloj de Circuito integrado 555
 
Ejercicios circuitos i
Ejercicios circuitos iEjercicios circuitos i
Ejercicios circuitos i
 
Señales y sistemas
Señales y sistemasSeñales y sistemas
Señales y sistemas
 
3.5. Configuración en Colector Común
3.5. Configuración en Colector Común3.5. Configuración en Colector Común
3.5. Configuración en Colector Común
 
Tipos de Osciladores
 Tipos de Osciladores Tipos de Osciladores
Tipos de Osciladores
 
Practica0,1,2,3,4
Practica0,1,2,3,4Practica0,1,2,3,4
Practica0,1,2,3,4
 
DiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo JkDiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo Jk
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comun
 
Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.
Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.
Tabla de Dualidad Transformada Z, Transformada de LaPlace y Discreta.
 
Unidad III: Polos y Ceros de una función de transferencia.
Unidad III: Polos y Ceros de una función de transferencia.Unidad III: Polos y Ceros de una función de transferencia.
Unidad III: Polos y Ceros de una función de transferencia.
 
Amplificador operacional
Amplificador operacionalAmplificador operacional
Amplificador operacional
 
Proyectos de control de lazo cerrado
Proyectos de control de lazo cerradoProyectos de control de lazo cerrado
Proyectos de control de lazo cerrado
 

Destacado

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
 

Destacado (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 a 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 a 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
 

Más de 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
 

Más de 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
 

Último

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
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
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 

Último (20)

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
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
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
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
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 

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