Autor Tema: AYUDA URGENTE!!!!!  (Leído 2031 veces)

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

Desconectado pimai

  • PIC10
  • *
  • Mensajes: 4
AYUDA URGENTE!!!!!
« en: 14 de Enero de 2006, 14:11:00 »
Helado Hola a todos!

tengo una problemilla... Estoy realizano un proyecto con el PIC16F84A,  y no se exactamente si hace lo que realmente quiero que haga... ((Porque en el mplab, da BUILD SUCCESFUL)) Me gustaria saber si el programa esta bien realizado!!

A ver si me explico... Lo que quiero conseguir ((con dos pulsadores, dos displays el pic y un led)) es que cada pulsador(minutos y grados) vaya incrementando separadamente los displays de 0 a 9, uno incrementa los minutos y el otro los grados. Y que cuando uno de ellos ((solo UNO de ellos que en este caso es MINUTOS)) que cuando lo active por un interruptor (ON/OFF) que empiece a descender, y cuando llegue a cero, se encienda el LED.

Os adjunto el programa..Por favor, a ver si hay alguien que me entiende y que me pueda solucionar mi problema cuanto antes!!! es que voy muy apurada de tiempo... muchisimas gracias a todos!.

Me podeis contestar al mail: maiu1985@yahoo.es

Gracias por adelantado!!




      list p=16F84A
      #include "P16F84A.inc"

CONTG   EQU       0x0C   
CONTM   EQU       0x0D   
CONTDES   EQU      0x0E
TEMP1      EQU      0x0F   
TEMP2      EQU      0x0E

   org   0x000
      GOTO      INICIO   
   org   0x004
      GOTO      INTER   
   org   0x005

INICIO   BSF      STATUS,RP0   
      CLRF   TRISB   
      MOVLW   B"00000011"
      MOVWF   TRISA      
      MOVLW   B"00000101"
      MOVWF   OPTION_REG
      MOVLW   B"10100000"
      MOVWF   INTCON   
      BCF      STATUS,RP0   

      CLRF      GRADOS
      CLRF      MINUTOS   

BUCLE   BTFSC      PORTA,0   
      CALL      GRADOS   
      BTFSC      PORTA,1   
      CALL      MINUTOS   
      BTFSC      PORTA,2   
      CALL      DESCENDER   
      GOTO      BUCLE

GRADOS   CALL       ESPERA30MS   
      INCF      CONTG,F   
      MOVLW   0x09      
      SUBWF   CONTG,W   
      BTFSC      STATUS,Z   
      CLRF      CONTG   
      BTFSC      PORTA,0   
      GOTO      $-1      
      CALL      ESPERA30MS
      RETURN

MINUTOS   CALL      ESPERA30MS   
      INCF      CONTM,F   
      MOVLW   0x09
      SUBWF   CONTM,W   
      BTFSC      STATUS,Z   
      CLRF      CONTM   
      BTFSC      PORTA,1   
      GOTO      $-1      
      CALL      ESPERA30MS   
      RETURN

DESCENDER   CALL      ESPERA30MS
      DECF      CONTDES,F
      MOVLW   0x00
      SUBWF   CONTDES,W   
      BTFSC      STATUS,Z   
      CLRF      CONTDES   
   
      BTFSC      PORTA,0   
      GOTO      $-1   
      CALL      ESPERA30MS
      RETURN

INTER      BCF      INTCON,T0IF   
      BTFSS      PORTA,3   
      GOTO      VERGRADOS   
      GOTO       VERMINUTOS

VERGRADOS   BCF      PORTA,2   
      MOVFW   CONTG      
      CALL      SIETESEG
      MOVWF   PORTB      
      BSF      PORTA,3   
      RETFIE            

VERMINUTOS   BCF      PORTA,3   
      MOVFW   CONTM   
      CALL      SIETESEG   
      MOVWF   PORTB   
      BSF      PORTA,2   
      RETFIE         

SIETESEG   ADDWF   PCL,F
      RETLW      B"01000000"
      RETLW      B"01111001"
      RETLW      B"00100100"
      RETLW      B"00110000"
      RETLW      B"00011001"
      RETLW      B"00010010"
      RETLW      B"00000010"
      RETLW      B"01111000"
      RETLW      B"00000000"
      RETLW      B"00011000"

ESPERA30MS   MOVLW   .40
      MOVWF   TEMP1
      DECFSZ   TEMP1,F
      GOTO      $+2
      RETURN
      CLRF      TEMP2
      DECFSZ   TEMP2,F
      GOTO      $-1
      GOTO      $-6
   END


Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
RE: AYUDA URGENTE!!!!!
« Respuesta #1 en: 14 de Enero de 2006, 14:20:00 »
Podrias simularlo en PROTEUS....

Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: AYUDA URGENTE!!!!!
« Respuesta #2 en: 15 de Enero de 2006, 03:56:00 »
Hola. Por lo poco que vi, te corrijo esto:

MOVLW B"00000011"
MOVWF TRISA

Lo correcto deberia ser:

MOVLW B"00001111"
MOVWF TRISA

pero has hecho lio...estas son 2 instrucciones que estan en tu programa:

BTFSS PORTA,3
BCF PORTA,3

Eso no puede ser( en teoria si, pero NO locoloco no me quiero desviar del hilo...) BTFSS PORTA,3 es chequear el pin 3 del puertoA, y utiliza cuando a ese pin lo configuraste como entrada.

BCF PORTA,3 pone el pin 3 del puertoA a cero. Se utiliza cuando configuraste a ese pin como SALIDA.
Decidite,al pin lo configuras y utilizas como entrada o salida!Sonrisa GiganteSonrisa Gigante pero solamente una de las dos opciones!RebotadoRebotado
Si bien podes cambiar dinamicamente mediante el programa un pin de entrada como salida y viceversa, NO LO RECOMIENDO si no la tenes muy clara en programacion.
Lo mismo hiciste con el pin 2 del puertoA...


Otra cosa:Esto es redudante:

DESCENDER CALL ESPERA30MS
DECF CONTDES,F
MOVLW 0x00
SUBWF CONTDES,W
BTFSC STATUS,Z
CLRF CONTDES

Lo optimo:

DESCENDER CALL ESPERA30MS
DECF CONTDES,F

Eso es lo mismo...

Exitos.

"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 pimai

  • PIC10
  • *
  • Mensajes: 4
RE: AYUDA URGENTE!!!!!
« Respuesta #3 en: 15 de Enero de 2006, 07:39:00 »
Wenas!!!

Gracias a los que habeis contestado!!
Intentare arreglarlo hoy a la tarde confugurando o como entrada o como salida, a ver si es ese el error y me lo simula bien en el proteus!!

Gracias Giño!!