TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: LAB_je en 11 de Julio de 2006, 13:59:55
-
Hola, soy nuevo en el foro y tengo un problema y he dado vueltas y nada que lo he resuelto. Resulta que confugure el puerto B del 877A como entradas y cada vez que clareo (le doy un cero logico) varias veces a cualquier patica de este puerto se resetea el PIC. Que puede ser? el programa lo tengo en asm. El programa como tal, hace lo que quiero, pero cuando clareo los pines varias veces se resetea.
gracias.
un amigo mas.
-
tal vez el problema este en el programa.
tienes pulsadores en el puertob
tal vez la configuracion del programador.
que estas haciendo .........
miremos el programa a ver
bueno
-
Hola microcom, si tengo pulsadores. y le entregan al pic un cero.
como hago para que puadas ver el programa?
gracias
-
ESCRIBELO AQUI O ADJUNTALO
-
adjunto el archivo.
ok.
-
disculpas pero si lo copias aqui me gustarias ya que estoy en una parte que me es imposible descargar archivos
control+C y control+V
disculpas caballero
-
ya estube biendo <la senal de activacion es un cero o un 1.
-
;=======================================================
;PROGRAMA PARA EL CONTROL DE TRAFICO
;=======================================================
LIST P=16F877A ;DEFINICION DEL PIC A UTILIZAR
#include "P16F877A.INC"
PDel0 EQU 0X20 ;REGISTROS PARA RETARDOS
PDel1 EQU 0X21
PDel2 EQU 0X22
ORG 0X00
GOTO INICIO
ORG 0X05
;=======================================================
;DEFINICION DE REGISTROS
;=======================================================
INICIO
BANKSEL TMR0 ;SELECCIONA EL BANCO DONDE ESTA EL TIMER0
CLRF TMR0 ;CLAREO EL TIMER 0
BANKSEL ADCON1
MOVLW 0X06
MOVWF ADCON1
BANKSEL TRISA ;SELECCIONA EL BANCO DONDE ESTA TRISA
MOVLW 0X00 ;CONFIGURA EL PUERTO
MOVWF TRISA ;COMO SALIDA
BANKSEL TRISB ;SELECCIONA EL BANCO DONDE ESTA TRISB
MOVLW 0XFF ;CONFIGURA LOS BITS 0 Y 2 AL 7 COMO ENTRADAS PARA
MOVWF TRISB ;EL RECEPTOR, LOS SENSORES Y DEEP SW Y EL BIT 1
;COMO SALIDA
BANKSEL TRISD ;SELECCIONA EL BANCO DONDE ESTA TRISB
MOVLW 0X00 ;CONFIGURA LOS BITS 0 Y 2 AL 7 COMO ENTRADAS PARA
MOVWF TRISD ;EL RECEPTOR, LOS SENSORES Y DEEP SW Y EL BIT 1
;COMO SALIDA
BANKSEL TRISE ;SELECCIONA EL BANCO DONDE ESTA TRISB
MOVLW 0X0F ;CONFIGURA LOS BITS 0 Y 2 AL 7 COMO ENTRADAS PARA
MOVWF TRISE ;EL RECEPTOR, LOS SENSORES Y DEEP SW Y EL BIT 1
;COMO SALIDA
BANKSEL OPTION_REG
CLRF OPTION_REG
BSF OPTION_REG,7
BANKSEL PCON
MOVLW 0X03
MOVWF PCON
BANKSEL PORTB
CLRF PORTB
CLRF PORTD
CLRF PORTA
;======================================================
;INICIA POR CHEQUEAR EN QUE CRUCE SE ENCUENTRA
; PARA CONTROLAR
;======================================================
INICIO1
CLRWDT ;CLAREA EL WDT
BTFSC PORTE,0
GOTO SENSORSS21 ;CRUCE No. 2 EN LA POSICION 1 0
GOTO SENSORSS1 ;CRUCES No. 1 Y No. 3 EN LA POSICION 0 0
;======================================================
;******************************************************
;SUBRUTINAS
;******************************************************
;======================================================
;***********************************************************************************************************
;=======================================================
;SUBRUTINA PARA IR AL CRUCE No. 1
;=======================================================
;***********************************************************************************************************
;======================================================
;REVISA SI HAY SEÑAL DEL RECEPTOR
;======================================================
RX1
MOVLW 0X00
MOVWF PORTA
MOVLW 0X00
MOVWF PORTD
BTFSS PORTB,0
GOTO RX1
;======================================================
;REVISA SI HAY SEÑAL DE LOS SENSORES
;CON LA BANDERA DE CAMBIO DEL PUERTO B
;======================================================
CAMBIO1
BTFSC PORTB,0 ;TESTEA SI NO HAY CAMBIOS EN EL PURTO B (RB <7:4>)
GOTO SENSORSS1 ;HAY CAMBIO Y COMIENZA A REVISAR EL ORIGEN DE LA SEÑAL
GOTO RX1 ;LLAMA A LA ETIQUETA RX (DONDE LEE LA SEÑAL DEL RECEPTOR)
;======================================================
;REVISA EL SENSOR SS1, ESPERA 5 SEGUNDOS
;Y ACTIVA EL SEMAFORO SECUNDARIO 1
;======================================================
SENSORSS1
BTFSS PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO RX1
BTFSC PORTB,1 ;TESTEA SI HAY SEÑAL EN EL SENSOR DEL SEMAFORO PG1
GOTO RX1 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
CALL ANTIREBO ;LLAMA A LA SUBRUTINA DE ANTIRREBOTE POR CAUSA DEL CONTACTO
BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO RX1 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
CALL TIM5Seg ;HAY SEÑAL Y LLAMA EL RETARDO PARA CAMBIAR DE ESTADOS DE LOS SEMAFOROS
BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO RX1 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
MOVLW B'00000011'
MOVWF PORTD ;AMARILLO PPAL - ROJO SECUNDS.
MOVLW 0X00
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
MOVLW B'00000011' ;ROJO PPAL - ROJO SECUNDS.
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM5Seg
MOVLW B'00000111' ;ROJO PPAL - VERDE SS1 - ROJO SS2
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM20Seg ;LLAMA RETARDO DE DURACION DE LOS SEMAFOROS EN SU NUEVO ESTADO
MOVLW B'00000100'
MOVWF PORTD ;ROJO PPAL - AMARILLO SS1 - ROJO SS2
MOVLW B'00000011'
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
MOVLW B'00000011' ;ROJO PPAL - ROJO SECUNDS.
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM5Seg
MOVLW 0X00 ;VERDE PPAL - ROJO SECUND
MOVWF PORTD
MOVLW 0X00
MOVWF PORTA
CALL TIM5Seg
CALL TIM5Seg
BTFSC PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO RX1 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
GOTO INICIO1
;***********************************************************************************************************
;=======================================================
;SUBRUTINA PARA IR AL CRUCE No. 2
;=======================================================
;***********************************************************************************************************
;======================================================
;REVISA SI HAY SEÑAL DEL RECEPTOR
;======================================================
RX2
MOVLW 0X00
MOVWF PORTA
MOVLW 0X00
MOVWF PORTD
BTFSS PORTB,0
GOTO RX2
;======================================================
;REVISA SI HAY SEÑAL DE LOS SENSORES
;CON LA BANDERA DE CAMBIO DEL PUERTO B
;======================================================
CAMBIO2
BTFSC PORTB,0 ;TESTEA SI NO HAY CAMBIOS EN EL PURTO B (RB <7:4>)
GOTO SENSORSS21 ;HAY CAMBIO Y COMIENZA A REVISAR EL ORIGEN DE LA SEÑAL
GOTO RX2 ;LLAMA A LA ETIQUETA RX (DONDE LEE LA SEÑAL DEL RECEPTOR)
;======================================================
;REVISA EL SENSOR SS1, ESPERA 5 SEGUNDOS
;Y ACTIVA EL SEMAFORO SECUNDARIO 1
;======================================================
SENSORSS21
BTFSS PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO RX2
BTFSC PORTB,1 ;TESTEA SI HAY SEÑAL EN EL SENSOR DEL SEMAFORO PG1
GOTO SENSORSS22 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
CALL ANTIREBO ;LLAMA A LA SUBRUTINA DE ANTIRREBOTE POR CAUSA DEL CONTACTO
BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO SENSORSS22 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
CALL TIM5Seg ;HAY SEÑAL Y LLAMA EL RETARDO PARA CAMBIAR DE ESTADOS DE LOS SEMAFOROS
BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO SENSORSS22 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
MOVLW B'00000011'
MOVWF PORTD ;AMARILLO PPAL - ROJO SECUNDS.
MOVLW 0X00
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
MOVLW B'00000011' ;ROJO PPAL - ROJO SECUNDS.
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM5Seg
MOVLW B'00000111' ;ROJO PPAL - VERDE SS1 - ROJO SS2
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM20Seg ;LLAMA RETARDO DE DURACION DE LOS SEMAFOROS EN SU NUEVO ESTADO
MOVLW B'00000100'
MOVWF PORTD ;ROJO PPAL - AMARILLO SS1 - ROJO SS2
MOVLW B'00000011'
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
MOVLW B'00000011' ;ROJO PPAL - ROJO SECUNDS.
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM5Seg
MOVLW 0X00 ;VERDE PPAL - ROJO SECUND
MOVWF PORTD
MOVLW 0X00
MOVWF PORTA
CALL TIM5Seg
CALL TIM5Seg
BTFSC PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO SENSORSS22 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
GOTO RX2
;======================================================
;REVISA EL SENSOR SS2, ESPERA 5 SEGUNDOS
;Y ACTIVA EL SEMAFORO SECUNDARIO 2
;======================================================
SENSORSS22
BTFSS PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO RX2
BTFSC PORTB,2 ;TESTEA SI HAY SEÑAL EN EL SENSOR DEL SEMAFORO PG1
GOTO SENSORSS21 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
CALL ANTIREBO ;LLAMA A LA SUBRUTINA DE ANTIRREBOTE POR CAUSA DEL CONTACTO
BTFSC PORTB,2 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO SENSORSS21 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
CALL TIM5Seg ;HAY SEÑAL Y LLAMA EL RETARDO PARA CAMBIAR DE ESTADOS DE LOS SEMAFOROS
BTFSC PORTB,2 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO SENSORSS21 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
MOVLW B'00000011'
MOVWF PORTD ;AMARILLO PPAL - ROJO SECUNDS.
MOVLW 0X00
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
MOVLW B'00000011' ;ROJO PPAL - ROJO SECUNDS.
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM5Seg
MOVLW B'00001011' ;ROJO PPAL - VERDE SS1 - ROJO SS2
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM20Seg ;LLAMA RETARDO DE DURACION DE LOS SEMAFOROS EN SU NUEVO ESTADO
MOVLW B'00001000'
MOVWF PORTD ;ROJO PPAL - AMARILLO SS1 - ROJO SS2
MOVLW B'00000011'
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
MOVLW B'00000011' ;ROJO PPAL - ROJO SECUNDS.
MOVWF PORTA
MOVLW B'00000000'
MOVWF PORTD
CALL TIM5Seg
MOVLW 0X00 ;VERDE PPAL - ROJO SECUND
MOVWF PORTD
MOVLW 0X00
MOVWF PORTA
CALL TIM5Seg
CALL TIM5Seg
BTFSC PORTB,0 ;TESTEA SI HAY SEÑAL EN EL SENSOR DEL SEMAFORO SP1
GOTO SENSORSS21 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
GOTO INICIO1
;**************************************************************
;==============================================================
;SUBRUTINA PARA LOS RETARDOS
;==============================================================
;**************************************************************
;=====================================================
;RETARDO DE 500 MILISEGUNDO
;TIEMPO ANTIRREBOTE
;=====================================================
ANTIREBO
MOVLW .239 ; 1 set numero de repeticion (B)
MOVWF PDel0 ; 1 |
PLoop01 MOVLW .232 ; 1 set numero de repeticion (A)
MOVWF PDel1 ; 1 |
PLoop02 CLRWDT ; 1 clear watchdog
PDelL01 GOTO PDelL02 ; 2 ciclos delay
PDelL02 GOTO PDelL03 ; 2 ciclos delay
PDelL03 CLRWDT ; 1 ciclo delay
DECFSZ PDel1,1 ; 1 + (1) es el tiempo 0 ? (A)
GOTO PLoop02 ; 2 no, loop
DECFSZ PDel0,1 ; 1 + (1) es el tiempo 0 ? (B)
GOTO PLoop01 ; 2 no, loop
PDelL04 GOTO PDelL05 ; 2 ciclos delay
PDelL05 GOTO PDelL06 ; 2 ciclos delay
PDelL06 GOTO PDelL07 ; 2 ciclos delay
PDelL07 CLRWDT ; 1 ciclo delay
RETURN ; 2+2 Fin.
;=====================================================
;RETARDO DE 20 SEGUNDOS
;TIEMPO DE LOS SEMAFOROS
;EN SUS NUEVO ESTADO DE CAMBIO
;=====================================================
TIM20Seg
MOVLW .71 ; 1 set numero de repeticion (C)
MOVWF PDel0 ; 1 |
PLoop0 MOVLW .254 ; 1 set numero de repeticion (B)
MOVWF PDel1 ; 1 |
PLoop1 MOVLW .221 ; 1 set numero de repeticion (A)
MOVWF PDel2 ; 1 |
PLoop2 CLRWDT ; 1 clear watchdog
CLRWDT ; 1 ciclo delay
DECFSZ PDel2,1 ; 1 + (1) es el tiempo 0 ? (A)
GOTO PLoop2 ; 2 no, loop
DECFSZ PDel1,1 ; 1 + (1) es el tiempo 0 ? (B)
GOTO PLoop1 ; 2 no, loop
DECFSZ PDel0,1 ; 1 + (1) es el tiempo 0 ? (C)
GOTO PLoop0 ; 2 no, loop
PDelL1 GOTO PDelL2 ; 2 ciclos delay
PDelL2 GOTO PDelL3 ; 2 ciclos delay
PDelL3 CLRWDT ; 1 ciclo delay
RETURN ; 2+2 Fin.
;=====================================================
;RETARDO DE 25 SEGUNDOS, TIEMPO DE LOS SEMAFOROS
;EN SUS NUEVO ESTADO DE CAMBIO
;=====================================================
TIM25Seg
MOVLW .106 ; 1 set numero de repeticion (C)
MOVWF PDel0 ; 1 |
PLoop3 MOVLW .135 ; 1 set numero de repeticion (B)
MOVWF PDel1 ; 1 |
PLoop4 MOVLW .249 ; 1 set numero de repeticion (A)
MOVWF PDel2 ; 1 |
PLoop5 CLRWDT ; 1 clear watchdog
PDelL11 GOTO PDelL12 ; 2 ciclos delay
PDelL12 CLRWDT ; 1 ciclo delay
DECFSZ PDel2,1 ; 1 + (1) es el tiempo 0 ? (A)
GOTO PLoop5 ; 2 no, loop
DECFSZ PDel1,1 ; 1 + (1) es el tiempo 0 ? (B)
GOTO PLoop4 ; 2 no, loop
DECFSZ PDel0,1 ; 1 + (1) es el tiempo 0 ? (C)
GOTO PLoop3 ; 2 no, loop
CLRWDT ; 1 ciclo delay
RETURN ; 2+2 Fin.
;=======================================================
;RETARDO DE 5 SEGUNDOS, TIEMPO PARA QUE LOS SEMAFOROS
;CAMBIEN DE ESTADO
;=======================================================
TIM5Seg
movlw .165 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop6 movlw .41 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop7 movlw .147 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop8 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel2,1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop8 ; 2 no, loop
decfsz PDel1,1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop7 ; 2 no, loop
decfsz PDel0,1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop6 ; 2 no, loop
return ; 2+2 Fin.
;=======================================================
;RETARDO DE 5 SEGUNDOS, TIEMPO PARA QUE LOS SEMAFOROS
;CAMBIEN DE ESTADO
;=======================================================
TIM2Seg
movlw .167 ; 1 set numero de repeticion (C)
movwf PDel0 ; 1 |
PLoop9 movlw .41 ; 1 set numero de repeticion (B)
movwf PDel1 ; 1 |
PLoop10 movlw .72 ; 1 set numero de repeticion (A)
movwf PDel2 ; 1 |
PLoop11 clrwdt ; 1 clear watchdog
decfsz PDel2,1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop11 ; 2 no, loop
decfsz PDel1,1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop10 ; 2 no, loop
decfsz PDel0,1 ; 1 + (1) es el tiempo 0 ? (C)
goto PLoop9 ; 2 no, loop
PDelL100 goto PDelL200 ; 2 ciclos delay
PDelL200 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;=======================================================
END
-
la señal de activacion es un cero
SENSORSS1
BTFSS PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO RX1
BTFSC PORTB,1 ;TESTEA SI HAY SEÑAL EN EL SENSOR DEL SEMAFORO PG1
GOTO RX1 ;COMO NO HAY SEÑAL EN EL SENSOR TESTEA EL SGTE SENSOR
CALL ANTIREBO ;LLAMA A LA SUBRUTINA DE ANTIRREBOTE POR CAUSA DEL CONTACTO
BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO RX1 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
CALL TIM5Seg ;HAY SEÑAL Y LLAMA EL RETARDO PARA CAMBIAR DE ESTADOS DE LOS SEMAFOROS
BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO RX1 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR TESTEA EL SGTE SENSOR
MOVLW B'00000011'
MOVWF PORTD ;AMARILLO PPAL - ROJO SECUNDS.
MOVLW 0X00
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
-
MICROCOM, EL CONSTANTE MENTE ESTA REVISANDO LOS PRIMEROS BIT DEL PUERTO B PERO NO VEO PORQUE SE TIENE QUE RESETEAR SI YO PULSO VARIAS VECES DE ESE PIN O DE OTROS PINES DEL MISMO PUERTO?
SENSORSS1
[/b]BTFSS PORTB,0 ;TESTEA SI HAY SEÑAL EN EL RECEPTOR
GOTO RX1
[/b]BTFSC PORTB,1 ;TESTEA SI HAY SEÑAL EN EL SENSOR DEL SEMAFORO 1
GOTO RX1 ;COMO NO HAY SEÑAL EN EL SENSOR VA A RX
CALL ANTIREBO ;LLAMA A LA SUBRUTINA DE ANTIRREBOTE POR CAUSA DEL CONTACTO
[/b]BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO RX1 ;COMO NO HAY SEÑAL EN EL PRIMER SENSOR VA A RX
CALL TIM5Seg ;HAY SEÑAL Y LLAMA EL RETARDO PARA CAMBIAR LOS SEMAFOROS
[/b]BTFSC PORTB,1 ;VUELVE A TESTEAR PARA VER SI HAY SEÑAL DEL PRIMER SENSOR
GOTO RX1
MOVLW B'00000011'
MOVWF PORTD ;AMARILLO PPAL - ROJO SECUNDS.
MOVLW 0X00
MOVWF PORTA
CALL TIM2Seg
CALL ANTIREBO
CALL ANTIREBO
-
caballero no toco esperar que dicen los compa;eros del foro ya que viendolo el programa pregunta consecitivamente por los pulasadores del puerto b
los pulsadores deben de ir cambiando consecutivamente de estados para poder seguir el programa.
por eje
a no se que usted tenga el rbo pulsado el programa salata a rb1 y sigue el programa a portd, porta.
si rbo no deben ser pulsasdos al empezar el programa ya que nunca seguirar el programa//
buenos
espe
-
correcto, si llega señal de sero al rb0 el va a rx donde coloca el estado inicial pero si no le llega señal a rx (rb0) este sigue preguntando por el resto del programa. asi esta el programa pero eso en que afecta la sensibilidad del puerto b para resetear el pic.
ej. si rb0 esta en 1 el pasa a revisar a rb1 y si este esta en 1 el pasa arevisar rb2, pero si rb1 esta en cero entonces el sigue la subrutina de sensorss1 o sensorss21 dependiendo, pero cuando el programa esta en en sensorss1 y yo le pulso una o varias veces cualquier pin del puerto b se resetea el pic. y no se que pueda sern??? y no se que mas hacer?
saludos.
-
Voy a preguntar una tonteria pero... Como esta polarizado el puerto B?
Un saludo.
-
como entrada, trisB 0xFF
lo tengo con pull up es decir con unos
-
Estas utilizando las resistencias internas del Pic parapolarizar el puerto?. Lo pregunto por que parece un problema de harware.
Un saludo
-
se las acabo de desabilitar pensando que el problema fuera ese, pero no. y tambien tienen pullup esternas
-
Es posible que el problema esté en que está activado el fuse LVP del 16F877A ...
En su Datasheet podemos leer en la sección dedicada al PORTB:
Three pins of PORTB are multiplexed with the Low Voltage Programming function: RB3/PGM, RB6/PGC and RB7/PGD.
Tres pines del PORTB están multiplexados con la función de Programación a Bajo Voltaje: RB3/PGM, RB6/PGC and RB7/PGD.
Y en la sección de Special Features:
The LVP bit defaults to on (‘1’) from the factory. If Low Voltage Programming mode is not used, the LVP bit can be programmed to a '0' and RB3/PGM becomes a digital I/O pin.
El bit LVP esta activado por defecto ('1') de fábrica. Si el modo de Programación a Bajo Voltaje no es usado el bit LVP puede ser programado a '0' y entonces RB3/PGM actuará como un pin digital Entrada/Salida.
-
gracias RedPic.
ya desactive ese fuse y queme el pic sin la opcion LVP y sigue el problema....
-
Hola Caleb
Creo que tus problemas vienen por el Watchdog. He pasado tu código por el simulador del Mplab y los reseteos por este motivo son continuos. Revisalo.
-
gracias Manofwar
cuando yo quemo el programa en el pic, desabilito la opcion wdt. el pic se resetea es por los multiples datos que le mando al puerto b independiente cual sea el pin de ese puerto
-
gracias Manofwar
cuando yo quemo el programa en el pic, desabilito la opcion wdt. el pic se resetea es por los multiples datos que le mando al puerto b independiente cual sea el pin de ese puerto
Caleb Cabe la posibilidad de que algun pin tenga un voltaje inferior a 0 ?
Los weak-pullups se habilitan del OPTIONS_REG , como lo has configurado a este registro?
-
Podrias poner el esquema y el código para estudiarlo?
Un saludo