Autor Tema: PIC16F84A Semaforo Ayuda  (Leído 143 veces)

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

Desconectado MrMacaro45

  • PIC10
  • *
  • Mensajes: 1
PIC16F84A Semaforo Ayuda
« en: 22 de Septiembre de 2019, 18:23:09 »
Hola a todos a la comunidad de todopic, necesito su ayuda para poder hacer correr este programa veran necesito hacer una calle de semaforo como todo la vida, mientras uno esta en verde el otro en rojo y cuando se pasen de color cambian pues.
Cabe recalcar que esto estara simulado en proteus.
Aqui mi codigo:
Código: [Seleccionar]
LIST P=16F84A
INCLUDE<P16F84A.INC>
     __CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC
     
radix hex  ;RETARDOS EN HEX
   
    CBLOCK 0x20
TIEMPO    
TIEMPO1
TIEMPO2
    ENDC

ORG 0x00
   
    BSF STATUS,5
BCF PORTB,0     ;Semaforo 1 ROJO
    BCF STATUS,5
    BSF STATUS,5
BCF PORTB,1     ;Semaforo 1 AMARILLO
    BCF STATUS,5
    BSF STATUS,5
BCF PORTB,2     ;Semaforo 1 VERDE
    BCF STATUS,5
    BSF STATUS,5
BCF PORTB,3     ;Semaforo 2 ROJO
    BCF STATUS,5
    BSF STATUS,5
BCF PORTB,4     ;Semaforo 2 AMARILLO
    BCF STATUS,5
    BSF STATUS,5
BCF PORTB,5     ;Semaforo 2 VERDE
    BCF STATUS,5
   
    BCF PORTB,0     ;Inicien apagados
    BCF PORTB,1     ;Inicien apagados
    BCF PORTB,2     ;Inicien apagados
    BCF PORTB,3     ;Inicien apagados
    BCF PORTB,4     ;Inicien apagados
    BCF PORTB,5     ;Inicien apagados
   
    INICIO:
BSF PORTB,0
CALL RETARDO
CALL RETARDO
BCF PORTB,0
CALL RETARDO
BSF PORTB,1
CALL RETARDO
BCF PORTB,1
CALL RETARDO
BSF PORTB,2
CALL RETARDO
CALL RETARDO
BCF PORTB,2
CALL RETARDO
BSF PORTB,5
CALL RETARDO
CALL RETARDO
BCF PORTB,5
CALL RETARDO
BSF PORTB,3
CALL RETARDO
CALL RETARDO
BCF PORTB,3
CALL RETARDO
BSF PORTB,4
CALL RETARDO
BCF PORTB,4
BSF PORTB,5
CALL RETARDO
CALL RETARDO
BCF PORTB,5
GOTO INICIO
   
    RETARDO:
    MOVLW 0XFF     ;HEX
    MOVWF TIEMPO1
   
    CICLO1:
    MOVLW 0XFF
    MOVWF TIEMPO2
   
    CICLO2:
    DECFSZ TIEMPO2,1
    GOTO CICLO2
    DECFSZ TIEMPO1,1
    GOTO CICLO1
    RETURN
   
   
    CICLO:
    DECFSZ TIEMPO
    GOTO CICLO
    RETURN
    END
    END

Como puedo hacer que cuando un semaforo esta en verde el otro en rojo pero a la vez ese es problema que tengo porque esto va en secuencia y no es asi como lo quiero
Agradesco su ayuda en esto.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7356
Re:PIC16F84A Semaforo Ayuda
« Respuesta #1 en: 22 de Septiembre de 2019, 20:08:13 »
Hola, primero que nada resumi el tema de cambio de registros... me refiero a esta parte:

Código: ASM
  1. ORG 0x00
  2.    
  3.     BSF STATUS,5
  4.         BCF PORTB,0         ;Semaforo 1 ROJO
  5.     BCF STATUS,5
  6.     BSF STATUS,5
  7.         BCF PORTB,1         ;Semaforo 1 AMARILLO
  8.     BCF STATUS,5
  9.     BSF STATUS,5
  10.         BCF PORTB,2         ;Semaforo 1 VERDE
  11.     BCF STATUS,5
  12.     BSF STATUS,5
  13.         BCF PORTB,3         ;Semaforo 2 ROJO
  14.     BCF STATUS,5
  15.     BSF STATUS,5
  16.         BCF PORTB,4         ;Semaforo 2 AMARILLO
  17.     BCF STATUS,5
  18.     BSF STATUS,5
  19.         BCF PORTB,5         ;Semaforo 2 VERDE
  20.     BCF STATUS,5
  21.    
  22.     BCF PORTB,0             ;Inicien apagados
  23.     BCF PORTB,1             ;Inicien apagados
  24.     BCF PORTB,2             ;Inicien apagados
  25.     BCF PORTB,3             ;Inicien apagados
  26.     BCF PORTB,4             ;Inicien apagados
  27.     BCF PORTB,5             ;Inicien apagados
  28.    
  29.     INICIO:

Es lo mismo que esto:

Código: ASM
  1. ORG 0x00
  2.    
  3.         BANKSEL TRIB
  4.         MOVLW   b'11100000'
  5.         MOVWF   TRISB
  6.         BANKSEL PORTB
  7.         CLRF    PORTB
  8.  
  9. INICIO:

Empecemos por la secuencia (Una secuencia simple):

Semaforo1 - Semaforo2

Rojo - Verde
Rojo/Amarillo - Amarillo
Verde - Rojo
Amarillo - Rojo/Amarillo

Y volvemos a comenzar.

Entonces....

Código: ASM
  1.         CLRF PORTB
  2.         BSF PORTB,0         ;Semaforo 1 ROJO
  3.         BSF PORTB,5         ;Semaforo 2 VERDE
  4.         CALL DEMORA_VERDE
  5.        
  6.         CLRF PORTB
  7.         BSF PORTB,0         ;Semaforo 1 ROJO
  8.         BSF PORTB,1         ;Semaforo 1 AMARILLO
  9.         BSF PORTB,4         ;Semaforo 2 AMARILLO
  10.         CALL DEMORA_AMARILLO   
  11.  
  12.         CLRF PORTB
  13.         BSF PORTB,2         ;Semaforo 1 VERDE
  14.         BSF PORTB,3         ;Semaforo 2 ROJO
  15.         CALL DEMORA_VERDE
  16.  
  17.         CLRF PORTB
  18.         BSF PORTB,1         ;Semaforo 1 AMARILLO
  19.         BSF PORTB,4         ;Semaforo 2 AMARILLO
  20.         BSF PORTB,3         ;Semaforo 2 ROJO
  21.         CALL DEMORA_AMARILLO   
  22.  
  23.         GOTO INICIO