All possible case values need to be in the code. pc_mode[2:0] allows for 8 values and your code only has 5. You can add a one default case for the ones you don't need instead of adding each individually. For instance:
default: begin // do something here end
Generally in an edge clocked 'always@' block you should use non blocking assignments. In other words use <= instead of just the = sign.
For instance:
pc_value[7:0] <= 8'b0000_0000;
temp[7:0] = 8'bzzzz_zzzz;
There may also be a problem with this.
temp[7:0] is an internal register in your module. It is my experience that an internal register can't be tristated.
One other thing:
I believe you should have each case statement actually do something.
I'm a hobbyist programmer not an expert but maybe this will help.
Charlie