用voice_out函数参数的波形,肯定不是pwm=50,而且是频率越高,偏差越大。原因是低电平的时间是delay(del),而高电平的时间是,delay(del),加上读取AD的时间,加上其他指令的时间。这个,最终也会影响波形的周期,进而影响频率。
int是整数,1000/(2*del)得到的数值,肯定不是精确的,拿极限来说,del==500与del==600,得到的值tt就是相同的。再者,tone得到的波形,pwm=50(小误差忽略),跟你voice_out得到波不一样。
综上所述,你听到的声音会不一样。