?? lts.lst
字號:
186 "1-|2_4_3_2_55|5_6_3_4_22|2_4_3_2_1_`1_7_6_|5_4_2_3_11|"
187 "2_4_3_2_55|5_6_3_4_22|2_4_3_2_1_5_2_3_|1---|"
188 };
189 //小星星
190 uchar code xingxing[]={
191 "1155|665-|4433|221-|"
192 "5544|332-|5544|332-|"
193 "1155|665-|4433|221-|"
194 };
195
196 //老鼠愛大米
197 uchar code dami[]={
198 "321-|3.2_1-|3231|3_6.5-|3_5_665|65-3_2_|122_3_2|12--|"
199 };
200
201
202 /******主函數******/
203 void main(void) // 主程序
204 {
205 1 uchar k;
206 1 uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1八個音符在頻率表中的位置
207 1 TMOD = 0x01; //使用定時器0的16位工作模式
208 1 TR0 = 0;
209 1 ET0 = 1;
210 1 EA = 1;
211 1
212 1 while(1)
213 1 {
214 2 k=keyscan();
*** WARNING C209 IN LINE 214 OF LTS.C: '_keyscan': too few actual parameters
215 2 switch(k)
216 2 {
217 3 case 1:{scan(1);tl0_f=freq[jie8[0]*2];th0_f=freq[jie8[0]*2+1]; TR0 = 1;delay(400);BEEP=1;}break;
218 3 case 2:{scan(2);tl0_f=freq[jie8[1]*2];th0_f=freq[jie8[1]*2+1]; TR0 = 1;delay(400);BEEP=1;}break;
219 3 case 3:{scan(3);tl0_f=freq[jie8[2]*2];th0_f=freq[jie8[2]*2+1]; TR0 = 1;delay(400);BEEP=1;}break;
220 3 case 4:{scan(4);tl0_f=freq[jie8[3]*2];th0_f=freq[jie8[3]*2+1]; TR0 = 1;delay(400);BEEP=1;}break;
221 3 case 5:{scan(5);tl0_f=freq[jie8[4]*2];th0_f=freq[jie8[4]*2+1]; TR0 = 1;delay(500);BEEP=1;}break;
222 3 case 6:{scan(6);tl0_f=freq[jie8[5]*2];th0_f=freq[jie8[5]*2+1]; TR0 = 1;delay(500);BEEP=1;}break;
223 3 case 7:{scan(7);tl0_f=freq[jie8[6]*2];th0_f=freq[jie8[6]*2+1]; TR0 = 1;delay(500);BEEP=1;}break;
224 3 case 8:scan(8);play(xianjian); break;
225 3 case 9:scan(9);play(song3); break;
226 3 case 10:scan(10);play(boluo); break;
227 3 case 11:scan(11);play(xingxing); break;
228 3 case 12:scan(12);play(mamahao); break;
229 3 case 13:scan(13);play(dami); break;
230 3 }
231 2 TR0 = 0;
232 2 }
233 1 }
234 /******鍵盤輸入函數******/
235 uchar keyscan(uchar key)
236 {
237 1 uchar n;
238 1 P1=0xfe;
239 1 n=P1;
240 1 n&=0xf0;
C51 COMPILER V7.01 LTS 07/10/2008 21:01:42 PAGE 5
241 1 if(n!=0xf0)
242 1 {
243 2 delay(20);
244 2 P1=0xfe;
245 2 n=P1;
246 2 n&=0xf0;
247 2 if(n!=0xf0)
248 2 {
249 3 switch(n)
250 3 {
251 4 case(0xe0):key=12;break;
252 4 case(0xd0):key=9;break;
253 4 case(0xb0):key=5;break;
254 4 case(0x70):key=1;break;
255 4 }
256 3 }
257 2 }
258 1
259 1 P1=0xfd;
260 1 n=P1;
261 1 n&=0xf0;
262 1 if(n!=0xf0)
263 1 {
264 2 delay(20);
265 2 P1=0xfd;
266 2 n=P1;
267 2 n&=0xf0;
268 2 if(n!=0xf0)
269 2 {
270 3 switch(n)
271 3 {
272 4 case(0xe0):key=13;break;
273 4 case(0xd0):key=0;break;
274 4 case(0xb0):key=6;break;
275 4 case(0x70):key=2;break;
276 4 }
277 3 }
278 2 }
279 1
280 1 P1=0xfb;
281 1 n=P1;
282 1 n&=0xf0;
283 1 if(n!=0xf0)
284 1 {
285 2 delay(20);
286 2 P1=0xfb;
287 2 n=P1;
288 2 n&=0xf0;
289 2 if(n!=0xf0)
290 2 {
291 3 switch(n)
292 3 {
293 4 case(0xe0):key=14;break;
294 4 case(0xd0):key=10;break;
295 4 case(0xb0):key=7;break;
296 4 case(0x70):key=3;break;
297 4 }
298 3 }
299 2 }
300 1
301 1 P1=0xf7;
302 1 n=P1;
C51 COMPILER V7.01 LTS 07/10/2008 21:01:42 PAGE 6
303 1 n&=0xf0;
304 1 if(n!=0xf0)
305 1 {
306 2 delay(20);
307 2 P1=0xf7;
308 2 n=P1;
309 2 n&=0xf0;
310 2 if(n!=0xf0)
311 2 {
312 3 switch(n)
313 3 {
314 4 case(0xe0):key=15;break;
315 4 case(0xd0):key=11;break;
316 4 case(0xb0):key=8;break;
317 4 case(0x70):key=4;break;
318 4 }
319 3 }
320 2 }
321 1 return (key);
322 1 }
323
324 /******延時函數******/
325 void delay(uint t)
326 {
327 1 uint i,j;
328 1 for(i=0;i<t;i++)
329 1 {
330 2 for(j=0;j<250;j++)
331 2 {;}
332 2 }
333 1 }
334
335 /******顯示函數******/
336 void scan(uint i)
337 {
338 1
339 1 P2=0xf0;
340 1 P0=table[i];
341 1 }
342
343 /******峰鳴器函數******/
344 void bi(ulong t)
345 {
346 1 ulong c;
347 1 uint n;
348 1 for(c=0;c<t;c++)
349 1 {
350 2 for(n=0;n<50;n++); //延時
351 2 BEEP=~BEEP; //取反輸出到喇叭的信號
352 2 }
353 1 }
354
355 //定時中斷0,用于產生唱歌頻率
356 timer0() interrupt 1
357 {
358 1 TL0=tl0_f;TH0=th0_f; //調入預定時值
359 1 BEEP=~BEEP; //取反音樂輸出IO
360 1 }
361
362
C51 COMPILER V7.01 LTS 07/10/2008 21:01:42 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1249 ----
CONSTANT SIZE = 800 ----
XDATA SIZE = ---- 224
PDATA SIZE = ---- ----
DATA SIZE = 18 28
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -