The error message told you exactly what the problem is. The %x format descriptor for sscanf expects to assign the value to an unsigned integer. You have passed it a pointer to a character string.
An easier option would be to use _tstoul and pass it base 16. That will give you the correct value in binary form.
* as_char = (TCHAR) _tcstoul( as_hex, NULL, 16 );
That will interpret the string passed in as a base 16 value (hexadecimal) and assign it to the location pointed to by as_char. If you print it as a %c you will see its character representation.
_tcstoul has an interesting property - you can pass it a base of zero and it will interpret the string based on a prefix. For hex the string needs to start with 0x and it supports octal strings starting with just the 0.
One minor thing - as_char can be passed as a PCTSTR since it is a constant in this function.