C++ 11 support [SECUESTRADO]

Buenos dias.
Tengo una porción de código que no me opera, es la siguiente:
En void setup() se asignó DDRB=0X38 y E_S=1

y en void loop() luego de variar la variable cont3
tengo:

if (cont3 > 1 ){
   cont3=0;
   a=0x10; //será pin12=PB4=1
   i
   if (E_S == 1) a=0x00;
   E_S = -E_S;
   PORTB = (PINB & 0x28); // queda PB4=0
   PORTB = (PINB | a); //PB4 con nuevo valor

Con este código no me caria la salida PB4

PERO SI USO:

if (cont3 > 1 ){
   cont3=0;  
   E_S =! E_S;
   digitalWrite(12,E_S);

Si me varia la salida 12 que es la misma PB4.

No he podido identificar el error.
Gracias por la ayuda.