✅RUTINAS de TIEMPO en el PIC | MUY DIDÁCTICO 💯| PROGRAMACIÓN ENSAMBLADOR #06

Поділитися
Вставка
  • Опубліковано 7 січ 2025

КОМЕНТАРІ • 15

  • @froylancruzalmerayacarreon7825

    Muy bien explicado, toma tu merecido like

  • @adonaygutierrez7679
    @adonaygutierrez7679 4 роки тому +3

    Dios bendiga a este hombre
    Al fin comprendo
    Muchismas gracias!
    Nuevo sub.

  • @jose6491
    @jose6491 2 роки тому

    Excelente video

  • @bravoestradarafaelmilton9386
    @bravoestradarafaelmilton9386 4 роки тому

    Buen video, me ayudo mucho y muy bien explicado, gracias.

  • @irvinriverabadillo9060
    @irvinriverabadillo9060 5 років тому

    Que buen vídeo, muchas gracias por ser preciso y didacta

  • @oscarmonroysantos7128
    @oscarmonroysantos7128 6 років тому +1

    Wow, ¡excelente video!

    • @LesIngenieurs
      @LesIngenieurs  6 років тому

      Saludos y muchas gracias por tu comentario

  • @luisni3735
    @luisni3735 4 роки тому +2

    este procedimiento (el de rutina de decremento) es el único para hacer retardos en assembler?

  • @keilamenbla3797
    @keilamenbla3797 3 роки тому +1

    te amo

  • @albertomurillo3231
    @albertomurillo3231 2 роки тому

    HOLA: Este programa trata de temporizar, 5 segundos un led cuando el interruptor I1 está en 1 y cuando esta en 0 salta a BUCLE.
    I1 LED
    0 BUCLE
    1 5 SEGUNDOS
    POR FAVOR ME PUEDEN AYUDAR EN LA PARTE DE LAS RUTINAS DE : DELAY 5S, ¿COMO CALCULA EL PROGRAMA EL TIEMPO PARA ENCENDER EL LED POR 5S Y APAGARLO POR 2S LED?
    POR EJEMPLO: EN EL TRAT _1 , se llama a la rutina DELAY5S, 5 SEGUNDOS (SE QUE LAS INSTRUCCIONES DE SALTO TARDAN 2 MICROSEGUNDOS Y LAS NORMALES 1 MICROSEGUNDO CON UN XL=4MHZ)
    COMO SEVE EN EL PROGRAMA HAY UNA RUTINA AUXILIAR LA CUAL HACE QUE SE DESBORDE EL TMR0 = 0XD9= 217 O SEA CUENTA 39
    Y ESTE A SU VEZ DECREMENTA UN REGISTRO AUXILIAR LLAMADO TEMPO1 Y ES CARGADO CON 100.
    GRACIAS..
    EL PROGRAMA FUNCIONA PERFECTO CUANDO LO MONTE EN LA PLACA DE ENTRENAMIENTO
    PERO QUIERO SABER LOS PASOS QUE REALIZA EL PROGRAMA PARA TRATAR POR EJEMPLO EL DELAY DE SEGUNDOS (COMO HACE PARA CALCULAR DICHO TIEMPO DE 5SEGUNDOS)
    GRACIAS.
    LIST P=16F84A
    RADIX HEX

    INCLUDE "P16F84A.INC"
    W EQU 0X00 ;Registro de destino W:d=0
    F EQU 0X01 ;Registro de destino F:d=1
    Z EQU 0X02 ;Bit2 del registro ESTADO
    TMR0_OPT EQU 0X01 ;El registro tmr0 ocupa la dirccion 1
    ;de banco 1
    ESTADO EQU 0X03 ;El registro ESTADO ocupa la direccion
    ;3 de los dos bancos
    INTCON EQU 0X0B ;El registro INTCON ocupa la direccion
    ;0x0B de los dos bancos
    PUERTAA EQU 0X05 ;La PUERTAA ocupa la dirrecion 5 del
    ;banco 0 y su reguistro de configuracion
    ;la direcicion 5 del banco 1
    PUERTAB EQU 0x06 ;La PUERTAB ocupa la dirección 6 del
    ;banco 0 y su registro de configuración
    ;la dirección 6 del banco 1
    AUX EQU 0x0c ;Registro auxiliar en el que se carga el
    ;estado del interruptor
    TEMPO1 EQU 0x0E ;Registro auxiliar para las rutinas de
    ;DELAY
    ORG 0 ;El programa comienza en la dirección 0 y
    goto INICIO ;salta a la dirección 5 para sobrepasar el
    ORG 5 ;vector de interrupción

    INICIO bsf ESTADO,5 ;Selección del banco 1
    movlw b'00000001' ;Se configuran RAO como
    movwf PUERTAA ;entradas
    clrf PUERTAB ;Se configura la PUERTAB como salida
    movlw b'00000111'
    movwf TMR0_OPT ;Se asigna el preescaler al TMR0
    bcf ESTADO,5 ;Selección del banco 0
    clrf PUERTAA ;Se inicializan las puertas a
    clrf PUERTAB ;ceros
    BUCLE call DELAY2S ;Se deja tiempo para que el usuario cambie el
    ;el estado 1/0
    movf PUERTAA,W ;Se pasa el contenido de la PUERTAA a un registro
    movwf AUX ;auxiliar. Dicho registro habrá que pasarlo a W antes
    ;de cada operación XORLW, ya que la anterior habrá
    ;cambiado su valor
    xorlw b'000000001' ;Se hacen sucesivas máscaras para saber qué
    ;combinación se ha introducido
    ;Explora el bit2 de ETADO
    btfsc ESTADO,Z ;Z1:Hasido 0? Z0:No ha sido 0?
    goto TRAT_1 ;salta a trat_1 si reultado es w=0
    goto BUCLE
    ;RUTINA PARA LA COMBINACIÓN I1=1
    TRAT_1 bsf PUERTAB,1 ;Se enciende el LED de RB1 (verde)
    call DELAY5S ;Se espera los segundos adecuados según I1
    bcf PUERTAB,1 ;Se apaga el LED verde
    FIN goto BUCLE ;Bucle para repetir el tratamiento completo
    ;RUTINA AUXILIAR DE DELAY
    DELAY10 bcf INTCON,2 ;Borra el flag de estado del TMRO
    movlw 0xD9
    movwf TMR0_OPT ;Carga del TMRO para que cuente 39
    DELAY10_1 btfss INTCON,2 ;Espera el desbordamiento del TMR0
    goto DELAY10_1
    decfsz TEMPO1,F
    goto DELAY10
    return
    ;RUTINA DE DELAY DE UN SEGUNDO
    DELAY1S movlw 0x64
    movwf TEMPO1 ;Carga la variable TEMPO1,que será
    ;decrementada
    call DELAY10 ;en la rutina a la que se llama
    return
    ;RUTINA DE DELAY DE DOS SEGUNDOS
    DELAY2S call DELAY1S
    call DELAY1S
    return
    ;RUTINA DE DELAY DE CINCO SEGUNDOS
    DELAY5S call DELAY2S
    call DELAY2S
    call DELAY1S
    return
    END

  • @erikmendoza1535
    @erikmendoza1535 4 роки тому

    DISCULPE SABE CUAL ES TIEMPO QUE TARDA UN MICROCONTROLADOR EN REDUCIR LA VARIABLE A 255 A 0

  • @jaironavarro8303
    @jaironavarro8303 3 роки тому

    Disculpa, a que te refieres que a partir de la dirección 20 tienes direcciones libres?

    • @beney_11
      @beney_11 3 роки тому +2

      En los microcontroladores hay diferentes direcciones. Algunas de ellas vienen con funciones de de fábrica (por ejemplo el TRISB, PORTB, el registro ADCON1...) Son funciones que vienen programas para una tarea en concreto (como sería cambiar entre analógico o digital en el caso de ADCON1 o cambiar entre entradas y salidas mediante TRISB). En el microcontrolador del vídeo, que se trata del PIC16F877A a partir de la dirección 20 del primer banco de la memoria RAM de datos, hay unos registro que se llaman registros de propósito general. Es decir registros para uso a gusto del usuario. Son registros a los cuales tú les vas a indicar la función que quieres que cumplan (como un contador por ejemplo). Si buscas en internet memoria ram de datos pic16f877a, en imágenes tendrás todas las direcciones y la función que cumple cada una. Espero haberme explicado bien. Ya han pasado dos meses desde que preguntaste así que imagino que ya resolviste tu duda antes. Aún así ahí tienes la explicación.

  • @CrisDFF30917
    @CrisDFF30917 Рік тому

    Y que tal si deseo un retardo de 1us?

  • @albertomurillo3231
    @albertomurillo3231 2 роки тому +1

    -----------------------------------------------------------------------------------------------------------------------------
    HOLA: Esta parte de programa se trata de un semáforo programado, que según los interruptores I2 e I1 provocan una secuencia de encendido de los LEDS: Rojo, Ambar y Verde. con un retardo según la tabla 10, 8, 5, 2 segundos.
    I2 I1 VERDE AMBAR ROJO = LEDS
    TRAT 0 0 5 s 2 10 = TIEMPOS
    TRAT 0 1 5 s 2 10 = TIEMPOS
    TRAT 1 0 8 s 2 8 = TIEMPOS
    TRAT 1 1 10 s 2 5 = TIEMPOS

    Tiene 4 rutinas de TraTamiento de acuerdo a la combinación; TRAT_0_0, TRAT_1_0, TRAT_0_1, TRAT_1_1.
    POR FAVOR ME PUEDEN AYUDAR EN LA PARTE DE LAS RUTINAS DE ; DELAY 10S, DELAY 8S, DELAY 5S, DELAY 2S, QUE CONTROLAN EL TIEMPO PARA CADA LED ROJO, AMBAR, VERDE ¿COMO CALCULA EL PROGRAMA EL TIEMPO PARA CADA LED?
    POR EJEMPO: EN EL TRAT 01 , EL LED VERDE TARDA 5 SEGUNDOS (SE QUE LAS INSTRUCCIONES DE SALTO TARDAN 2 MICROSEGUNDOS Y LAS NORMALES 1 MICROSEGUNDO CON UN XL=4MHZ)
    COMO SEVE EN EL PROGAMA HAY UNA RUTINA AUXILIAR LA CUAL HACE QUE SE DESBORDE EL TMR0 = 0XD9= 217 O SEA CUENTA39
    Y ESTE A SUVEZ DECREMENTA UN REGISTRO AUXILIAR LLAMADO TEMPO1 Y ES CARGADO CON 100.
    GRACIAS..
    EL PROGRAMA FUNCIONA PERFECTO CUANDO LO MONTE EN LA PLACA DE ENTRENAMIENTO
    PERO QUIERO SABER LOS PASOS QUE REALIZA EL PROGRAMA PARA TRATAR POR EJEMPLO EL DELAY DE 5 SEGUNDOS (call DELAY5S)
    ;RUTINA PARA LA COMBINACIÓN I2=0 I1=0
    TRAT_0_0 bsf PUERTAB,1 ;Se enciende el LED de RB1 (verde)
    call DELAY5S ;Se espera los segundos adecuados según I1 e I2
    bcf PUERTAB,1 ;Se apaga el LED verde
    bsf PUERTAB,3 ;Se enciende el LED de RB3 (ámbar)
    call DELAY2S ;Se apaga el LED ámbar;
    bcf PUERTAB,3 ;Se espera los segundos adecuados
    bsf PUERTAB,5 ;Se enciende el LED de RB5 (rojo)
    call DELAY5S ;Se espera los segundos adecuados
    bcf PUERTAB,5 ;Se apaga el LED rojo
    goto FIN
    ;RUTINA AUXILIAR DE DELAY
    ---------------------------------------------------------
    DELAY10 bcf INTCON,2 ;Borra el flag de estado del TMR0
    movlw 0xD9
    movwf TMR0_OPT ;Carga del TMRO para que cuente 39
    DELAY10_1 btfss INTCON,2 ;Espera el desbordamiento del TMR0
    goto DELAY10_1
    decfsz TEMPO1,F
    goto DELAY10
    return
    ------------------------------------------------------------
    ;RUTINA DE DELAY DE UN SEGUNDO
    DELAY1S movlw 0x64
    movwf TEMPO1 ;Carga la variable TEMPO1, que será
    ;decrementada
    call DELAY10 ;en la rutina a la que se llama
    return
    ;RUTINA DE DELAY DE DOS SEGUNDOS
    DELAY2S call DELAY1S
    call DELAY1S
    return
    ;RUTINA DE DELAY DE CINCO SEGUNDOS
    DELAY5S call DELAY2S
    call DELAY2S
    call DELAY1S
    return
    ;RUTINA DE DELAY DE OCHO SEGUNDOS
    DELAY8S call DELAY5S
    call DELAY2S
    call DELAY1S
    return
    ;RUTINA DE DELAY DE DIEZ SEGUNDOS
    DELAY10S call DELAY5S
    call DELAY5S
    return
    END
    No pude subir el programa completo youtube me lanza este error
    Returned error