[例9-12] 音乐程序music1.c #include #include void pause(int). void sound1(int,int). void main(void) { int i,freq,speed=5. int time=4*speed. char *qm="iddgwwwqqgfff dddfghhhggg ddgwwwqqgfff\ ddffhjqqqqq wpggjhgddgqq hhqwwqjjjggg\ ddgwwwqqqgfff ddffhjqqqqqq"./*定义歌曲*/ while (*qm != \0 ){ i=1. switch(*qm){ case k : time=1*speed. i=0. break. case i : time=6*speed. i=0. break. case o : time=10*speed. i=0. break. case p : pause(time). i=0. break. case a : freq=523. break. case s : freq=587. break. case d : freq=659. break. case f : freq=698. break. case g : freq=784. break. case h : freq=880. break. case j : freq=988. break. case z : freq=262. break. case X : freq=294. break. case c : freq=330. break. case v : freq=349. break. case b : freq=392. break. case n : freq=440. break. case m : freq=494. break. case q : freq=1047. break. case w : freq=1175. break. case e : freq=1319. break. case r : freq=1397. break. case t : freq=2568. break. case y : freq=1760. break. case u : freq=1976. break. default: i=0. break. } if(i) sound1(freq,time). } } void sound1(int freq,int time) /*freq为频率,time为持续时间*/ { union{ long divisor. unsigned char c[2]. }count. unsigned char ch; count.divisor=1193280/freq. /* 1193280 是系统时钟速率*/ outp(67,182). outp(66,count.c[0]). outp(66,count.c[1]). ch=inp(97). outp(97,ch|3). pause(time). outp(97,ch). } void pause(int time) { int t1,t2. union REGS in,out. in.h.ah=0X2c. int86(0X21,&.in,&.out). /* 取当前时间*/ t1=t2=100*out.h.dh out.h.dl. /*out.h.dh 为秒值,out.h.dl 为1/100 秒值*/ while(t2-t1