📄 蜂鸣器唱歌.lst
字号:
C51 COMPILER V7.50 蜂胈芲唱歌 04/09/2009 15:19:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 蜂胈芲唱歌
OBJECT MODULE PLACED IN 蜂鸣器唱歌.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE 蜂鸣器唱歌.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 * 文件名 : 蜂鸣器唱歌.c
3 * 描述 : 该程序实现控制蜂鸣器演奏音乐。
4 * 创建人 : 东流,2009年4月9日
5 * 版本号 : 2.0
6 * 技术支持论坛:www.zidh.com/bbs(请进入“赞助商板块”中的“东流电子工作室”)
7 * 感谢“中国自动化资讯网”对本工作室的大力支持。
8 ***********************************************************************/
9 #include<reg52.h>
10 #define uchar unsigned char
11 #define uint unsigned int
12 uchar Count;
13
14 sbit Speak =P3^5; //蜂鸣器器控制脚
15 /*以下数组是音符编码*/
16 unsigned char code SONG[] ={ //祝你平安
17 0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
18 0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
19 0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
20 0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
21 0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
22 0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
23 0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
24 0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
25 0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
26 0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
27 0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
28 0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
29 0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
30 0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
31 //路边的野华不要采
32 0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
33 0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
34 0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
35 0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
36 0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
37 0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
38 0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
39 0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
40 0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
41 0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
42 0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
43 0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,
44
45 };
46
47 /********************************************************************
48 * 名称 : Time0_Init()
49 * 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms
50 * 输入 : 无
51 * 输出 : 无
52 ***********************************************************************/
53 void Time0_Init()
54 {
55 1 TMOD = 0x01;
C51 COMPILER V7.50 蜂胈芲唱歌 04/09/2009 15:19:08 PAGE 2
56 1 IE = 0x82;
57 1 TH0 = 0xDC;
58 1 TL0 = 0x00;
59 1 }
60
61 /********************************************************************
62 * 名称 : Time0_Int()
63 * 功能 : 定时器中断,中断中实现 Count 加一
64 * 输入 : 无
65 * 输出 : 无
66 ***********************************************************************/
67 void Time0_Int() interrupt 1
68 {
69 1 TH0 = 0xDC;
70 1 TL0 = 0x00;
71 1 Count++; //长度加1
72 1 }
73
74 /********************************************************************
75 * 名称 : Delay_xMs()
76 * 功能 : 延时子程序,经过软件调试,测得延时程序大概为55us.
77 * 输入 : x
78 * 输出 : 无
79 ***********************************************************************/
80 void Delay_xMs(uint x)
81 {
82 1 uint i,j;
83 1 for(i=0; i<x; i++)
84 1 {
85 2 for(j=0; j<3; j++);
86 2 }
87 1 }
88
89 /********************************************************************
90 * 名称 : Play_Song()
91 * 功能 : 播放蜂鸣器控制程序
92 * 输入 : i (选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”
93 * 输出 : 无
94 ***********************************************************************/
95 void Play_Song(uchar i)
96 {
97 1 uchar Temp1,Temp2;
98 1 uint Addr;
99 1 Count = 0; //中断计数器清0
100 1 Addr = i * 217;
101 1 while(1)
102 1 {
103 2 Temp1 = SONG[Addr++];
104 2 if (Temp1 == 0xFF) //休止符
105 2 {
106 3 TR0 = 0;
107 3 Delay_xMs(100);
108 3 }
109 2 else if (Temp1 == 0x00) //歌曲结束符
110 2 {
111 3 return;
112 3 }
113 2 else
114 2 {
115 3 Temp2 = SONG[Addr++];
116 3 TR0 = 1;
117 3 while(1)
C51 COMPILER V7.50 蜂胈芲唱歌 04/09/2009 15:19:08 PAGE 3
118 3 {
119 4 Speak = ~Speak;
120 4 Delay_xMs(Temp1);
121 4 if(Temp2 == Count)
122 4 {
123 5 Count = 0;
124 5 break;
125 5 }
126 4 }
127 3 }
128 2 }
129 1 }
130 /********************************************************************
131 * 名称 : Main()
132 * 功能 : 主函数
133 * 输入 : 无
134 * 输出 : 无
135 ***********************************************************************/
136 void Main()
137 {
138 1 Time0_Init(); //定时器0中断初始化
139 1 while(1)
140 1 {
141 2 Play_Song(0); //Play_Song(0)为祝你平安 Play_Song(1)为路边的野花你不要裁
142 2 }
143 1 }
144
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 163 ----
CONSTANT SIZE = 407 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 3
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 + -