📄 +
字号:
C51 COMPILER V7.50 __乐 05/16/2010 11:40:41 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE __乐
OBJECT MODULE PLACED IN 音乐.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 音乐.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*-----------------------------------------------
2 名称:音乐播放
3 修改:无
4 内容:
5 ------------------------------------------------*/
6 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
7
8 sbit speaker=P1^2; //定义音乐输出端口,需要连接到对应的喇叭,请参考电路图
9 unsigned char timer0h,timer0l,time;
10 //世上只有妈妈好数据表
11 code unsigned char sszymmh[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
12 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
13 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
14 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
15 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0
16 };
17 // 音阶频率表 高八位
18 code unsigned char FREQH[]={
19 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
20 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
21 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
22 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
23 } ;
24 // 音阶频率表 低八位
25 code unsigned char FREQL[]={
26 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
27 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
28 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
29 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
30 };
31 /******************************************************************/
32 /* 延时函数 */
33 /******************************************************************/
34 void delay(unsigned char t)
35 {
36 1 unsigned char t1;
37 1 unsigned long t2;
38 1 for(t1=0;t1<t;t1++)
39 1 {
40 2 for(t2=0;t2<8000;t2++)
41 2 {
42 3 ;
43 3 }
44 2 }
45 1 TR0=0;
46 1 }
47 /******************************************************************/
48 /* 定时器中断函数 */
49 /******************************************************************/
50 void t0int() interrupt 1
51 {
52 1 TR0=0;
53 1 speaker=!speaker;
54 1 TH0=timer0h;
55 1 TL0=timer0l;
C51 COMPILER V7.50 __乐 05/16/2010 11:40:41 PAGE 2
56 1 TR0=1;
57 1 }
58 /******************************************************************/
59 /* 音乐处理函数 */
60 /******************************************************************/
61 void song()
62 {
63 1 TH0=timer0h;
64 1 TL0=timer0l;
65 1 TR0=1;
66 1 delay(time);
67 1 }
68 /******************************************************************/
69 /* 主函数 */
70 /******************************************************************/
71 void main(void)
72 {
73 1 unsigned char k,i;
74 1 TMOD=1; //置CT0定时工作方式1
75 1 EA=1;
76 1 ET0=1;//IE=0x82 //CPU开中断,CT0开中断
77 1 while(1)
78 1 {
79 2 i=0;
80 2 while(i<100){ //音乐数组长度 ,唱完从头再来
81 3 k=sszymmh[i]+7*sszymmh[i+1]-1;
82 3 timer0h=FREQH[k];
83 3 timer0l=FREQL[k];
84 3 time=sszymmh[i+2];
85 3 i=i+3;
86 3 song();
87 3 }
88 2 }
89 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 169 ----
CONSTANT SIZE = 158 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -