TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: pimai en 16 de Enero de 2006, 15:38:00
-
hola de nuevo.. ya siento por ser tan pesada .. pero tengo todavia mas dudas!!
Ayer me solucionasteis y tenias razón lo de poner que fueran entradas o salidas pero… me sigue dando errores.
Mi programa consistía en que con dos pulsadores (grados y minutos) iban cada uno por su parte; cada pulsador iba incrementando de uno en uno y
luego, y si activábamos un interruptor decrementa solo los minutos, cuando este llega a cero, se enciende el led.
He probado en simularlo en el proteuss, creo q esta bien montado... pero con este programa que e cargado lo unico que me hace es que los dos contadores(minutos y grados) vayan inrementando solos los dos a la vez.
Por favor, si alguien me sabe solucionar el programa un poco mas.. se lo agradecería. Es bastante urgente e importante que me salga; pero es que ya no se como arreglarlo mas!! no se si esta mal, lo de descender.. no se como hacer para que me funcionen los pulsadores por separado.. me estoy volviendo loka
!
Adjunto el programa por si alguien me puede ayudar!! GRACIAS 
list p=16F84A
#include "P16F84A.inc"
CONTG EQU 0x0C
CONTM EQU 0x0D
CONTDES EQU 0x0E
TEMP1 EQU 0x0F
TEMP2 EQU 0x10
org 0x000
GOTO INICIO
org 0x004
GOTO INTER
org 0x005
INICIO BSF STATUS,RP0
CLRF TRISB
MOVLW B"00000111"
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 0x0A
SUBWF CONTG,W
BTFSC STATUS,Z
CLRF CONTG
BTFSC PORTA,0
GOTO $-1
CALL ESPERA30MS
RETURN
MINUTOS CALL ESPERA30MS
INCF CONTM,F
MOVLW 0x0A
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
DECFSZ CONTDES
GOTO $-2
BSF PORTB,7
CALL ESPERA30MS
RETURN
INTER BCF INTCON,T0IF
BTFSS PORTA,3
GOTO VERGRADOS
GOTO VERMINUTOS
VERGRADOS BCF PORTA,4
MOVFW CONTG
CALL SIETESEG
MOVWF PORTB
BSF PORTA,3
RETFIE
VERMINUTOS BCF PORTA,3
MOVFW CONTM
CALL SIETESEG
MOVWF PORTB
BSF PORTA,4
RETFIE
SIETESEG ADDWF PCL,F
RETLW B"10111111"
RETLW B"10000110"
RETLW B"11011011"
RETLW B"11001111"
RETLW B"11100110"
RETLW B"11101101"
RETLW B"11111101"
RETLW B"10000111"
RETLW B"11111111"
RETLW B"11100111"
ESPERA30MS MOVLW .40
MOVWF TEMP1
DECFSZ TEMP1,F
GOTO $+2
RETURN
CLRF TEMP2
DECFSZ TEMP2,F
GOTO $-1
GOTO $-6
END
-
Hola. ¿se incrementan solos? A ver si aca esta el error:
BUCLE BTFSC PORTA,0
CALL GRADOS
BTFSC PORTA,1
CALL MINUTOS
BTFSC PORTA,2
CALL DESCENDER
GOTO BUCLE
¿que tipo de pulsadores estas utilizando?Fijate que segun tu programa, cuando NO estas presionando el pulsador, los pines correspondientes del PUERTOA deben estar en bajo(0) Para lograr esto deberias por ejemplo estar utilizando pulsadores NC, y enviando masa constantemente.Y cuando presionas el boton, el pulsador pasa a estado NA, y ahi deberias tener una pull up colocada para que el pin pase a alto.
Otra opcion es poner una "pull down"(resistencia desde el pin a masa) y utilizando un pulsador NA conectado a 5v.
Te recomiendo:
BUCLE BTFSS PORTA,0
CALL GRADOS
BTFSS PORTA,1
CALL MINUTOS
BTFSS PORTA,2
CALL DESCENDER
GOTO BUCLE
Y en esos 3 pines del puerto A colocar una pull up por pin (resistencia de 10k por ej. Una pata de la resistencia va conectada al pin, y la otra a 5v. La conexion al pin debe estar luego del pulsador, es decir, mas cercana al pin del PIC.)
A los pulsadores NA los conectas a 0v.
Tambien deberias modificar esto si sigues mi consejo:
GRADOS CALL ESPERA30MS
INCF CONTG,F
MOVLW 0x0A
SUBWF CONTG,W
BTFSC STATUS,Z
CLRF CONTG
BTFSS PORTA,0
GOTO $-1
CALL ESPERA30MS
RETURN
MINUTOS CALL ESPERA30MS
INCF CONTM,F
MOVLW 0x0A
SUBWF CONTM,W
BTFSC STATUS,Z
CLRF CONTM
BTFSS PORTA,1
GOTO $-1
CALL ESPERA30MS
RETURN
Por ahi ese es el problema de que se autoincrementen...
Otra cosita:fijate que seguis comentiendo el mismo error que te mencione anteriormente en el RA3:
INICIO BSF STATUS,RP0
CLRF TRISB
MOVLW B"00000111" ;configuraste RA3 como salida
MOVWF TRISA
INTER BCF INTCON,T0IF
BTFSS PORTA,3 ;aca lees el estado del RA3 como si lo hubieses configurado como entrada
VERGRADOS BCF PORTA,4
MOVFW CONTG
CALL SIETESEG
MOVWF PORTB
BSF PORTA,3 ;aca seteas a 1 el RA3, utilizandolo como salida
RETFIE
Cuando disponga de un poquito mas de tiempo, si puedo, te ayudo para que te funcione de una buena vez por todas.
No desesperes, manten la cordura, que quedan pocas personas cuerdas...



Exitos
-
Hola a todos!!
Ya lo siento, no he podido contestar antes. Pero es que he estado muy liada solo queria escribir para daros las gracias por vuestra ayuda.
Al final con los cambios que me recomendaste que hiciera y unos cuantos retoques mas, ya me salio en el proteus, es decir, me salió proyecto a la perfeccioón!! 
El foro esta muy bien, ya que con vuestra ayuda he solucionado todo!!
Muchas gracias de verdad, nos vemos!!
Agur!!!
-
Pues de nada!


Eres siempre bienvenida)