primero que todo soy un noob en esto de los pics y demases, mi proyecto es el siguiente, es bastante sencillo y cuando me di cuenta que ya lo habia terminado por completo, me di cuenta de un detalle, aqui va:
el proyecto consiste en un semaforo utilizando el pic17f84a , y la idea en un comienzo era la siguiente el semaforo consta de 3 leds en las salidas RB0, RB1 y RB2 , luego se me ocurrio agregarle el control de peatones o semaforo de peatones a modo sencillo de explicar ese proceso es: cuando el semaforo esta en rojo, los peatones pueden cruzar por lo tanto u semaforo está en verde, y por otra parte cuando el semaforo esta en verde (el semaforo de autos), el de peatones este en rojo, ese problema lo solucione con la implementacion que hice en el proteus.
agregue un retardo de 2 segundos para el semaforo para que se notase el cambio de los leds.
el codigo es el siguiente:
LIST P=16F84A, ; usar PIC 16F84A
#include <p16f84A.inc>
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_RC_OSC ; code protec off
; power up timer on
; watchdog off
; osc RC
; Asignacion de vaiables utilizadas en demora
cont1 equ 0x0c
cont2 equ 0x0d
cont3 equ 0x0e
ORG 0
BSF STATUS,5 ; activa la pagina 1
MOVLW B'00000' ; carga 00000 en W
MOVWF TRISA ; puerto a todos salidas
MOVLW B'00000000' ; carga 00000000 en W
MOVWF TRISB ; puerto b todos salidaS
BCF STATUS,5 ; volvemos a la pagina 0
CLRF PORTB ; ponemos a cero el puerto b
INICIO ; etiqueta
BSF PORTB,0 ; prende RB0
BCF STATUS,0 ; limpia el carry de STATUS,C
REPETIR
IZQ
CALL DEMORA ; demora de 2s
RLF PORTB,1 ; rota el contenido de portb a la derecha
BTFSS PORTB,2 ; hasta que prenda RB3, luego se salta
GOTO IZQ ; una linea
DER
CALL DEMORA ; demora de 2s
RRF PORTB,1 ; rota el contenido de portb a la izquierda
BTFSS PORTB,0 ; hasta que prenda RB0, luego salta
GOTO DER ; una linea
GOTO REPETIR ; repite el ciclo
GOTO INICIO ; va a inicio
;-------------------------------------------------------------
; La demora a sido generada con el programa PicLoops
; Descripcion: Delay 2s
;-------------------------------------------------------------
DEMORA movlw D'3'
movwf cont3
movlw D'140'
movwf cont2
movlw D'83'
movwf cont1
loop decfsz cont1,1
goto loop
decfsz cont2,1
goto loop
decfsz cont3,1
goto loop
return
;-------------------------------------------------------------
END ; fin de programa
aca esta la imagen
CLICK ACAahora el problema es el siguiente, cada vez ke el semaforo pasa por la luz amarilla, las acciones en el semaforo de peatones que tiene solo 2 colores (rojo y verde) se van a nulo o mas bien dicho no hacen nada los leds están apagados, como podria hacer para que cuando la luz del de peatones este por ejemplo en verde y el semaforo de autos cambie a amarillo ese verde parpadee (el del semaforo de peatones) y en el caso de ke cuando el led del semaforo de peatones este en rojo y el de autos cambie de verdae a amarillo haga parpadear el rojo del de peatones.
seria interesantisimo poder terminar ese pequeño problemita que tengo.
cabe destacar que el semaforo lo confeccione tomando como base el ejemplo del auto fantastico adecuandolo a 3 leds y agregandole un nuevo delay, asi que el credito del codigo no es mio en si mas del 80% es del autor del codigo del auto fantastico.
gracias de antemano y saludos desde Temuco-Chile.