Two things to try... first, don't convert your dtmf_digit value to a string (ascii) value. (And if you must, then use a second variable to put the result in.) If you did this just to make the code more readable, then use constants in your CASE's. This, at the least, will allow you to eliminate a code-hungry command.

Second, if those vars are all bits (and it does look like it) then put them all in one byte, and compare byte values. So, instead of seven compares, you only have one that's efficient and easy to read ... and you can use constants for them, too...
Code:
Case 1   'note it's a byte, not a string
    if bByte_Values = %00111101 then
      bByte_Values.6 = 1
    endif 
Case cdtmf_value_2    'note the constant.
    if bByte_Values = 0 then  'can replace BV compare value with constant like cBV_dtmf_2
      bByte_Values.1 = 1
    endif          
'etc...