sorry, it's my fault !
recheck the code, and i found that the runing routine didn't execute the mixer set function.

the upper method works great in control the volume of /dev/dsp16.