Buenas aqui de nuevo veran estoy programando este PIC despues de varios años de no tocar uno como no recuerdo ensamblador pues decidi usar C por ello estoy usando el CCS ahora bien hasta ahora no e tenido un gran problema; ahora bien voy a explicar más o menos por ahora que hace este codigo
1) Al empezar todos los leds verdes estan encendidos (esto lo hace bien)
2) En este caso poseemos 3 casos donde al presionar por separado cada pulsador ocurre algo
-- Si se presiona P0 (entra un 1) el semaforo S2 pasa a rojo apagando el led verde de este se mantiene 5 seg asi y vuelve a verde
-- Si se presiona P1 (entra un 1) el semaforo S0 pasa a rojo apagando el led verde se mantiene por 5 segundos y vuelve a verde
-- si se presiona P2 (entra un 1) el semaforo S1 pasa a rojo apagando el led verde se mantiene por 5 seg y vuelve a verde
Hasta aqui el programa me esta sirviendo pero ahora entro en otro estado, que es cuando se presionan dos de los interruptores al mismo tiempo no se como asignar el codigo necesario para que tome que cuando por ejemplo se presionen P0 y P1 se pongan en rojo S2 y S1 (apagando sus leds verdesy manteniendo el led verde de S0) por 5 segundo para luego poner en rojo S0 yS2 (apagando sus leds verdes y encendiendo el led verde de S1) se mantiene por 5 seg y luego todos los semaforos se ponen en verde, si ven la ultima parte del codigo veran lo que puse aunque no se si eso servira, me gustaria saber si alguien me puede ayudar con el codigo para que interprete dos valores al mismo tiempo ya que al usar lo que estoy usando por alguna razon me hace todo pero un semaforo se mantiene apagado sus dos luces cuando no deberia ser asi.
No estoy seguro si me entendieron pero les dejo la tabla de estados por si no me entendieron bien.
Con que me digan cual codigo hace que lea las dos entradas juntas al mismo tiempo me vasta gracias de antemano y espero alguien me pueda ayudar
1) Al empezar todos los leds verdes estan encendidos (esto lo hace bien)
2) En este caso poseemos 3 casos donde al presionar por separado cada pulsador ocurre algo
-- Si se presiona P0 (entra un 1) el semaforo S2 pasa a rojo apagando el led verde de este se mantiene 5 seg asi y vuelve a verde
-- Si se presiona P1 (entra un 1) el semaforo S0 pasa a rojo apagando el led verde se mantiene por 5 segundos y vuelve a verde
-- si se presiona P2 (entra un 1) el semaforo S1 pasa a rojo apagando el led verde se mantiene por 5 seg y vuelve a verde
Hasta aqui el programa me esta sirviendo pero ahora entro en otro estado, que es cuando se presionan dos de los interruptores al mismo tiempo no se como asignar el codigo necesario para que tome que cuando por ejemplo se presionen P0 y P1 se pongan en rojo S2 y S1 (apagando sus leds verdesy manteniendo el led verde de S0) por 5 segundo para luego poner en rojo S0 yS2 (apagando sus leds verdes y encendiendo el led verde de S1) se mantiene por 5 seg y luego todos los semaforos se ponen en verde, si ven la ultima parte del codigo veran lo que puse aunque no se si eso servira, me gustaria saber si alguien me puede ayudar con el codigo para que interprete dos valores al mismo tiempo ya que al usar lo que estoy usando por alguna razon me hace todo pero un semaforo se mantiene apagado sus dos luces cuando no deberia ser asi.
No estoy seguro si me entendieron pero les dejo la tabla de estados por si no me entendieron bien.

Con que me digan cual codigo hace que lea las dos entradas juntas al mismo tiempo me vasta gracias de antemano y espero alguien me pueda ayudar
Código:
///semaforo
//se poseen tres semaforos de dos lucez cada uno
//quienes son controlados por tres interruptores
//P0, P1, P2 son los pulsadores que actuan como "sensores"
//P0= RA0, P1=RA1, P2=RA2
//se asigno a semaforo S0 (RB1, RB2), S1 (Rb3, rb4) y a S2 (RB5, RB6)
// RB1, RB3, RB5 =leds rojos
//RB2, RB4, RB6 =leds verdes
#include <16F88.h>
#use delay (clock=1000000)
#fuses HS,NOWDT,NOPUT,NOPROTECT
#byte port_b=0x06
void main() {
set_tris_a(00111);
set_tris_b(0x00);
disable_interrupts(GLOBAL);
///estado 3 semaforos en verde
do{
output_low(PIN_B1);
output_high(PIN_B2);
output_low(PIN_B3);
output_high(PIN_B4);
output_low(PIN_B5);
output_high(PIN_B6);
///fin del estado verde todos
///inicio control de los sensores
///P0, P1, P2
//presionando P0
if (input(pin_a0)){
output_low(pin_b6);
output_high(pin_b5);
delay_ms(4500);
}
//presionando P1
if (input (pin_a1)) {
output_low(pin_b2);
output_high(pin_b1);
delay_ms(4500);
}
// presionando P2
if (input (pin_a2)) {
output_low(pin_b4);
output_high(pin_b3);
delay_ms(4500);
}
////caso dos activando dos pulsadores al mismo tiempo
///caso P0 P1 presionados
if (input (pin_a0))
if (input (pin_a1)){
output_low(pin_b4);
output_high(pin_b3);
output_low(pin_b6);
output_high(pin_b5);
delay_ms(4500);
}
} while(true);//Bucle infinito
}