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