gracias a todos por sus respuestas vere cual metodo me es mas sencillo implentar, ya que tendre 13 sensores y 13 lamparas, cada sensor acitivara 3 lamparas una en el lugar del sensor y las otras dos a sus lados. recorriendose una sola lampara cuando cambie de señal..
este el el programa que eh elaborado sin retardos y me funciona ala perfeccion elabore una tabla para las variables que activaran las salidas, ya que algunas entras activan salidas iguales lo implemente con compuertas or
#include <16F877A.h>
#fuses NOPROTECT,NOWDT,XT,NOPUT
#use fast_io(b)
#use fast_io(a)
#use fast_io(c)
#use fast_io(e) // Acceso rápido a las entradas y salidas
#use delay (clock=4000000,RESTART_WDT)
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,
h1,i1,j1,k1,l1;
void main()
{ output_b(0x0);
output_c(0x0); // Borra las salidas
set_tris_a(0x11);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x11);
while (true)
{
if(a||c==1)
{output_high(48); }
else output_low(48);
if(b||d||f==1)
{output_high(49); }
else
output_low(49);
if(e||g||i==1)
{output_high(50); }
else
output_low(50);
if(h||j||l==1)
{ output_high(51); }
else
output_low(51);
if(k||m||o==1)
{ output_high(52); }
else
output_low(52);
if(n||p||r==1)
{ output_high(53); }
else
output_low(53);
if (q||s||u==1)
{output_high(54); }
else
output_low(54);
if (t||v||x==1)
{output_high(55); }
else
output_low(55);
if (w||y||a1==1)
{output_high(56); }
else
output_low(56);
if (z||b1||d1==1)
{output_high(57); }
else
output_low(57);
if (c1||e1||g1==1)
{output_high(58); }
else
output_low(58);
if (f1||h1||j1==1)
{output_high(59); }
else
output_low(59);
if (i1||k1==1)
{ output_high(60); }
else
output_low(60);
if (l1==1)
{ output_high(61); }
else
output_low(61);
/// entradas //
if (input(40))
{ a=b=1; }
else a=b=0;
if (input(41))
{ c=e=d=1; }
else
c=d=e=0;
if (input(42))
{ f=g=h=1; }
else
f=g=h=0;
if (input(43))
{ i=j=k=1; }
else
i=j=k=0;
if (input (44))
{ l=m=n=1; }
else
l=m=n=0;
if (input(45))
{o=p=q=1; }
else
o=p=q=0;
if (input(64))
{ r=s=t=1; }
else
r=s=t=0;
if (input(65))
{ u=v=w=1; }
else
u=v=w=0;
if (input(66))
{ x=y=z=1; }
else
x=y=z=0;
if (input(67))
{ a1=b1=c1=1; }
else
a1=b1=c1=0;
if (input(68))
{ d1=e1=f1=1; }
else
d1=e1=f1=0;
if (input(69))
{ g1=h1=i1=1; }
else
g1=h1=i1=0;
if (input(70))
{ j1=k1=l1=1; }
else
j1=k1=l1=0;
}
}
el problema que no soy muy experimentado en CCS y nunca eh usado las interrupciones si alguien me podria dar una ejemplo con el codigo que te puse se los agradeceria mucho..