gracias, tapi8.yo lo he hecho de la siguiente manera, agredeceria cualquier critica por vuestra parte, ya que seguro que será constructiva.
Todo funciona bien, pero lo dicho agradeceria algo tipo, pues yo esto lo hago de esta manera.... o yo esto asi es un lio lo haria de tal manera....
gracias.
;REGISTROS DEL SISTEMA
#INCLUDE P18F4620.INC
LIST P=PIC18F4620
;REGISTROS DEL USUARIO
TIEMPO1 EQU 0x12
TIEMPO2 EQU 0x13
TIEMPO3 EQU 0x13
;VECTOR DE RESET
ORG 0X0000
GOTO INICIO
;INICIO DE PROGRAMA
ORG 0X0100
INICIO
;PROGRAMAMOS PUERTOS
movlw B'01100000'
movwf OSCCON ;Ajustamos el oscilador interno a 4 MHz
movlw B'00001111'
movwf ADCON1,.0 ;Todos los pines como I/O digitales
clrf TRISA,.0 ;Puerto A como salida
;Los demas se quedan como entradas
clrf TRISD,.0 ;Puerto D como salida
;Los demas se quedan como entradas
;INICIALIZAMOS REGISTROS USUARIO
CLRF TIEMPO1 ;Pone a 0 los 8 bits de tiempo a 0
CLRF TIEMPO2
;SALTAMOS A PROGRAMA PRINCIPAL
PROGRAMA_PRINCIPAL
BTFSS PORTB,0 ; es 1 RB0 ? (ON / OFF)
GOTO INICIO ; no, borra registro y espera a que RB0 sea 1
GOTO TEST_RB1 ; si, ve a testear si RB1=1, osea si hay peticion de peatones
TEST_RB1
BTFSS PORTB,1 ; es 1 RB1 ? hay peticion de peatones ?
GOTO SECUENCIA_ESPERA ; no, pon semaforo en verde coches y rojo peatones y sigue testeando
;los pulsadores RB0 y RB1, de momento no empieza secuencia
GOTO SECUENCIA ; si, empezamos secuencia a semaforo coches y peatones
SECUENCIA_ESPERA
movlw B'00001100' ;cargamos todos los pueros a 0, menos en RA2 y RA3 que lo ponemos a 1
movwf PORTD ;y lo cargamos al port A, por lo tanto RA7=0, RA6=0, .....RA3=1, RA2=1, RA1=0, RA0=0
;osea ponemos rojo coches y rojo peatones
GOTO PROGRAMA_PRINCIPAL
SECUENCIA
movlw B'00000000'
movwf PORTD
movlw B'00001010' ;cargamos todos los pueros a 0, menos en RA3 y RA1 que lo ponemos a 1
movwf PORTD ;y lo cargamos al port A
;osea ponemos ambar coches y seguimos en rojo peatones
RETARDO_T1 ; ESPERA DE 3 SEGONS
CLRF TIEMPO1
CLRF TIEMPO2
TEMPORIZA_T1
DECFSZ TIEMPO1,F
GOTO TEMPORIZA_T1
; FI ESPERA DE 3 SEGONS
movlw B'00000000'
movwf PORTD
movlw B'00001001'
movwf PORTD
; INICIO ESPERA DE 1 SEGONS
RETARDO_T2
MOVLW d'150'
MOVWF TIEMPO1
TEMPORIZA_T2
DECFSZ TIEMPO1,F
GOTO TEMPORIZA_T2
; FI ESPERA DE 1 SEGONS
movlw B'00000000'
movwf PORTD
movlw B'00010001'
movwf PORTD
; INICIO ESPERA DE 7 SEGONS
RETARDO_T3
CLRF TIEMPO1
TEMPORIZA_T3A
DECFSZ TIEMPO1,F
GOTO TEMPORIZA_T3A
TEMPORIZA_T3B
DECFSZ TIEMPO2,F
GOTO TEMPORIZA_T3B
; FI ESPERA DE 7 SEGONS
movlw B'00000000'
movwf PORTD
movlw B'00001001'
movwf PORTD
; INICIO ESPERA DE 1 SEGONS
RETARDO_T4
MOVLW d'150'
MOVWF TIEMPO1
TEMPORIZA_T4
DECFSZ TIEMPO1,F
GOTO TEMPORIZA_T4
; FI ESPERA DE 1 SEGONS
movlw B'00000000'
movwf PORTD
movlw B'00001100'
movwf PORTD
; INICIO ESPERA DE 7 SEGONS
RETARDO_T5
CLRF TIEMPO1
TEMPORIZA_T5A
DECFSZ TIEMPO1,F
GOTO TEMPORIZA_T5A
TEMPORIZA_T5B
DECFSZ TIEMPO2,F
GOTO TEMPORIZA_T5B
; FI ESPERA DE 7 SEGONS
GOTO PROGRAMA_PRINCIPAL ;seguimos con la secuencia del semaforo, pero
;pero analizamos de nuevo RB0 y RB1
END