📄 sound.lst
字号:
144 255-FREQ/24/700/256,256-FREQ/24/700%256, //4 fa
145 255-FREQ/24/786/256,256-FREQ/24/786%256, //5 suo
146 255-FREQ/24/882/256,256-FREQ/24/882%256, //6 la
147 255-FREQ/24/990/256,256-FREQ/24/990%256, //7 xi
148
149 0xff,0xea, //0 休止符
150 255-FREQ/24/1049/256,256-FREQ/24/1049%256, //1 do
151 255-FREQ/24/1178/256,256-FREQ/24/1178%256, //2 re
152 255-FREQ/24/1322/256,256-FREQ/24/1322%256, //3 mi
153 255-FREQ/24/1400/256,256-FREQ/24/1400%256, //4 fa
154 255-FREQ/24/1572/256,256-FREQ/24/1572%256, //5 suo
155 255-FREQ/24/1665/256,256-FREQ/24/1665%256, //6 la
156 255-FREQ/24/1869/256,256-FREQ/24/1869%256, //7 xi
157 };
158
159 byte code music_frequp_tab[64]={ //升半音
160 0xff,0xea, //0 休止符
161 255-FREQ/24/139/256, //1 do 高字节 //255-FREQ/24/x/256
162 256-FREQ/24/139%256, //1 do 低字节 //256-FREQ/24/x%256
163 255-FREQ/24/156/256,256-FREQ/24/156%256, //2 re
164 255-FREQ/24/175/256,256-FREQ/24/175%256, //3 mi
165 255-FREQ/24/185/256,256-FREQ/24/185%256, //4 fa
166 255-FREQ/24/208/256,256-FREQ/24/208%256, //5 suo
167 255-FREQ/24/234/256,256-FREQ/24/234%256, //6 la
168 255-FREQ/24/262/256,256-FREQ/24/262%256, //7 xi
169
170 0xff,0xea, //0 休止符
171 255-FREQ/24/278/256,256-FREQ/24/278%256, //1 do
172 255-FREQ/24/312/256,256-FREQ/24/312%256, //2 re
173 255-FREQ/24/350/256,256-FREQ/24/350%256, //3 mi
174 255-FREQ/24/371/256,256-FREQ/24/371%256, //4 fa
175 255-FREQ/24/416/256,256-FREQ/24/416%256, //5 suo
176 255-FREQ/24/467/256,256-FREQ/24/467%256, //6 la
177 255-FREQ/24/525/256,256-FREQ/24/525%256, //7 xi
178
C51 COMPILER V7.10 SOUND 08/29/2005 13:01:45 PAGE 4
179 0xff,0xea, //0 休止符
180 255-FREQ/24/556/256,256-FREQ/24/556%256, //1 do
181 255-FREQ/24/624/256,256-FREQ/24/624%256, //2 re
182 255-FREQ/24/700/256,256-FREQ/24/700%256, //3 mi
183 255-FREQ/24/742/256,256-FREQ/24/742%256, //4 fa
184 255-FREQ/24/833/256,256-FREQ/24/833%256, //5 suo
185 255-FREQ/24/935/256,256-FREQ/24/935%256, //6 la
186 255-FREQ/24/1049/256,256-FREQ/24/1049%256, //7 xi
187
188 0xff,0xea, //0 休止符
189 255-FREQ/24/1112/256,256-FREQ/24/1112%256, //1 do
190 255-FREQ/24/1248/256,256-FREQ/24/1248%256, //2 re
191 255-FREQ/24/1400/256,256-FREQ/24/1400%256, //3 mi
192 255-FREQ/24/1484/256,256-FREQ/24/1484%256, //4 fa
193 255-FREQ/24/1618/256,256-FREQ/24/1618%256, //5 suo
194 255-FREQ/24/1764/256,256-FREQ/24/1764%256, //6 la
195 255-FREQ/24/1968/256,256-FREQ/24/1968%256, //7 xi
196 };
197 byte temp_TH1;
198 byte temp_TL1;
199
200
201 void music_int_t1 (void) interrupt 3
202 {
203 1 SOUND_PIN=~SOUND_PIN;
204 1 TH1=temp_TH1;
205 1 TL1=temp_TL1;
206 1 }
207
208 void music_delay(byte n) //延时 125*n 毫秒
209 {
210 1 Delay100uS(1250*n);
211 1 }
212
213 void music_play(byte *msc)
214 {
215 1 byte music_freq=32; //音高
216 1 byte music_long; //节拍
217 1 byte music_data=0; //音符数据
218 1 bit music_up=0; //升半音
219 1 bit music_break=0; //断奏
220 1
221 1 temp_TH1=0xff;
222 1 temp_TL1=0xea; //关输出(输出超声波)
223 1
224 1 TMOD= 0x12; //time1 work on mode 1,16bit counter.T0 on mode 2,8bit reload counter
225 1 TR1 = 1;
226 1 ET1 = 1;
227 1 EA = 1;
228 1
229 1 while (*msc != MUSIC_END)
230 1 {
231 2 music_data=*msc & 0x07;
232 2 music_long=*msc>>4;
233 2
234 2 if (music_long != 0) //是音符
235 2 {
236 3 if (*msc >=128) //需升降调
237 3 {
238 4 if (((*msc) & 0x08) == 0)
239 4 {if (music_freq >= 16) music_freq -= 16;} //音高下降
240 4 else
C51 COMPILER V7.10 SOUND 08/29/2005 13:01:45 PAGE 5
241 4 {if (music_freq < 48) music_freq += 16;} //音高上升
242 4 }
243 3 if (music_up==1) //升半音
244 3 {
245 4 temp_TH1=music_frequp_tab[music_freq + (music_data <<1)];
246 4 temp_TL1=music_frequp_tab[music_freq + (music_data <<1)+1];
247 4 }
248 3 else //不升半音
249 3 {
250 4 temp_TH1=music_freq_tab[music_freq + (music_data <<1)];
251 4 temp_TL1=music_freq_tab[music_freq + (music_data <<1)+ 1];
252 4 }
253 3 if (music_break) //断奏
254 3 {
255 4 music_delay(music_l_tab[music_long&0x07]-1);
256 4 temp_TH1=0xff;
257 4 temp_TL1=0xea;
258 4 music_delay(1);
259 4 }
260 3 else //连奏
261 3 music_delay(music_l_tab[music_long&0x07]);
262 3 }// if (music_long != 0)
263 2 else //是功能码
264 2 {
265 3 switch(music_data)
266 3 {
267 4 case 0x04: music_up=0;break; //不升半音
268 4 case 0x05: music_up=1;break; //升半音
269 4 case 0x06: music_break=0;break; //断奏
270 4 case 0x07: music_break=1;break; //连奏
271 4 default: break;
272 4 }
273 3 }
274 2 msc++;
275 2 }
276 1 TR1=0;
277 1 ET1=0; //播放结束,关T1中断
278 1 SOUND_PIN=1; //关输出
279 1 }
280
281
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 312 ----
CONSTANT SIZE = 481 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 9
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -