1) schreib das mal in deine Sourcefiles: extern volatile uint8_t test;
(edit: mit Ausnahme von main.c versteht sich)

2) naja, überleg doch mal wie diese Ausdrücke binär aussehen...
(1 << 5): 00100000
~(1 << 5): 11011111
(0 << 5): 00000000

genau aus diesem Grund macht man das nicht mit "Register |= (0<<Bit)"