Autor Tema: me pueden ayudar porfa  (Leído 184 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado joel06

  • PIC10
  • *
  • Mensajes: 1
me pueden ayudar porfa
« en: 16 de Junio de 2021, 00:19:19 »

porfa ayuden

a)   Realizar la variacion del programa para mostrar el dato binario en ya no en un display sino en 8 leds en el Puerto B pero solo se mostrara las decenas y unidades en codigo BCD



; ZONA DE DATOS **********************************************************************
 __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST      P=16F84A
   INCLUDE  <P16F84A.INC>

   Centenas   equ             0x0C         
   Decenas   equ             0x0D      
   Unidades   equ             0x0E      
   Contador1    equ             0x0F    ; Registro utilizado en demora.-
   Contador2    equ             0x10    ; Registro utilizado en demora.-
   Contador     equ             0x11    ; Control de Refresco de Display.-
 
   MuestroU        equ             3       ; Para control del 1º Display unidades
   MuestroD        equ             2       ; Para control del 2º Display decenas
   MuestroC        equ             1       ; Para control del 3º Display centenas
   

Numero   EQU   .235         ; Por ejemplo.

; ZONA DE CÓDIGOS ********************************************************************

   ORG    0         ; El programa comienza en la dirección 0.
Inicio
   bsf   STATUS,RP0      ; Acceso al Banco 1.
   clrf   TRISA
   clrf   TRISB         ; Las líneas del Puerto B se configuran como salida.
   bcf   STATUS,RP0      ; Acceso al Banco 0.
Principal
   clrf   Centenas      ; Carga los registros con el resultado inicial.
   clrf   Decenas      ; En principio (Centenas)=0 y (Decenas)=0.
   movlw   Numero
   movwf   Unidades      ; Se carga el número binario a convertir.
BCD_Resta10
   movlw   .10         ; A las unidades se les va restando 10 en cada
   subwf   Unidades,W      ; pasada. (W)=(Unidades)-10.
   btfss   STATUS,C      ; ¿(C)=1?, ¿(W) positivo?, ¿(Unidades)>=10?.
   goto    BIN_BCD_Fin      ; No, es menor de 10. Se acabó.
BCD_IncrementaDecenas
   movwf   Unidades      ; Recupera lo que queda por restar.
   incf   Decenas,F      ; Incrementa las decenas y comprueba si llega a
   movlw   .10         ; 10. Lo hace mediante una resta.
   subwf   Decenas,W      ; W)= (Decenas)-10.
   btfss   STATUS,C      ; ¿(C)=1?, ¿(W) positivo?, ¿(Decenas)>=10?.
   goto   BCD_Resta10      ; No. Vuelve a dar otra pasada, restándole 10.
BCD_IncrementaCentenas
   clrf   Decenas      ; Pone a cero las decenas
   incf   Centenas,F      ; e incrementa las centenas.
   goto   BCD_Resta10      ; Otra pasada, resta 10 al número a convertir.
BIN_BCD_Fin
   swapf   Decenas,W      ; En el nibble alto de W también las decenas.
   addwf   Unidades,W      ; En el nibble bajo de W las unidades.
   goto   Actualizo_Display  ; Salto a inicio de mi programa.-
                       
;**** Tabla de conversion BCD a 7 Segmentos ****
; Se coloca al inicio para asegurar ubicación en Pagina.-
      ;  org     0x05           ; Origen del código de tabla.-
BCD7SEG                         ; retlw b'gfedcba'  para display ANODO comun
        addwf   PCL,1           ; Se incrementa el contador del programa.-
        DT 0X40, 0X79, 0X24, 0X30, 0X19, 0X12, 0X02, 0X78, 0X00, 0X10

;**** Se multiplexan los Display ****   
Actualizo_Display
        movlw   .20         ; Cargo Contador = 20
        movwf   Contador       ; Para repeticiones de visualizacion del mismo valor
                               ; durante 150 ms.-
Refresco
        movf    Unidades,W        ; Obtengo codigo de 7 Segmentos para Unidad.-
        call    BCD7SEG         ;
        bcf     PORTA,MuestroC  ; Apago Display de Centena, Se entiende al mirar rutina.-
        movwf   PORTB           ; Cargo unidad en PORTB.-
        bsf     PORTA,MuestroU  ; Enciendo Display de Unidad.-
        call    Demora_5ms   
           
        movf    Decenas,W        ; Obtengo codigo 7 Segmentos para Decena.-
        call    BCD7SEG
        bcf     PORTA,MuestroU  ; Apago Display de Unidad.-
        movwf   PORTB                   ; Cargo PORTB con Decena.-     
        bsf     PORTA,MuestroD  ; Enciendo Display de Decena.-
        call    Demora_5ms
       
        movf    Centenas,W         ; Obtengo codigo de 7 Segmentos para Centena.-
        call    BCD7SEG
        bcf     PORTA,MuestroD  ; Apago Display de Decena.-
        movwf   PORTB                   ; Cargo PORTB con Centena.-
        bsf     PORTA,MuestroC  ; Enciendo Display Centena.-
        call    Demora_5ms
                     
        decfsz  Contador,F              ; Pregunto si ya se ha repetido 10 veces el ciclo?
        goto    Refresco                ; No, repito.-
        goto    Actualizo_Display       ; Si, actualizo cuenta.-
;**** Demora ****
Demora_5ms
        movlw   .05                   ;
        movwf   Contador1               ; Iniciamos contador1.-
Repeticion1
        movlw   .249                    ;
        movwf   Contador2               ; Iniciamos contador2
Repeticion2
     nop
        decfsz  Contador2,1             ; Decrementa Contador2 y si es 0 sale.-         
        goto    Repeticion2             ; Si no es 0 repetimos ciclo.-
        decfsz  Contador1,1             ; Decrementa Contador1.-
        goto    Repeticion1             ; Si no es cero repetimos ciclo.-
        return                          ; Regresa de la subrutina.-
 
       
     END            ; Fin del programa.

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Impresiones en 3D
Re:me pueden ayudar porfa
« Respuesta #1 en: 16 de Junio de 2021, 09:18:12 »
Hola Joel.
¿Y cuál es el problema?
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 513
Re:me pueden ayudar porfa
« Respuesta #2 en: 16 de Junio de 2021, 10:01:34 »

porfa ayuden

....... copypaste........

Ayuda a que te ayuden.  Describí lo que te está pasando.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8121
Re:me pueden ayudar porfa
« Respuesta #3 en: 16 de Junio de 2021, 19:00:04 »
Sacando gran parte del programa que tiene y escribiendo 3 instrucciones y listo... Ya tendria su programa ...

Pero si ese programa no lo hizo el usuario, entonces no va a tener idea de que hacer..

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Impresiones en 3D
Re:me pueden ayudar porfa
« Respuesta #4 en: 21 de Junio de 2021, 10:21:37 »
Joel ni se volvió a conectar.
Evidentemente es el típico usuario que entra en cada foro y hace la misma pregunta.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.


 

anything