程序中由rand( )函数产生一个0-32767之间的伪随机整数,为使声音柔和,在freq<=1000时,退出循环而调用sound发声函数,该函数由传来的参数freq来设定频率计数值,count.divisor为119328/freq(占用两个地址单元),由于采用了单元结构,共用一个存储区,故联合结构成员count.c[0]和count.c[1]取该数的低8位和高8位(二进制位),用于初始化定时器的频率计数值. 运行该程序后,将会听到美妙的声音,当要停止时,可按任意键而由khbit( )函数控制do循环结束来实现. 由于PC机主频不同,发声效果将不同,选取freq>1000,将会在386PC机上(主频为33M)发出清脆的声音,当主频小于33M时,可适当增加此数. |