solo lo desplaza a la izquierda pero no lo incrementa y por lo tanto siempre sera 1.
Entonces no sabes que lo que es desplazar a la izquierda, o un binario.
i es 0000 0001
o que es lo mismo que:
i = i << 1;
i *= 2;
i = i * 2
(todas equivalentes)
iria:
0000 0001 = 1
0000 0010 = 2
0000 0100 = 4
0000 1000 = 8
0001 0000 = 16
0010 0000 = 32
0100 0000 = 64
1000 0000 = 128
Fin del for por que llego a 128. Pasaste por todos los bits de todos los puertos. Pone el for en un while y listo.
O mejor dicho desplazar a la izquierda x lugares a un "valor" es lo mismo que: valor * 2
xEl unico "deficit" es que hay puertos que no estan completos, por lo tanto algunos no van a encender por un tiempo. Ejemplo si PORTE tiene 3 pines, va a encender por 4.5s ( 1.5s cada pin dejando ese delay ) Y luego tendrias apagado los pines restantes (5 * 1.5s = 7.5s)
Ahora acortas el delay, y tenes menos tiempo de "apagado" pero tambien de encendido, que con 0.5s basta y sobraria para poder medirlo con un tester o al tenerlo en el protoboard conectar un led + resistencia para ver si enciende.
Aparte las salidas siempre quedaran encendidas cosa que no quiero para no provocar que el micro maneje altas corrientes, que encienda una salida y luego la apague
Lo que decis contradice con lo que queres hacer. Sinceramente no se por que tengo que explicar esto.
Corriente ( descontando la que puede llegar a tener el puerto de por si ) va a tener que ver con lo que tengas conectado al puerto, si vos tenes una resistencia de 1ohm conectado a GND y al pin, vas a tener MUCHA corriente, mas de lo que puede dar el puerto. Ahora si vos tenes todos los pines al aire y solo estas midiendo la tension ( con un multimetro), no vas a tener mucha corriente saliente solo la que pueda pasar por la carga del multimetro que son 1Mohm o 10Mohm no recuerdo (uA o nA), si usas un led y le pones 10mA tampoco es "mucha" corriente.
Supuestamente este programa esta para "comprobar" el estado de los pines, eso lo unico que lo vas a poder hacer es fuera del circuito. No lo vas a hacer con un circuito de un proyecto, ya que estarias activando reles, leds, etc. Y aun asi estuviera puesto en una placa, depende de lo que tenes conectado, y no de "cuanto estuvo encendido el circuito". Y deberia estar correctamente calculado el consumo de cada puerto del PIC para que cumpla con las especificaciones del mismo.
Si quisieras podrias poner todas las salidas en 1, y luego todas en 0. Sin ningun problema. Pero adapte el programa a algo parecido a lo que querias. ( Aunque se puede hacer como vos queres tambien ) Pero no debe ser nada lindo esperar todo el puerto B,D,E por un 1 solo pin del Puerto A que no te llego los 1.5 segundos. para verlo