📄 audio.lst
字号:
C51 COMPILER V7.20 AUDIO 02/28/2006 10:06:01 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE AUDIO
OBJECT MODULE PLACED IN audio.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE audio.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "C8051F020.h"
2
3 unsigned char m;
4 unsigned char rti;
5 unsigned char len;
6 unsigned char code toneh[14] = {0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,
7 0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff}; /*音频表:高位. */
8 unsigned char code tonel[14] = {0x44,0xac,0xba,0x34,0x82,0xc8,0x05,
9 0x22,0x56,0x84,0x9a,0xc1,0xe4,0x03}; /*音频表:低位 */
10 //unsigned char code song[]="123112313455345556543256543215111511";
11 //unsigned char code length[]="444444444444444422224422224444444444"; /* 音谱 */
12
13 //梁祝
14 unsigned char code song[]="5321112uytttttu6755676567611656523432111572y1ttty1tttteetty112y1t55166535222
-2223uytty12e1yyt61tttt335u2y1tt5eetetyu2yyyty6112532321yte311yqytety1tttttt5553tttttttt";
15 unsigned char code length[]="44442244442422444412442222412222222224244444442422424242412412224412212224242
-4124441244442122242424124422442211222224242241244422422224222222222424222422442224222";
16
17 //两只蝴蝶
18 //unsigned char code song[]="3233232116122321yytt323323211y122321y122";
19 //unsigned char code length[]="2242222422242222224222422224222422222242"; /* 音谱 */
20
21
22 void SysInit()
23 {
24 1 int i; // delay counter
25 1
26 1 WDTCN = 0x07; // Watchdog Timer Control Register
27 1 WDTCN = 0xde; // disable watchdog timer
28 1 WDTCN = 0xad;
29 1
30 1 OSCXCN = 0x67; // start external oscillator with 25MHz crystal
31 1
32 1 for (i=0; i < 256; i++) ; // XTlVlD blanking interval (>1ms)
33 1
34 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
35 1
36 1 OSCICN = 0x88; // select external oscillator as SYSClK
37 1 // source and enable missing clock detector
38 1
39 1 // OSCICN = 0x97; // select internal oscillator as SYSClK
40 1
41 1
42 1 XBR2 = 0x40; // Enable crossbar and weak pull-ups
43 1 P1MDOUT = 0xFF;
44 1 }
45
46 void timer0(void) interrupt 1 /*定时器0中断服务程序 */
47 {
48 1 P11 = !P11; /* P1口取反 */
49 1 TH0 = toneh[rti]; /* 装入音频初值 */
50 1 TL0 = tonel[rti];
51 1 }
52
53 void timer1(void) interrupt 3 /*定时器1中断服务程序 */
C51 COMPILER V7.20 AUDIO 02/28/2006 10:06:01 PAGE 2
54 {
55 1 TH1 = 0x34; /*重装定时初值 */
56 1 TL1 = 0x8c;
57 1 m++;
58 1 }
59
60 unsigned char playc(char ch) /*音符---音频转换程序 */
61 {
62 1 unsigned char ti;
63 1 switch (ch)
64 1 {
65 2 case'q': ti=0; break;
66 2 case'w': ti=1; break;
67 2 case'e': ti=2; break;
68 2 case'r': ti=3; break;
69 2 case't': ti=4; break;
70 2 case'y': ti=5; break;
71 2 case'u': ti=6; break;
72 2 case'1': ti=7; break;
73 2 case'2': ti=8; break;
74 2 case'3': ti=9; break;
75 2 case'4': ti=10; break;
76 2 case'5': ti=11; break;
77 2 case'6': ti=12; break;
78 2 case'7': ti=13; break;
79 2 case' ': ti=50; break;
80 2 default: ti=50; break;
81 2 }
82 1 if (ti==50)
83 1 return(100);
84 1 return(ti);
85 1 }
86
87
88 void main(void)
89 {
90 1 unsigned char i;
91 1
92 1 SysInit();
93 1
94 1 m = 0;
95 1 TMOD = 0x11; /* 定时方式1 */
96 1 P11 = 0;
97 1 TH0 = toneh[0]; /*定时器字置音频初值 */
98 1 TL0=tonel[0];
99 1 TH1=0x34; /*定时器置定时25ms初值 */
100 1 TL1=0x8c;
101 1 IP=0x08; /*定时器1中断优先 */
102 1 EA=1; /*开CPU中断 */
103 1 ET0=1; /*开T/C0中断 */
104 1 ET1=1; /*开T/C1中断 */
105 1 TR0=1; /*启动T/C0 */
106 1 TR1=1; /*启动T/C1 */
107 1
108 1 //for(i=0; i<36; i++)
109 1 i=0;
110 1 while(song[i]!='\0')
111 1 {
112 2 rti=playc(song[i]);
113 2 len=5*(length[i]-0x30);
114 2 while(m<len) ;
115 2 m=0;
C51 COMPILER V7.20 AUDIO 02/28/2006 10:06:01 PAGE 3
116 2 i++;
117 2 }
118 1 TR0=0; /*关相关中断 */
119 1 TR1=0;
120 1 P11=0; /*关PC喇叭 */
121 1
122 1 while(1) ;
123 1 }
124
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 312 ----
CONSTANT SIZE = 355 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 1
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 + -