Programación Específica > Microcontroladores

 Realizacion De Un Frecuencimetro

<< < (2/2)

jr.:
Imarte he escrito el codigo pero no me funciona, teoricamente el codigo esta bien , pero en la practica cuando lo simulo no me va.
A ver si puedes echarle un vistazo y decirme si hay algun fallo.
Aqui te envio el codigo.

rastrojero:
Hola esta  buscando otra cosa y no entiendo eso del display. que tipo de display pensas usar? por favor si todavia estas avisame.
Una vez hice algo parecido es un dispenser donde tenia anidado 5 digitos y usaba un display de dos LINEAS (alfa numerico)
Bue! por favor si la siguen.

Desde argentina, un gran saludo diesel! :o

jr.:
Es un display de 7 segmentos, de los normales.

J1M:
jr. eres de la politécnica de cartagena?? pq la practica final es la misma. te dejo aki la mia, sirvió para un 10 asiq estará bien :P

te adjunto tb el .asm que he visto que esto sale deformado, para q lo abras con el mplab

Salu2!


--- Código: Text --- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                            &#59;;;;;;;;;;                    FRECUENCÍMETRO                  &#59;;;;;;;;;;                       POR                    &#59;;;;;;;;;;                JAIME FERNÁNDEZ-CARO BELMONTE              &#59;;;;;;;;;;                                            &#59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;                                        &#59;;;;;;;;;;;;;;;;;;  Realizado con MPLAB IDE 6.32                        &#59;;;;;;;;;;;;;;;;;;  Simulado con Proteus Pro 6.2 SP5                      &#59;;;;;;;;;;;;;;;;;;  Montaje en MicroPicTrainer 1.1                        &#59;;;;;;;;;;;;;;;;;;                                        &#59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;         LIST P=16F84    &#59;Tipo de PIC usado     ORG    00      &#59;Directiva inicio de programa en la posición 00 INICIO  BSF     0x03,5    &#59;Ponemos a '1' el bit 5(6ª posición) del registro de Estado        CLRF    0x06    &#59;Ahora estamos en el banco 1, ponemos a '0'(Salida) TrisB        MOVLW   0xFF    &#59;Copiamos el literal 'FF'H a W, todo 1 (Entrada)        MOVWF   0x05    &#59;Copiamos de W al registro TrisA, quedando como entrada    MOVLW   B'11101000'  &#59;Copiamos el literal de configuración del registro Option a W    MOVWF   0x01    &#59;Copiamos el contenido de W a Option        BCF     0x03,5    &#59;Ponemos a '0' el bit 5 del registro de Estado,estamos en el Banco 0    CLRF  0x06    &#59;Borramos el contenido del registro PortB    CLRF  0x01    &#59;Borramos el contenido del registro TMR0 ;Retrasamos acontinuación la ejecución;del programa durante 1 segundo     MOVLW  D'40'    &#59;Copiamos el literal (decimal) a W        MOVWF   0x0C    &#59;Copiamos el contenido de W a la 1ª posición de memoria libreLOOP1  MOVLW  D'80'    &#59;Copiamos el literal (decimal) a W        MOVWF   0x0D    &#59;Copiamos el contenido de W a la 2ª posición de memoria libreLOOP2  MOVLW  D'103'    &#59;Copiamos el literal (decimal) a W        MOVWF   0x0E    &#59;Copiamos el contenido de W a la 3ª posición de memoria libreLOOP3  DECFSZ  0x0E,1    &#59;Decrementamos 0x0E,y se almacena en 0x0E,si es 0 brincamos        GOTO    LOOP3    &#59;Como no es 0,hacemos un salto incondicional a LOOP3        DECFSZ  0x0D,1    &#59;Decrementamos 0x0D,y se almacena en 0x0D,si es 0 brincamos        GOTO    LOOP2    &#59;Como no es 0,hacemos un salto incondicional a LOOP2        DECFSZ  0x0C,1    &#59;Decrementamos 0x0C,y se almacena en 0x0C,si es 0 brincamos        GOTO    LOOP1    &#59;Como no es 0,hacemos un salto incondicional a LOOP1 ;Movemos el valor del registro TMR0 a una variable;para poder operar con él     MOVF    0x01,0    &#59;Copiamos el contenido del registro TMR0 en W        MOVWF   0x0C    &#59;Movemos el valor de W a la posicion 0x0C ;Descomposición de un número en centenas,decenas y unidades;Explicación del algoritmo en la memoria de la practica CENTEN  MOVLW  D'100'    &#59;Movemos el literal (decimal) a W    SUBWF  0x0C,0    &#59;Restamos W a 0x0C y guardamos el resultado en W    BTFSS  0x03,0    &#59;Miramos el bit 0 del registro de Estado, si es 1 brincamos    GOTO  DECEN    &#59;Salto incondicional a DECEN, ya que hay acarreo     MOVWF  0x0C    &#59;Guardamos el resto para seguir restando    INCF  0x0E,1    &#59;Incrementamos la variable 0x0E,y guardamos el resultado en ella    GOTO  CENTEN    &#59;Salto incondicional a CENTEN DECEN  MOVLW  D'10'    &#59;Movemos el literal (decimal) a W    SUBWF  0x0C,0    &#59;Restamos W a 0x0C y guardamos el resultado en W    BTFSS  0x03,0    &#59;Miramos el bit 0 del registro de Estado, si es 1 brincamos    GOTO  WAIT    &#59;Salto incondicional a WAIT, ya que hay acarreo    MOVWF  0x0C    &#59;Guardamos el resto para seguir restando    INCF  0x0D,1    &#59;Incrementamos la variable 0x0D,y guardamos el resultado en ella    GOTO  DECEN    &#59;Salto incondicional a DECEN ;Esperamos a que se active cualquiera;de los pulsadores WAIT  BTFSC  0x05,0    &#59;Miramos el bit 0 del registro PortA, y si (RA0) es 0 brinca    CALL  MUE_CEN    &#59;Llamada a Subrutina MUE_CEN ya que RA0 es 1    BTFSC  0x05,1    &#59;Miramos el bit 1 del registro PortA, y si (RA1) es 0 brinca    CALL  MUE_DEC    &#59;Llamada a Subrutina MUE_DEC ya que RA1 es 1    BTFSC  0x05,2    &#59;Miramos el bit 2 del registro PortA, y si (RA2) es 0 brinca    CALL  MUE_UNI    &#59;Llamada a Subrutina MUE_UNI ya que RA2 es 1    BTFSC  0x05,3    &#59;Miramos el bit 3 del registro PortA, y si (RA3) es 0 brinca    GOTO  INICIO    &#59;Salto incondicional a INICIO ya que RA3 es 1    GOTO  WAIT    &#59;Salto incondicional a WAIT ya que RA3 es 0    ;Rutina encargada de mostrar en el display;centenas,decenas ó unidades MUE_CEN  MOVF  0x0E,0    &#59;Copio el valor de la posicion de memoria 0x0E en W    CALL  MUESTRA    &#59;Llamo a la subrutina MUESTRA    RETURN        &#59;Retorno a WAIT desde esta subrutina MUE_DEC  MOVF  0x0D,0    &#59;Copio el valor de la posicion de memoria 0x0D en W    CALL  MUESTRA    &#59;Llamo a la subrutina MUESTRA    RETURN        &#59;Retorno a WAIT desde esta subrutina MUE_UNI  MOVF  0x0C,0    &#59;Copio el valor de la posicion de memoria 0x0C en W    CALL  MUESTRA    &#59;Llamo a la subrutina MUESTRA    RETURN        &#59;Retorno a WAIT desde esta subrutina MUESTRA CALL  N_7SEG    &#59;Llamo a la subrutina N_7SEG    MOVWF  0x06    &#59;Copio el contenido de W en PortB    RETURN        &#59;Retorno desde subrutina ;Rutina encargada de dar;el equivalente en 7 segmentos de un numero N_7SEG  ADDWF  0x02,1    &#59;Sumo el valor de W con el del PCL,y lo almaceno en PCL    RETLW  B'00111111'  &#59;Retorno desde subrutina y W=Valor del 0 en 7 segmentos    RETLW  B'00000110'  &#59;Retorno desde subrutina y W=Valor del 1 en 7 segmentos    RETLW  B'01011011'  &#59;Retorno desde subrutina y W=Valor del 2 en 7 segmentos    RETLW  B'01001111'  &#59;Retorno desde subrutina y W=Valor del 3 en 7 segmentos    RETLW  B'01100110'  &#59;Retorno desde subrutina y W=Valor del 4 en 7 segmentos    RETLW  B'01101101'  &#59;Retorno desde subrutina y W=Valor del 5 en 7 segmentos    RETLW  B'01111101'  &#59;Retorno desde subrutina y W=Valor del 6 en 7 segmentos    RETLW  B'00000111'  &#59;Retorno desde subrutina y W=Valor del 7 en 7 segmentos    RETLW  B'01111111'  &#59;Retorno desde subrutina y W=Valor del 8 en 7 segmentos    RETLW  B'01100111'  &#59;Retorno desde subrutina y W=Valor del 9 en 7 segmentos         END          &#59;Directiva fin de programa ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;            &#59;;;;  Total: 68 Instrucciones&#59;;;;            &#59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  

jr.:
Si, lo soy.Gracias por mandarme tu práctica,le echare un vistazo, pero la verdad es que solo tengo la complicacion en el convertido porque por lo demas está bien.
No me ocupe 68 lineas pero por hay andará(unas 75 mas o menos).
Me está dando un  follon la práctica esta que estoy desesperado, haber si me la quito de enmedio y acabo.
Lo dicho gracias por dejarmela.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa