Autor Tema: reloj digital (problema solucionado)  (Leído 2800 veces)

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

Desconectado dagoh73

  • PIC10
  • *
  • Mensajes: 13
reloj digital (problema solucionado)
« en: 10 de Mayo de 2009, 20:13:40 »
hola a todos.
Estoy empezando en este mundo del microcontrolador. Mi primer proyecto con un pic 16f877a a 20MHZ fue hacer un reloj digital de 4 digitos, el reloj funciona bien, ya esta montado en plaqueta, pero tuve un tropiezo, la cantidad de ciclos no corresponde con el tiempo de ciclo, haber si voy bien, 300000000 ciclos a 200ns serian 60seg. Pero en el programa 266000000 ciclos a 200ns me da un tiempo de 60seg.   :o .Con la ayuda de un osciloscopio verifique  que el cristal estara trabajando a 20MHZ y 200ns el tiempo de ciclo como dice microchip, la prueba fue exitosa. Tambien fue verificado la cantidad de ciclos por el MPLAB y con calculos sobre el programa y los dos dan lo mismo 266000000 ciclos aprox..
Pregunto si alguien sabe por que se da esta diferencia de tiempos, Hay algo que no he tomado encuenta. Gracias
« Última modificación: 16 de Mayo de 2009, 08:18:48 por dagoh73 »

Desconectado dagoh73

  • PIC10
  • *
  • Mensajes: 13
Re: reloj digital
« Respuesta #1 en: 12 de Mayo de 2009, 19:50:46 »
Aca dejo el  programa para ver si se entiende mas facil. gracias      

                        #INCLUDE <P16F877A.inc>
         LIST P=16F877A



RT1         EQU 20H
VALOR1       EQU 21H
VALOR2       EQU 22H
VALOR3      EQU 23H
VALOR4          EQU 24H
CONT3       EQU 25H
CONT4      EQU 26H
CONT5           EQU 27H
CONT6      EQU 28H
RT2      EQU 29H
HORA1      EQU 2AH
HORA2      EQU 2BH      
RT3             EQU 2CH
BANDERA      EQU 2DH      
BANDERA1   EQU 2EH
RT4      EQU 2FH
ALAR1      EQU 30H
ALAR2      EQU 31H
ALAR3      EQU 32H
ALAR4      EQU 33H
BANDERA3    EQU 34H
BANDERA4   EQU 35H
CON1      EQU 36H
CON2      EQU 37H
CON3      EQU 38H
CON4      EQU 39H
VUELTA          EQU 3AH
BAND2           EQU 3BH   



      ORG         0x00   
      CLRF            STATUS
      CLRF            PORTB
      BSF       STATUS,.5
      CLRF      TRISB
      CLRF      STATUS
      CLRF            PORTB
      BSF       STATUS,.5
      CLRF      TRISC
      ;BCF      OPTION_REG,.7
      CLRF      STATUS
      BSF       STATUS,.5
      MOVLW           .247
      MOVWF      TRISD
      ;BCF      OPTION_REG,.7
      CLRF      STATUS
      MOVLW       .0      ;CARGA W CON 7.
      MOVWF       VALOR1       ;LLEVA 7 A VALOR 2.
      MOVLW       .0      ;CARGA W CON 5.
      MOVWF       VALOR2       ;LLEVA 5 A VALOR 1.
                MOVLW       .0       ;CARGA W CON 7.
      MOVWF       VALOR3       ;LLEVA 7 A VALOR 2.
      MOVLW       .0       ;CARGA W CON 5.
      MOVWF       VALOR4       ;LLEVA 5 A VALOR 1.
      MOVLW       .10       ;CARGA W CON 7.
      MOVWF       HORA1       ;LLEVA 7 A VALOR 2.
      MOVLW       .4       ;CARGA W CON 5.
      MOVWF       HORA2       ;LLEVA 5 A VALOR 1.
      MOVLW           .20
      MOVWF           BANDERA 
      MOVLW           .2
      MOVWF           BANDERA1 
      MOVLW           .1
      MOVWF           VUELTA
      BCF             PORTD,.3
      GOTO        RETARDO1                 
      
   

;************************************************************************************************         
RESET   MOVLW           .20
   MOVWF           BANDERA
   MOVLW           .2
   MOVWF           BANDERA1
   MOVLW       .0
        MOVWF      VALOR3
        MOVLW      .0
        MOVWF      VALOR4
   GOTO       RETARDO1   
;***********************************************************************************************
HD1   MOVLW           .0
   MOVWF           VALOR3
   MOVLW           .1
   MOVWF           VALOR4
   GOTO       RETARDO1
          
HD2    MOVLW           .2
   MOVWF           VALOR4
   MOVLW           .1
   MOVWF           BANDERA
        INCF            VALOR3,F
   DECFSZ      BANDERA1,F
   GOTO      H
   GOTO            C1
H   MOVLW           .0
   MOVWF           VALOR3
C1   MOVLW           .1
   MOVWF           BANDERA1
   MOVLW      .4       
   XORWF      VALOR3,W
        BTFSC       STATUS,2
        GOTO       RESET
   GOTO      RETARDO1

;********************* VA A TABLA POR LA UNIDAD DE LAS HORAS ************************************      
HU      MOVLW           .0
   MOVWF           VALOR2   
      
HU3   DECFSZ      BANDERA,F
   GOTO      HU1
   GOTO      HD2
HU1   INCF       VALOR3,F
   MOVLW       .10                 
        XORWF      VALOR3,W
        BTFSC       STATUS,2
        GOTO      HD1
   GOTO       RETARDO1
         
;********************* VA A TABLA POR LA DECENA DE LOS MINUTOS ************************************      
MD     MOVLW           .0
   MOVWF           VALOR1
     INCF       VALOR2,F
   MOVLW       .6                  ;COMPARA CONTADOR CON 10
        XORWF      VALOR2,W
        BTFSC       STATUS,2
        GOTO      HU
        GOTO       RETARDO1


;*********************** VA A TABLA POR LA UNIDAD DE LOS MINUTOS*************************************
         
MU     INCF       VALOR1,F
       MOVLW       .10                  ;COMPARA CONTADOR CON 10
       XORWF      VALOR1,W
       BTFSC       STATUS,2
       GOTO       MD
       GOTO       RETARDO1   

RETARDO1                ;BTFSS  PORTD,.5
         ;GOTO    V2
         ;GOTO    VALAR
   
V2           BTFSS           PORTD,.2
             GOTO           V3
             GOTO           PALAR
V3           BTFSS           PORTD,.0
             GOTO            V4         
             GOTO           PMIN   
V4           BTFSS           PORTD,.1
             GOTO       V5         
             GOTO      PHORA   
   

V5          MOVLW           .1
            XORWF      BAND2,W
            BTFSS      STATUS,2
            GOTO              LOOP5T   
            MOVF            CON1,W
            MOVWF            VALOR1
            MOVF           CON2,W
            MOVWF           VALOR2
            MOVF           CON3,W
            MOVWF           VALOR3
            MOVF           CON4,W
            MOVWF           VALOR4
           MOVLW            .1
            MOVWF            VUELTA   
            MOVLW            .2
            MOVWF            BAND2      
            GOTO             LOOP5T                   
         
LOOP5T     ;MOVLW       10            
            ;MOVWF          CONT4
           MOVLW       .188            
         MOVWF           CONT5
;LOOP1T           
      BCF      PORTD,.3
      MOVLW       .240            
         MOVWF           CONT6         
         
            
LOOP1      MOVF       VALOR1,W       ;LLEVA VALOR 1 A W.
      CALL      TABLA
      MOVWF       PORTB               ;LLEVA EL VALOR 7 SEG AL PUERTO B.
      NOP
      NOP
      BCF         PORTC,.3
      NOP
      NOP
      BCF         PORTC,.1
      NOP
      NOP
      BCF         PORTC,.2
      NOP
      NOP
      BSF         PORTC,.0
      NOP
      NOP
   
      CALL       RETARDO

      MOVF       VALOR2,W       
      CALL      TABLA1          
      MOVWF       PORTB       ;SACA AL PUERTO B EL VALOR 2.
      NOP
      NOP
      BCF       PORTC,.0
      NOP
      NOP
      BCF       PORTC,.2
      NOP
      NOP
      BCF         PORTC,.3
      NOP
      NOP
      BSF         PORTC,.1
      NOP
      NOP
   
      CALL       RETARDO
      
      
      MOVF       VALOR3,W       ;LLEVA VALOR 2 A W.
      CALL      TABLA1
      MOVWF       PORTB       ;SACA AL PUERTO B EL VALOR 2.
      NOP
      NOP
      BCF       PORTC,.0
      NOP
      NOP
      BCF       PORTC,.1
      NOP
      NOP
      BCF         PORTC,.3
      NOP
      NOP
      BSF         PORTC,.2
      NOP
      NOP
   
      CALL       RETARDO

      
      MOVF       VALOR4,W       ;LLEVA VALOR 2 A W.
      CALL      TABLA
      MOVWF       PORTB       ;SACA AL PUERTO B EL VALOR 2.
      NOP
      NOP
      BCF       PORTC,.0
      NOP
      NOP
      BCF       PORTC,.1
      NOP
      NOP
      BCF         PORTC,.2
      NOP
      NOP
      BSF         PORTC,.3
      NOP
      NOP      
   
      CALL       RETARDO
      
   
       
   
      BTFSS           PORTD,.4
      GOTO      AL4      
      MOVF      VALOR1,W                 ;COMPARA CONTADOR CON 10
             XORWF      ALAR1,W
             BTFSC       STATUS,2
      GOTO            ALA1
      GOTO            AL4
ALA1      MOVF       VALOR2,W                 ;COMPARA CONTADOR CON 10
             XORWF      ALAR2,W
             BTFSC       STATUS,2
      GOTO            ALA2
      GOTO            AL4
ALA2      MOVF       VALOR3,W                 ;COMPARA CONTADOR CON 10
             XORWF      ALAR3,W
             BTFSC       STATUS,2
      GOTO            ALA3
      GOTO            AL4
ALA3      MOVF       VALOR4,W                 ;COMPARA CONTADOR CON 10
             XORWF      ALAR4,W
             BTFSC       STATUS,2
      BSF      PORTD,.3
      GOTO            AL4      
      
AL4      
      DECFSZ  CONT6,F
      GOTO   LOOP1
      BTFSS   PORTD,.5
                GOTO    V6
      GOTO    VALAR
V6      BTFSS   PORTD,.0
      GOTO    V7
      GOTO    MU
V7      BTFSS   PORTD,.1
      GOTO    V8         
      GOTO    HU3
V8      BTFSS   PORTD,.2
      GOTO    V9
             GOTO    PALAR
V9      DECFSZ  CONT5,F
      GOTO    LOOP1
      ;DECFSZ  CONT4,F
      ;GOTO    LOOP1
      GOTO    MU
          
   
TABLA       ADDWF PCL,F ; PCL + W

      RETLW B'00111111' ; CODIGO PARA EL 0
      RETLW B'00000110' ; CODIGO PARA EL 1
      RETLW B'01011011' ; CODIGO PARA EL 2
      RETLW B'01001111' ; CODIGO PARA EL 3
      RETLW B'01100110' ; CODIGO PARA EL 4
      RETLW B'01101101' ; CODIGO PARA EL 5
      RETLW B'01111100' ; CODIGO PARA EL 6
      RETLW B'00000111' ; CODIGO PARA EL 7
      RETLW B'01111111' ; CODIGO PARA EL 8
      RETLW B'01100111' ; CODIGO PARA EL 9

TABLA1       ADDWF PCL,F ; PCL + W
      
      RETLW B'10111111' ; CODIGO PARA EL 0
      RETLW B'10000110' ; CODIGO PARA EL 1
      RETLW B'11011011' ; CODIGO PARA EL 2
      RETLW B'11001111' ; CODIGO PARA EL 3
      RETLW B'11100110' ; CODIGO PARA EL 4
      RETLW B'11101101' ; CODIGO PARA EL 5
      RETLW B'11111100' ; CODIGO PARA EL 6
      RETLW B'10000111' ; CODIGO PARA EL 7
      RETLW B'11111111' ; CODIGO PARA EL 8
      RETLW B'11100111' ; CODIGO PARA EL 9

RETARDO    MOVLW    .255            ;RETARDO DE 1 mS APROX.
      MOVWF    RT1
           MOVLW    .255            ;RETARDO DE 1 mS APROX.
      MOVWF    RT2
LOOP2           DECFSZ    RT1,F
                GOTO    LOOP2
REP       DECFSZ    RT2,F
      GOTO    REP
            RETURN




;********************* PUESTA EN HORA MIN ************************************************************************
PMIN           CALL            RETARDO
      BTFSS      PORTD,.0
      GOTO            RETARDO1
      GOTO      LOOP1                  
      
;******************** PUESTA EN HORA HORA*************************************************************************
PHORA           CALL            RETARDO
      BTFSS      PORTD,.1
      GOTO            RETARDO1
      GOTO      LOOP1   

;******************** PUESTA EN HORA ALARMA*************************************************************************

PALAR         ;CALL            RETARDO
         ;BTFSS         PORTD,.2
         ;GOTO            RETARDO1
               MOVLW         .1   
               XORWF         VUELTA,W
               BTFSS          STATUS,2
          GOTO            CI1   
          MOVF         VALOR1,W
          MOVWF         CON1
          MOVF         VALOR2,W
          MOVWF         CON2
          MOVF         VALOR3,W
          MOVWF         CON3
               MOVF         VALOR4,W
          MOVWF         CON4
          MOVLW           .1
          MOVWF           CONT5
          MOVLW           .1
          MOVWF           CONT4                
CI1          MOVF         VALOR1,W
          MOVWF         ALAR1
          MOVF         VALOR2,W
          MOVWF         ALAR2
          MOVF         VALOR3,W
          MOVWF         ALAR3
               MOVF         VALOR4,W
          MOVWF         ALAR4
          MOVLW           .2     
          MOVWF         VUELTA   
          MOVLW         .1
          MOVWF         BAND2    
          MOVLW           .1
          MOVWF           CONT5
          MOVLW           .1
          MOVWF           CONT4   
          GOTO         LOOP1      

;****************** VER HORA ALARM ************************************************************************

VALAR         ;BTFSS         PORTD,.5
         ;GOTO            LOOP1
         MOVLW         .1   
              XORWF         VUELTA,W
              BTFSS          STATUS,2
         GOTO            CI2   
         MOVF         VALOR1,W
         MOVWF         CON1
         MOVF         VALOR2,W
         MOVWF         CON2
         MOVF         VALOR3,W
         MOVWF         CON3
              MOVF         VALOR4,W
         MOVWF         CON4   
          MOVLW           .1
         MOVWF           CONT5
         MOVLW           .1
              MOVWF           CONT4
CI2         MOVLW           .1
         MOVWF           CONT5
         MOVLW           .1
              MOVWF           CONT4   
              MOVF         ALAR1,W
         MOVWF         VALOR1
         MOVF         ALAR2,W
         MOVWF         VALOR2
         MOVF         ALAR3,W
         MOVWF         VALOR3
              MOVF         ALAR4,W
         MOVWF         VALOR4
         MOVLW         .1
         MOVWF         BAND2
         MOVLW         .2
         MOVWF         VUELTA
         GOTO         LOOP1         

         END       

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: reloj digital
« Respuesta #2 en: 12 de Mayo de 2009, 20:46:09 »
Acabo de simular el código en el MPLAB y @20 mhz se ejecutan exáctamente 300 millones de instrucciones en 60 segundos. Me parece que te estás equivocando en algo.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado dagoh73

  • PIC10
  • *
  • Mensajes: 13
Re: reloj digital
« Respuesta #3 en: 13 de Mayo de 2009, 19:04:31 »
Para ver si voy bien.
A la etiqueta AL4      DECFSZ  CONT6,F me da que se realizan 6289 ciclos (sin los retardos). Con el retardo cont6 240 y cont5 188 me da : aprox 6289x240=1509360 + cont5 1509360x188=283759680 aprox.

Te agradezco por el dato.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: reloj digital
« Respuesta #4 en: 13 de Mayo de 2009, 19:17:06 »
No entiendo qué me estás pidiendo? Sabés usar el StopWatch del MPLAB? Me parece que te va a sacar más de un dolor de cabeza...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado dagoh73

  • PIC10
  • *
  • Mensajes: 13
Re: reloj digital (problema solucionado)
« Respuesta #5 en: 16 de Mayo de 2009, 08:23:48 »
Gracias por la ayuda.
Lo que pasa es que se me cuelga el StopWatch a una cantidad de ciclos en mi maquina. Pero gracias a tu confirmacion pude resolver el problema.
Muchas Gracias.


 

anything