estas usando una variable de 32bits para 10bits, eso es un derroche de memoria.
Como ya te dije, en CCS usa "int32" en vez del long, el long te lo puse porque yo uso C18 y es distinto el tamaño de las variables.
int32 trama1=0b11111111....hasta 32 (sin contar el 0b).
ES MUY IMPORTANTE PONERLE EL 0b, esto significa que estas diciendo que el numero es binario, el 0b no cuenta nada, el numero 0b110 es 1-1-0 en binario.
Tienes que tener muy claro que no es lo mismo trabajar con binario, que decimal, que hexadecimal, al fin y al cabo todos significan lo mismo, pero cuando te he propuesto la idea del desplazamiento de bits debes trabajar en binario con esa variable.