📄 sound.lst
字号:
161 其它说明: //
162 *****************************************************************************/
163 void TimeInt() interrupt 1
164 {
165 1 TR0 = 0; //关闭定时器0
166 1 TL0 = 0x66; //定时器0赋初值
167 1 TH0 = 0xfc;
168 1 if(SendFlag)
169 1 {
170 2 if(DataLength == 0)
171 2 {
172 3 INT0 = 0;
173 3 SendFlag = 0;
174 3 }
175 2 else
176 2 {
177 3 SBUF = *DataAdd;
178 3 DataLength--;
179 3 DataAdd++;
C51 COMPILER V7.06 SOUND 08/02/2007 16:48:19 PAGE 4
180 3 }
181 2 }
182 1 ComTime--;
183 1 if(!ComTime)
184 1 number = 0;
185 1 Clock--;
186 1 TR0 = 1;
187 1 }
188 /******************************************************************************
189 函数名称: //SCON_int();
190 功能描述: // 主要功能用于串行接收
191 被本函数调用的函数清单: //
192 调用本函数的函数清单: /
193 输入输出参数说明: //SerialData串口接收到的数据,SerialFlag串口接收数据成功标志
194 其它说明: //
195 *****************************************************************************/
196 void SerialInt() interrupt 4
197 {
198 1 if(RI != 0)
199 1 {
200 2 RI = 0;
201 2 ComTime = 20;
202 2 SerialData = SBUF;
203 2 switch(number)
204 2 {
205 3 case 0:
206 3 case 2:
207 3 if(SerialData != 0xeb)
208 3 {
209 4 number = 0;
210 4 crc = 0;
211 4 }
212 3 else
213 3 {
214 4 ReceData[number] = SerialData;
215 4 crc += ReceData[number];
216 4 number++;
217 4 }
218 3 break;
219 3 case 1:
220 3 case 3:
221 3 if(SerialData != 0x90)
222 3 {
223 4 number = 0;
224 4 crc = 0;
225 4 if(SerialData == 0xeb)
226 4 {
227 5 ReceData[number] = SerialData;
228 5 crc += ReceData[number];
229 5 number++;
230 5 }
231 4 }
232 3 else
233 3 {
234 4 ReceData[number] = SerialData;
235 4 crc += ReceData[number];
236 4 number++;
237 4 }
238 3 break;
239 3 case 4:
240 3 ReceData[number] = SerialData;
241 3 crc += ReceData[number];
C51 COMPILER V7.06 SOUND 08/02/2007 16:48:19 PAGE 5
242 3 number++;
243 3 if(SerialData != 0x60)
244 3 {
245 4 number = 0;
246 4 crc = 0;
247 4 }
248 3 break;
249 3 case 5:
250 3 ReceData[number] = SerialData;
251 3 crc += ReceData[number];
252 3 number++;
253 3 break;
254 3 case 6:
255 3 length = SerialData;
256 3 ReceData[number] = SerialData;
257 3 crc += ReceData[number];
258 3 number++;
259 3 break;
260 3 default:
261 3 if(number == (length + 7))
262 3 {
263 4 if(crc != SerialData)
264 4 {
265 5 SerialFlag = 0xaa;
266 5 }
267 4 else
268 4 {
269 5 SerialFlag = 0x55;
270 5 SoundData[RecPoint++] = ReceData[8];//低字节
271 5 SoundData[RecPoint++] = ReceData[7];//高字节
272 5 SoundData[RecPoint++] = ReceData[5];//语音类别
273 5 if(RecPoint>=30)
274 5 RecPoint=0;
275 5 NUM++;
276 5 }
277 4 number = 0;
278 4 crc = 0;
279 4 length = 0;
280 4 }
281 3 else
282 3 {
283 4 ReceData[number] = SerialData;
284 4 number++;
285 4 crc += SerialData;
286 4 if(number > 12)
287 4 {
288 5 number = 0;
289 5 crc = 0;
290 5 length = 0;
291 5 }
292 4 }
293 3 break;
294 3 }
295 2 }
296 1 if(TI == 1)
297 1 TI = 0;
298 1 }
299
300 /******************************************************************************
301 函数名称: //FeedDog();
302 功能描述: // 用于喂狗,在程序混乱时可使CPU复位
303 被本函数调用的函数清单: //
C51 COMPILER V7.06 SOUND 08/02/2007 16:48:19 PAGE 6
304 调用本函数的函数清单: //
305 其它说明: //
306 *****************************************************************************/
307 void FeedDog()
308 {
309 1 INT1 = 0;
310 1 INT1 = 1;
311 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 565 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 ----
IDATA SIZE = 65 ----
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 + -