You're right, for a PIC18 WREG is the name of a register.

If you're using a PIC16 then you have to declare a variable named WREG as I mentioned in post #9

Quote Originally Posted by tumbleweed View Post
If you're using a PIC16 then you'll have to add a definition for a WREG variable
Code:
WREG var byte
If you wanted to make the code the same for all devices then change all the references to WREG to a byte variable instead, including the SHOUT subroutine.
Here I've named it SHDATA.
Code:
SHDATA var byte

SHDATA = $55
call SHOUT