Autor Tema: Problemas en el puerto B del Pic 16F877A  (Leído 8459 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Problemas en el puerto B del Pic 16F877A
« 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.
« Última modificación: 11 de Julio de 2006, 15:27:43 por Caleb »

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #1 en: 11 de Julio de 2006, 15:27:04 »

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


Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #2 en: 11 de Julio de 2006, 15:33:42 »
Hola microcom, si tengo pulsadores. y le entregan al pic un cero.
como hago para que puadas ver el programa?

gracias

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #3 en: 11 de Julio de 2006, 15:44:35 »
ESCRIBELO AQUI O ADJUNTALO

Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #4 en: 11 de Julio de 2006, 16:00:20 »
adjunto el archivo.

ok.

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #5 en: 11 de Julio de 2006, 16:05:51 »
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

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #6 en: 11 de Julio de 2006, 16:13:19 »
ya estube biendo <la senal de activacion es un cero o un 1.

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #7 en: 11 de Julio de 2006, 16:21:36 »
;=======================================================
;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


Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #8 en: 11 de Julio de 2006, 16:28:43 »
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

Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #9 en: 11 de Julio de 2006, 16:36:34 »
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

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #10 en: 11 de Julio de 2006, 17:15:40 »
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

Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #11 en: 11 de Julio de 2006, 17:51:48 »
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.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #12 en: 11 de Julio de 2006, 18:00:02 »
Voy a preguntar una tonteria pero... Como esta polarizado el puerto B?

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado LAB_je

  • PIC10
  • *
  • Mensajes: 12
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #13 en: 11 de Julio de 2006, 18:07:20 »
 como entrada, trisB 0xFF
lo tengo con pull up es decir con unos

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Problemas en el puerto B del Pic 16F877A
« Respuesta #14 en: 11 de Julio de 2006, 18:09:49 »
Estas utilizando las resistencias internas del Pic parapolarizar el puerto?. Lo pregunto por que parece un problema de harware.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything