Si lo de cambiar la forma de b lo he entendido, a lo que me refería es que cambiando la condición como lo habías puesto, hace lo mismo que de la forma que lo hice yo. Y si funcionaba bien lo de b++ porque cuando llegaba a ser 2, con el if que tenía lo pasaba a 0 otra vez.
Si me di cuenta de que tenía mal puestas esas dos definiciones y ya lo tengo corregido.
Y a lo último, uso el LCD como monitor para ver lo que hace, ya que no quiero jugarme a romper el ordenador aunque lo he conectado ya veces y no pasa nada, pero poca preocupación es poca.
Si a==1 lo uso para para que se lea los valores de la variable de b y con esa variable es la que usa para que tanto un relé u otro se conecte y vaya a a==2 para los disparos del triac.
Pero lo que no entiendo si siendo lo mismo, o eso creo yo, que no me haga los disparos en uno de los sentidos porque los relés funcionan correctamente y si repito el código en otro void y lo enlazo en el final del ciclo de una con el comienzo de la otra y cambio los valores de b, funciona todo bien, que es lo que me gustaría es eso, ahorrar copiar código para ahorrar espacio pero que si no es posible, pues se repite y soluciono el problema así.
Todavía me cuesta trabajar sobre microcontroladores ya que apenas llevo un año con ellos, de ahí que me cueste ver muchas cosas y puedo tirarme horas y días pero con esto se ha llevado la palma y no le saco punta.
Gracias y saludos.