📄 playsound.lst
字号:
C51 COMPILER V7.50 PLAYSOUND 09/20/2008 15:21:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PLAYSOUND
OBJECT MODULE PLACED IN playSound.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE playSound.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "playSound.h"
2
3 extern xdata uchar MeasureType;
4 extern xdata uchar s_MHz;//the second part of the period,The Millions of the frequency value
5 extern xdata uint ms_KHz,us_Hz;////the ms and us part of the period
6 extern xdata uint decimal;//the part after point of the frequency and period
7
8 extern unsigned char xdata soundNumList[10];//0xee为结束标志
9
10 void soundPeriod()
11 {
12 1 if(MeasureType==1)
13 1 Sound5008Play(PERIOD_SOUND);//周期
14 1 else if(MeasureType==2)
15 1 Sound5008Play(INTERVAL_SOUND);//间隔
16 1 Delayms(3*ONE_WORD);
17 1
18 1 if(s_MHz>0)
19 1 {
20 2 soundInteger(s_MHz);
21 2 Sound5008Play(POINT_SOUND);//点
22 2 Delayms(ONE_WORD);
23 2 soundDecimal(ms_KHz,3);
24 2 soundDecimal(us_Hz,3);
25 2 soundDecimal(decimal,3);
26 2 Sound5008Play(SECOND_SOUND);//秒
27 2 Delayms(3*ONE_WORD);
28 2 }
29 1 else if(ms_KHz>0)
30 1 {
31 2 soundInteger(ms_KHz);
32 2 Sound5008Play(POINT_SOUND);//点
33 2 Delayms(ONE_WORD);
34 2 soundDecimal(us_Hz,3);
35 2 soundDecimal(decimal,3);
36 2 Sound5008Play(MS_SOUND);//毫秒
37 2 Delayms(3*ONE_WORD);
38 2 }
39 1 else if(us_Hz>=0)
40 1 {
41 2 if(us_Hz==0)
42 2 Sound5008Play(10);//零
43 2 else
44 2 soundInteger(us_Hz);
45 2 Delayms(ONE_WORD);
46 2 Sound5008Play(POINT_SOUND);//点
47 2 Delayms(ONE_WORD);
48 2 soundDecimal(decimal,3);
49 2 Sound5008Play(US_SOUND);//微秒
50 2 Delayms(3*ONE_WORD);
51 2 }
52 1
53 1 }
54
55 void soundFrequency()
C51 COMPILER V7.50 PLAYSOUND 09/20/2008 15:21:11 PAGE 2
56 {
57 1 Sound5008Play(FREQUENCY_SOUND);
58 1 Delayms(3*ONE_WORD);
59 1
60 1 if(s_MHz>0)
61 1 {
62 2 soundInteger(s_MHz);
63 2 Sound5008Play(POINT_SOUND);//点
64 2 Delayms(ONE_WORD);
65 2 soundDecimal(ms_KHz,3);
66 2 soundDecimal(us_Hz,3);
67 2 soundDecimal(decimal,4);
68 2 Sound5008Play(MHZ_SOUND);
69 2 Delayms(3*ONE_WORD);
70 2 }
71 1 else if(ms_KHz>0)
72 1 {
73 2 soundInteger(ms_KHz);
74 2 Sound5008Play(POINT_SOUND);//点
75 2 Delayms(ONE_WORD);
76 2 soundDecimal(us_Hz,3);
77 2 soundDecimal(decimal,4);
78 2 Sound5008Play(KHZ_SOUND);
79 2 Delayms(3*ONE_WORD);
80 2 }
81 1 else if(us_Hz>=0)
82 1 {
83 2 if(us_Hz==0)
84 2 Sound5008Play(10);//零
85 2 else
86 2 soundInteger(us_Hz);
87 2 Delayms(ONE_WORD);
88 2 Sound5008Play(POINT_SOUND);//点
89 2 Delayms(ONE_WORD);
90 2 soundDecimal(decimal,4);
91 2 Sound5008Play(HZ_SOUND);
92 2 Delayms(3*ONE_WORD);
93 2 }
94 1 }
95
96
97
98 void soundDecimal(uint Number,uchar len)
99 {
100 1 xdata uchar ch,j;
101 1 uchar i=0;
102 1 while(Number)
103 1 {
104 2 soundNumList[i] = Number%10;
105 2 if(0==soundNumList[i])
106 2 soundNumList[i]=10;
107 2 i++;
108 2 Number = Number/10;
109 2 }
110 1 for(j=i;j<len;j++)
111 1 soundNumList[j]=10;
112 1 i=len;
113 1
114 1 for(j=0;j<i/2;j++)
115 1 {
116 2 ch=soundNumList[j];
117 2 soundNumList[j]=soundNumList[i-1-j];
C51 COMPILER V7.50 PLAYSOUND 09/20/2008 15:21:11 PAGE 3
118 2 soundNumList[i-1-j]=ch;
119 2 }
120 1 soundNumList[len] = 0xee;
121 1 //几个数字声音地址已经设置好
122 1 //直接连续播放这些数字
123 1 Sound5008PlaySome();//播放声音
124 1 Delayms(ONE_WORD);
125 1
126 1 }
127
128 void soundInteger(uint Number)//限3位数
129 {
130 1 xdata uchar ch,j;
131 1 uchar i=0;
132 1 //分别取出个/十/百位
133 1 while(Number)
134 1 {
135 2 soundNumList[i] = Number%10;
136 2 if(0==soundNumList[i])
137 2 soundNumList[i]=10;
138 2 i++;
139 2 Number = Number/10;
140 2 }
141 1 //调整好顺序百/十/个
142 1 for(j=0;j<i/2;j++)
143 1 {
144 2 ch=soundNumList[j];
145 2 soundNumList[j]=soundNumList[i-1-j];
146 2 soundNumList[i-1-j]=ch;
147 2 }
148 1 //开始播放
149 1 switch(i)
150 1 {
151 2 case 3:
152 2 soundNumList[5]=0xee;
153 2 if(soundNumList[2]==0)
154 2 soundNumList[4]=0xee;
155 2 else
156 2 soundNumList[4]=soundNumList[2];
157 2 soundNumList[3]=TEN_SOUND;
158 2 if(0==soundNumList[1])
159 2 soundNumList[2]=10;
160 2 else
161 2 soundNumList[2]=soundNumList[1];
162 2 soundNumList[1]=HUNDRED_SOUND;
163 2 break;
164 2 case 2:
165 2 soundNumList[3]=0xee;
166 2 if(soundNumList[1]==0)
167 2 soundNumList[2]=0xee;
168 2 else
169 2 soundNumList[2]=soundNumList[1];
170 2 soundNumList[1]=TEN_SOUND;
171 2 break;
172 2 case 1:
173 2 soundNumList[1]=0xee;
174 2 }
175 1 Sound5008PlaySome();//播放声音
176 1 Delayms(ONE_WORD);
177 1
178 1 }
179
C51 COMPILER V7.50 PLAYSOUND 09/20/2008 15:21:11 PAGE 4
180 /*
181 void soundInteger(uint Number)//限3位数
182 {
183 xdata uchar ch,j;
184 uchar i=0;
185 //分别取出个/十/百位
186 while(Number)
187 {
188 soundNumList[i] = Number%10;
189 if(0==soundNumList[i])
190 soundNumList[i]=10;
191 i++;
192 Number = Number/10;
193 }
194 //调整好顺序百/十/个
195 for(j=0;j<i/2;j++)
196 {
197 ch=soundNumList[j];
198 soundNumList[j]=soundNumList[i-1-j];
199 soundNumList[i-1-j]=ch;
200 }
201 //开始播放
202 switch(i)
203 {
204 case 3:
205 Sound5008Play(soundNumList[0]);
206 Delayms(ONE_WORD);
207 Sound5008Play(12);//百;
208 Delayms(ONE_WORD);
209 //不要break;
210 case 2:
211 Sound5008Play(soundNumList[1]);
212 Delayms(ONE_WORD);
213 if(soundNumList[1]!=10)//十位不是0才读出“十”
214 {
215 Sound5008Play(11);//十;
216 Delayms(ONE_WORD);
217 }
218 //不要break;
219 case 1:
220 if(soundNumList[2]!=10)//个位不是0才读出
221 {
222 Sound5008Play(soundNumList[2]);//十;
223 Delayms(2*ONE_WORD);
224 }
225
226 }
227
228 }
229
230 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 928 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 4
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.50 PLAYSOUND 09/20/2008 15:21:11 PAGE 5
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -