;PROYECTO SEMÁFORO CON PIC 16F84A
;Colocacion de los semaforos en los puertos
;********************************************************************
;SEMAFORO 1 Y 3:VERDE-->RA0 HORIZONTAL
; NARANJA-->RA1
; ROJO-->RA2
;
;SEMAFOROS 2 Y 4:VERDE-->RA3 VERTICAL
; NARANJA-->RB1
; ROJO-->RB2
;AUTOBUS HORIZONTAL-->RB4
;AUTOBUS VERTICAL-->RB5
;*********************************************************************
;DEFINIMOS EL PIC QUE UTILIZAMOS
;*********************************************************************
LIST p=16F84A ;DIRECTORIO PIC16F84A.
INCLUDE "P16f84a.inc" ;LIBRERIA PIC16F84A.
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;*********************************************************************
;CONTADORES DE TEMPORIZADORES
;*********************************************************************
CONTA_1 EQU 0x10 ;DECLARAMOS CONTA_1
CONTA_2 EQU 0x20 ;DECLARAMOS CONTA_2
CONTA_3 EQU 0x30 ;DECLARAMOS CONTA_3
;*********************************************************************
;INICIO DEL PROGRAMA
;*********************************************************************
ORG 00h ;
GOTO INICIO ;SALTA A INICIO
ORG 05h ;
INICIO:
BSF STATUS,RP0 ;CONFIGURAMOS LOS PUERTOS
MOVLW b'11110000' ;PORTB entradas de la interrupcion por en rb4-rb7
MOVWF TRISB
MOVLW 0x00 ;Puerto A salidas
MOVWF TRISA
BCF STATUS,RP0
;; Habilitamos GIE RBIE RB0 (interrupción RB4 a RB7 Y INTERRUPCION EXTERNA)
BCF INTCON,RBIF
MOVLW b'10001000'
MOVWF INTCON
;PROCESO DE ENCENDIDO Y APAGADO DEL BUS EN DIRECCION VERTICAL
;========**************************===========
;========**ILUMINACIÓN SEMÁFOROS**===========
;========**************************===========
; ==========================
; ====AVENIDA HORIZONTAL====
; ==========================
CLRF PORTA ;LIMPIA EL PORTA
CLRF PORTB ;LIMPIA EL PORTB
;********************************************************************
;SEMAFORO 1 Y 3 HORIZONTAL
;********************************************************************
COMBINACION1:
BSF PORTA,0 ;SEMÁFOROS HORIZONTAL VERDE
BSF PORTB,2 ;SEMÁFOROS VERTICAL ROJO
CALL RETARDO1 ;15 SEGUNDOS SEMÁFOROS X EN VERDE
BCF PORTA,0 ;SEMÁFOROS HORIZONTAL VERDE APAGADO
BSF PORTA,1 ;SEMÁFOROS HORIZONTAL EN AMBAR ENCENDIDO
CALL RETARDO2 ;3 SEGUNDOS
BCF PORTA,1 ;SEMÁFOROS HORIZONTAL AMBAR APAGADOS
BCF PORTB,2 ;SEMAFOROS VERTICAL ROJO APAGADOS
BSF PORTA,3 ;SEMAFORO VERTICAL VERDE ENCENDIDO
BSF PORTA,2 ;SEMAFORO HORIZONTAL ROJO ENCENDIDO
GOTO COMBINACION2
; ==========================
; ==== AVENIDA VERTICAL ====
; ==========================
COMBINACION2:
CALL RETARDO1 ;15 SEGUNDOS
BCF PORTA,3 ;SEMAFOROS VERTICAL VERDE APAGADO
BSF PORTB,1 ;SEMAFOROS AMBAR VERTICAL ENCENDIDO
CALL RETARDO2 ;3 SEGUNDOS
BCF PORTA,2 ;SEMAFORO HORIZONTAL VERDE APAGADO
BCF PORTB,1
BSF PORTA,0 ;SEMAFORO VERTICAL ENCENDIDO VERDE
BSF PORTB,2 ;SEMAFORO HORIZONTAL ENCENDIDO ROJO
GOTO COMBINACION1
;********************************************************************
;**************AUTOBUS TRATAMIENTO DE LA INTERRUPCION EXTERNA********
;********************************************************************
;********************************************************************
BTFSS PORTB,4
BTFSS PORTB,5
GOTO BUS_HORIZONTAL
GOTO BUS_VERTICAL
BUS_HORIZONTAL:
CLRF PORTB
CLRF PORTA
BSF PORTA,0 ;SEMÁFOROS HORIZONTAL VERDE
BSF PORTB,2 ;SEMÁFOROS VERTICAL ROJO
CALL RETARDO1 ;15 SEGUNDOS SEMÁFOROS X EN VERDE
BCF PORTA,0 ;SEMÁFOROS HORIZONTAL VERDE APAGADO
BSF PORTA,1 ;SEMÁFOROS HORIZONTAL EN AMBAR ENCENDIDO
CALL RETARDO2 ;3 SEGUNDOS
BCF PORTA,1 ;SEMÁFOROS HORIZONTAL AMBAR APAGADOS
BCF PORTB,2 ;SEMAFOROS VERTICAL ROJO APAGADOS
BSF PORTA,3 ;SEMAFORO VERTICAL VERDE ENCENDIDO
BSF PORTA,2 ;SEMAFORO HORIZONTAL ROJO ENCENDIDO
RETFIE
BUS_VERTICAL:
CLRF PORTB
CLRF PORTA
BSF PORTA,3 ;SEMAFORO VERTICAL VERDE ENCENDIDO
BSF PORTA,2 ;SEMAFORO HORIZONTAL ROJO ENCENDIDO
CALL RETARDO1 ;15 SEGUNDOS
BCF PORTA,3 ;SEMAFOROS VERTICAL VERDE APAGADO
BSF PORTB,1 ;SEMAFOROS AMBAR VERTICAL ENCENDIDO
CALL RETARDO2 ;3 SEGUNDOS
BCF PORTA,2 ;SEMAFORO HORIZONTAL VERDE APAGADO
BCF PORTB,1
BSF PORTA,0 ;SEMAFORO VERTICAL ENCENDIDO VERDE
BSF PORTB,2 ;SEMAFORO HORIZONTAL ENCENDIDO ROJO
RETFIE
;===========********************===========
;===========**TIEMPOS DE LUCES**===========
;===========********************===========
; $$$$$$$$$$$$$$$$$$$$$$$
; $$RETARDO 15 SEGUNDOS$$
; $$$$$$$$$$$$$$$$$$$$$$$
RETARDO1: MOVLW 0x88
MOVWF CONTA_1
MOVLW 0xB3
MOVWF CONTA_2
MOVLW 0x21
MOVWF CONTA_3
RETAR_15S
DECFSZ CONTA_1,f
GOTO $+2
DECFSZ CONTA_2,f
GOTO $+2
DECFSZ CONTA_3,f
GOTO RETAR_15S
RETURN
; $$$$$$$$$$$$$$$$$$$$$$
; $$RETARDO 3 SEGUNDOS$$
; $$$$$$$$$$$$$$$$$$$$$$
RETARDO2: MOVLW 0x1A
MOVWF CONTA_1
MOVLW 0xE7
MOVWF CONTA_2
MOVLW 0x0B
MOVWF CONTA_3
RETAR_3S
DECFSZ CONTA_1,f
GOTO $+2
DECFSZ CONTA_2,f
GOTO $+2
DECFSZ CONTA_3,f
GOTO RETAR_3S
RETURN
END
Lo tengo realizado de esta forma pero no m funciona al llamar la interrupcion de cambio de estado en rb4 a rb7 que tengo conectados dos pulsadores uno para bus horizontal y otro para vertical.. como me indicastess pero el porblemaa lo debo de tener por que cuando m meto en la interrupcion simpre estoi situado en un retardo y lo debo de realizar con el timer peroo estoi viendo tus apuntes que me recomendastess y no tengo ni idea como conseguir los 3 segundos y los 15 segundo con timer aver si me puedes exar unaa manoo que lo tenems yaa casi realizadooo Muchass Graciassss!!!!!!
espero tu respuestaaa