📄 music.lst
字号:
C51 COMPILER V7.50 MUSIC 07/26/2005 09:03:07 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MUSIC
OBJECT MODULE PLACED IN Music.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Music.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***************************************/
2 /* CopyRight 2005 LiuYong *
3 /****************************************
4 文件名称:Music.C
5 文件版本:V1.0
6 创建人员:LiuYong
7 创建日期:2005.6.28
8 功能描述:用蜂鸣器播放音乐的函数
9 相关硬件:at89s52兼容单片机,晶体11.0592M
10 修改记录:
11 ***************************************/
12 #include <regx52.H>
13 #include "musicda.h"
14
15
16 #define uchar unsigned char
17 #define uint unsigned int
18
19 sbit BUZZER =P1^5;
20
21 uchar g_ucMusicNo; //正在播放的曲目的序号
22 uint g_ucSoundLongCNT; //
23 //uint g_uTempo;
24
25 /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
26
27 音乐数据
28
29 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
30
31
32 /*************Music1: Happy birthday*********************/
33 uchar code SOUNDLONG1[]=
34 {
35 _8d,_16,_4,_4,_4,_2,
36 _8d,_16,_4,_4,_4,_2,
37 _8d,_16,_4,_4,_4,_4,_4,
38 _8d,_16,_4,_4,_4,_2,
39 0
40 };
41 uint code SOUNDTONE1[]=
42 {
43 _RE,_RE,_MI,_RE,_SO,_FAr,
44 _RE,_RE,_MI,_RE,_LA,_SO,
45 _RE,_RE,_RE1,_TI,_SO,_FAr,_MI,
46 _DO1,_DO1,_TI,_SO,_LA,_SO,
47 0
48 };
49 /*************Music2: 月朦胧鸟朦胧*******************/
50 uchar code SOUNDLONG2[]=
51 {
52 _2,_4,_2,_4,_2,_4,_2d,
53 _2,_4,_4,_4,_4,_1,
54 _2,_4,_2,_8,_8,_2,_8,_8,_2d,
55 _2,_4,_2,_4,_1,
C51 COMPILER V7.50 MUSIC 07/26/2005 09:03:07 PAGE 2
56 0
57
58 };
59 uint code SOUNDTONE2[]=
60 {
61 _1SO,_DO,_MI,_DO,_1LA,_DO,_1SO,
62 _MI,_MI,_MI,_RE,_DO,_RE,
63 _SO,_SO,_SO,_LA,_SO,_MI,_RE,_DO,_1LA,
64 _SO,_SO,_MI,_RE,_DO,
65 0
66 };
67 /*************Music3: 郊游******************/
68 uchar code SOUNDLONG3[]=
69 {
70 _4,_4,_4,_4,_4,
71 _4d,_8,_4,_4,_4,_4,_4,
72 _4,_4,_4,_4,_4,
73 _4,_8,_8,_4,_4,_2,
74 0
75 };
76 uint code SOUNDTONE3[]=
77 {
78 _RE1,_RE1,_RE1,_TI,_RE1,
79 _RE1,_TI,_SO,_TI,_LA,_SO,_RE,
80 _MI,_SO,_RE,_SO,_TI,
81 _RE1,_SO,_LA,_TI,_LA,_SO,
82 0
83 };
84 /*************Music4: Three wheel******************/
85 uchar code SOUNDLONG4[]=
86 {
87 _8,_8,_8d,_16,
88 _8,_8,_4,
89 _8,_8,_8,_8,
90 _8,_8,_4,
91
92 _8,_8,_8d,_16,
93 _8,_8,_8d,_16,
94 _8,_16,_16,_8,_16,_16,
95 _8,_8,_4,
96 0
97 };
98 uint code SOUNDTONE4[]=
99 {
100 _DO,_DO,_RE,_MI,
101 _SO,_SO,_MI,
102 _SO,_SO,_LA,_TI,
103 _DO1,_DO1,_SO,
104 _DO1,_DO1,_LA,_SO,
105 _MI,_LA,_SO,_MI,
106 _DO,_RE,_MI,_SO,_LA,_SO,
107 _MI,_RE,_DO,
108 0
109 };
110 /**************彩虹妹妹**********************/
111 uchar code SOUNDLONG5[]=
112 {
113 _4,_8,_8,_4,_8,_8,
114 _8,_4,_8,_2,
115 _4,_8,_8,_4,_8,_8,
116 _8,_4,_8,_2,
117 _4,_8,_8,_8,_8,_8,_8,
C51 COMPILER V7.50 MUSIC 07/26/2005 09:03:07 PAGE 3
118 _8,_4,_8,_2,
119 _4,_4,_4,_8,_8,
120 _8,_4,_8,_2,
121 0
122 };
123 uint code SOUNDTONE5[]=
124 {
125 _LA,_SO,_MI,_LA,_SO,_MI,
126 _LA,_LA,_SO,_LA,
127 _LA,_SO,_MI,_LA,_SO,_MI,
128 _RE,_RE,_DO,_RE,
129 _MI,_MI,_SO,_LA,_DO1,_LA,_SO,
130 _MI,_MI,_SO,_DO,
131 _MI,_MI,_MI,_MI,_MI,
132 _1LA,_1LA,_1SO,_1LA,
133 0
134 };
135
136
137
138 /*************************************************
139 * 函数名称:void T2Init(void)
140 * 创建日期:2005.6.17
141 * 功能描述:定时器T2初始化
142 * 入口参数:uT2Reg:定时器初值
143 * 返回值: 无
144 * 修改日志:
145 *************************************************/
146 void T2Init(uint uT2Reg)
147 {
148 1 CP_RL2=0; //16位自动重载
149 1 T2MOD=0x00; //计数增加,外部捕获禁止
150 1 RCLK=0;
151 1 TCLK=0;
152 1 TL2=RCAP2L=uT2Reg&0x00ff;
153 1 TH2=RCAP2H=uT2Reg>>8;
154 1 TR2=1; // 启动定时器
155 1 ET2=1; //t2开中断
156 1 EA=1;
157 1 }
158 /*************************************************
159 * 函数名称:void MusicPlay(uchar ucSL[],uint uST[])
160 * 创建日期:2005.7.12
161 * 功能描述:播放某首音乐的函数
162 * 入口参数:ucSL[]:音节长度的数组;uST[]:音乐频率的数组
163 * 返回值: 无
164 * 修改日志:
165 *************************************************/
166 void MusicPlay(uchar ucSL[],uint uST[])
167 {
168 1 uchar i=0;
169 1 //float fTmp=0;
170 1 while((ucSL[i]!=0)||(uST[i]!=0))
171 1 {
172 2 //fTmp=(float)11059/(float)12000;
173 2 T2Init(0xffff-uST[i]*((float)11059/(float)12000)); //11。0592M的晶体
174 2 g_ucSoundLongCNT=((MODERATO*ucSL[i]*1000L)/8)/uST[i];
175 2 while(g_ucSoundLongCNT!=0); //等待计数器为0
176 2 TR2=0; //暂时关闭定时器
177 2 i++;
178 2 }
179 1 }
C51 COMPILER V7.50 MUSIC 07/26/2005 09:03:07 PAGE 4
180 /*************************************************
181 * 函数名称:void EnjoyMusic(uchar ucNO,bit bOffMusic,bit bSigleFl)
182 * 创建日期:2005.6.28
183 * 功能描述:音乐播放的函数
184 * 入口参数:ucNO:要播放的曲目序号。
185 * 返回值: 无
186 * 修改日志:
187 *************************************************/
188 void EnjoyMusic(uchar ucNO)
189 {
190 1 switch(ucNO)
191 1 {
192 2 /*******第1首音乐**********/
193 2 case 0:
194 2 {
195 3 MusicPlay(SOUNDLONG1,SOUNDTONE1); //播放音乐1
196 3 break;
197 3 }
198 2 /*******第2首音乐**********/
199 2 case 1:
200 2 {
201 3 MusicPlay(SOUNDLONG2,SOUNDTONE2); //播放音乐2
202 3 break;
203 3 }
204 2 /*******第3首音乐**********/
205 2 case 2:
206 2 {
207 3 MusicPlay(SOUNDLONG3,SOUNDTONE3); //播放音乐3
208 3 break;
209 3 }
210 2 /*******第4首音乐**********/
211 2 case 3:
212 2 {
213 3 MusicPlay(SOUNDLONG4,SOUNDTONE4); //播放音乐4
214 3 break;
215 3 }
216 2 /*******第5首音乐**********/
217 2 case 4:
218 2 {
219 3 MusicPlay(SOUNDLONG5,SOUNDTONE5); //播放音乐5
220 3 break;
221 3 }
222 2 default:
223 2 break;
224 2 }
225 1 }
226
227 /*************************************************
228 * 函数名称:void T2Init(void)
229 * 创建日期:2005.7.11
230 * 功能描述:用于音乐的音调半周期定时
231 * 入口参数:无
232 * 返回值: 无
233 * 修改日志:
234 *************************************************/
235 void T2ISR(void) interrupt 5 using 1
236 {
237 1 TF2=0; //手动清除溢出标志
238 1 if(g_ucSoundLongCNT!=0)
239 1 {
240 2 g_ucSoundLongCNT--;
241 2 }
C51 COMPILER V7.50 MUSIC 07/26/2005 09:03:07 PAGE 5
242 1 BUZZER=~BUZZER;
243 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 368 ----
CONSTANT SIZE = 453 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 7
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 + -