📄 pwm2.lst
字号:
C51 COMPILER V7.08 PWM2 06/22/2006 10:27:59 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE PWM2
OBJECT MODULE PLACED IN PWM2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PWM2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**********************************************************************
2 * *功能描述:PWM试验2,利用C8051F310内部PWM,从P2.0输出一定脉宽的波波
3 * * 从而产生音乐。
4 ***********************************************************************/
5
6 #include <c8051F310.h> //C8051F31X系列头文件。
7
8 #define SYSCLK 24500000 // SYSCLK frequency in 24.5 MHz
9 #define T1_18ms 65536L - 6 * (SYSCLK / 4000L)
10 #define TH1S T1_18ms >> 8
11 #define TL1S T1_18ms
12
13
14
15 //*********************************************************************
16 //变量定义
17 //*********************************************************************
18 unsigned char music; //歌曲指针
19 unsigned char yf=0; //音符
20 unsigned char pm=0; //拍码,拍数
21 unsigned char td=0; //停顿
22 unsigned char gq; //歌曲选择
23 //////////////////////////////////////////////////////////////////////
24
25
26
27
28 //*********************************************************************
29 //歌曲
30 //*********************************************************************
31 code unsigned char tab[5][250] = {
32 {0x82, 0x01, 0x81, 0x94, 0x84, //生日快乐
33 0xb4, 0xa4, 0x04,
34 0x82, 0x01, 0x81, 0x94, 0x84,
35 0xc4, 0xb4, 0x04,
36
37 0x82, 0x01, 0x81, 0xf4, 0xd4,
38 0xb4, 0xa4, 0x94,
39 0xe2, 0x01, 0xe1, 0xd4, 0xb4,
40 0xc4, 0xb4, 0x04,
41
42 0x82, 0x01, 0x81, 0x94, 0x84,
43 0xb4, 0xa4, 0x04,
44 0x82, 0x01, 0x81, 0x94, 0x84,
45 0xc4, 0xb4, 0x04,
46
47 0x82, 0x01, 0x81, 0xf4, 0xd4,
48 0xb4, 0xa4, 0x94,
49 0xe2, 0x01, 0xe1, 0xd4, 0xb4,
50 0xc4, 0xb4, 0x04, 0x00},
51
52
53 {0x44, 0x54, 0x64,0x44, //两只老虎
54 0x44, 0x54, 0x64,0x44,
55 0x64, 0x74, 0x88,
C51 COMPILER V7.08 PWM2 06/22/2006 10:27:59 PAGE 2
56 0x64, 0x74, 0x88,
57
58 0x82, 0x92, 0x82, 0x72, 0x64, 0x44,
59 0x82, 0x92, 0x82, 0x72, 0x64, 0x44,
60 0x44, 0x84, 0x48,
61 0x44, 0x14, 0x48,
62
63 0x44, 0x54, 0x64,0x44,
64 0x44, 0x54, 0x64,0x44,
65 0x64, 0x74, 0x88,
66 0x64, 0x74, 0x88,
67
68 0x82, 0x92, 0x82, 0x72, 0x64, 0x44,
69 0x82, 0x92, 0x82, 0x72, 0x64, 0x44,
70 0x44, 0x84, 0x48,
71 0x44, 0x14, 0x48, 0x00},
72
73 {0x64, 0x64, 0x52, 0x42, //把根留住
74 0x28, 0x12, 0x22,
75 0x44, 0x44, 0x22, 0x12,
76 0xfb,
77
78 0x54, 0x54, 0x24,
79 0x64, 0x56, 0x22,
80 0x6b,
81 0x6b,
82
83 0x64, 0x64, 0x52, 0x42,
84 0x28, 0x12, 0x22,
85 0x44, 0x44, 0x22, 0x12,
86 0xfb,
87
88 0x54, 0x54, 0x24,
89 0x64, 0x56, 0x12,
90 0x2b,
91 0x2b,
92
93 0x64, 0x64, 0x52, 0x42,
94 0x28, 0x12, 0x22,
95 0x44, 0x44, 0x22, 0x12,
96 0xfb,
97
98 0x54, 0x54, 0x24,
99 0x64, 0x56, 0x22,
100 0x6b,
101 0x6b,
102
103 0x64, 0x64, 0x52, 0x42,
104 0x28, 0x12, 0x22,
105 0x44, 0x44, 0x22, 0x12,
106 0xfb,
107
108 0x54, 0x54, 0x24,
109 0x64, 0x56, 0x12,
110 0x2b,
111 0x2b,
112
113 0x13, 0x21, 0x12, 0x12, 0x12, 0x22,
114 0x48, 0x64,
115 0x52, 0x62, 0x52, 0x22, 0x52, 0x82,
116 0x6b,
117 0x94, 0x94, 0xa2, 0x94,
C51 COMPILER V7.08 PWM2 06/22/2006 10:27:59 PAGE 3
118 0x88, 0x54,
119 0x6b,
120
121 0x6b,
122 0x94, 0x94, 0x92, 0x82,
123 0x88, 0x82, 0x52,
124 0x66, 0x82, 0x52, 0x62,
125 0x2b,
126 0x54, 0x86, 0x62,
127 0x58, 0x52, 0x62,
128 0x2b,
129
130 0x24, 0x04, 0x04,
131 0x54, 0x86, 0x62,
132 0x58, 0x84,
133 0x9b, 0x9b, 0x9b, 0x00},
134
135
136
137 {0x02, 0x12, 0x42, 0x32, //童话
138
139 0x43, 0x11, 0x14, 0x02, 0x12, 0x42, 0x32,
140 0x43, 0x11, 0x14, 0x02, 0x12, 0x42, 0x32,
141 0x46, 0x42, 0x42, 0x22, 0x22, 0x12,
142 0x18, 0x02, 0x12, 0x42, 0x32,
143
144 0x42, 0x12, 0x14, 0x02, 0x12, 0x63, 0x51,
145 0x52, 0x42, 0x44, 0x02, 0x12, 0x42, 0x32,
146 0x42, 0x22, 0x02, 0x22, 0x22, 0x42, 0x92, 0x82,
147 0x88, 0x02, 0x52, 0x52, 0x72,
148
149 0x72, 0x62, 0x64, 0x02, 0x62, 0x52, 0x32,
150 0x53, 0x41, 0x42, 0x31, 0x41, 0x02, 0x42, 0x32, 0x42,
151 0x74, 0x02, 0x12, 0x82, 0x72, 0x62, 0x52,
152 0x58, 0x02, 0x52, 0x52, 0x72,
153
154 0x72, 0x62, 0x64, 0x02, 0x62, 0x62, 0xa2,
155 0xa2, 0x92, 0xa2, 0xb2, 0x02, 0xb2, 0x52, 0x42,
156 0x96, 0x92, 0x92, 0x82, 0x82, 0x82,
157 0x88, 0x02, 0x12, 0x82, 0x72,
158
159 0x64, 0x62, 0x71, 0x61, 0x64, 0x62, 0x72,
160 0x62, 0x72, 0x62, 0x51, 0x41, 0x02, 0x42, 0x62, 0x82,
161 0x94, 0x92, 0x91, 0x81, 0x82, 0x52, 0x52, 0x71, 0x61,
162 0x68, 0x02, 0x42, 0x62, 0x82,
163
164 0x94, 0x92, 0x91, 0x81, 0x52, 0x52, 0x52, 0x72,
165 0x62, 0x72, 0x62, 0x51, 0x41, 0x44, 0x52, 0x51, 0x61,
166 0x24, 0x22, 0x42, 0x42, 0x32, 0x34,
167 0x48, 0x00 },
168
169 {0x04, 0x04, 0x02, 0x42, 0x42, 0x52, //昨日重现
170 0x64, 0x84, 0x82, 0x62, 0x82, 0x62,
171 0x94, 0x84, 0x64, 0x62, 0x82,
172
173 0x94, 0x54, 0x62, 0x86,
174 0x98, 0x04, 0x62, 0x82,
175 0x94, 0xd4, 0xc2, 0xb4, 0xa2,
176 0xa6, 0x82, 0x62, 0x84, 0x64, 0x5b}
177 };
178
179
C51 COMPILER V7.08 PWM2 06/22/2006 10:27:59 PAGE 4
180 //**********************************************************************
181 //函数名:void PORT_Init (void)
182 //功能描述:端口初始化。
183 //**********************************************************************
184 void PORT_Init (void)
185 {
186 1
187 1 P2MDOUT = 0x01; // P2.0为输出。
188 1
189 1 P0SKIP = 0XFF;
190 1 P1SKIP = 0X7F;
191 1
192 1 XBR0 = 0x00; //硬件UART。
193 1 XBR1 = 0xC2; //弱上拉关,交叉开关使能,CEX1使能。
194 1 }
195
196
197
198
199 //**********************************************************************
200 //函数名:void Internal_Crystal(void)
201 //功能描述:设定内部时钟。
202 //**********************************************************************
203 void Internal_Crystal(void)
204 {
205 1 OSCICN = 0x83; // 内部振荡器允许,不分频最快频率
206 1
207 1 CLKSEL = 0x00; // 使用内部振荡器。
208 1 }
209
210 //**********************************************************************
211 //函数名:void PWMInit(void)
212 //功能描述:PWM初始化。
213 //**********************************************************************
214 void PWMInit(void)
215 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -