📄 main.lst
字号:
378 1 TL0=0;
379 1 }
380
381 void Timer1_Init(void)
382 {
383 1 TMOD |=0x50;
384 1 TCON |=0x44;
385 1 TH1=0;
386 1 TL1=0;
387 1 }
388
389 void Interupt_Init(void)
390 {
391 1 EX0 = 1;
392 1 //EX1 = 1;
393 1 ES = 1; //开串口中断允许
394 1 EA = 1; //中断总允许/禁止位
395 1 }
396 /*
397 void SendChar(unsigned char temp)
398 {
399 SBUF = temp;
400 while(!TI);
401 TI=0;
402 }
403 */
404 void SendString (unsigned char *str, unsigned char strlen)
405 {
406 1 unsigned char m = 0;
407 1 do
408 1 {
409 2 SBUF = *(str + m);
410 2 while(!TI);
411 2 TI = 0;
412 2 m ++;
413 2 }
414 1 while (m < strlen);
415 1 }
416 //-----------------------------------------------------------------------------
417 // 串口中断服务 UATR_ISR() interrupt 4 串口中断
418 //-----------------------------------------------------------------------------
419 void UATR0_ISR(void) interrupt 4
420 {
421 1 if(RI)
422 1 {
423 2 RI = 0;
424 2 Uart_Temp =SBUF;
425 2 if (Uart_Coun<8)
426 2 {
427 3 serial_rx_buff[Uart_Coun]=Uart_Temp;
C51 COMPILER V7.07 MAIN 12/19/2008 15:13:10 PAGE 8
428 3 Uart_Coun++;
429 3 }
430 2 if (Uart_Coun >=8)
431 2 {
432 3 Uart_Flag=1;
433 3 Uart_Coun=0;
434 3 }
435 2 }
436 1 }
437
438 void INIT0_ISR(void) interrupt 0
439 {
440 1 KEY_Value=P3&0x0f;
441 1 IE0=0;
442 1 }
443
444 //void INIT1_ISR(void) interrupt 2
445 //{
446 //;
447 //}
448
449 /**************************************************************************
450 * 函数原型: void ISD_Stop(void);
451 * 功 能: 停止
452 **************************************************************************/
453
454 void ISD_Stop(void)
455 {
456 1 ISD_SendData(STOP);
457 1 ISD_SendData(0x00);
458 1 SS=1;
459 1 delay_ms(100);
460 1 }
461
462 /**************************************************************************
463 * 函数原型: void ISD_Reset(void);
464 * 功 能: 复位 前:any 后:PD状态
465 **************************************************************************/
466 void ISD_Reset(void)
467 {
468 1 ISD_SendData(RESET);
469 1 ISD_SendData(0x00);
470 1 SS=1;
471 1 delay_ms(50);
472 1 }
473
474 /**************************************************************************
475 * 函数原型: void ISD_PD(void);
476 * 功 能: 掉电 前:any,但是如果是REC,PLAY,ERASE指令则执行后才下电 后:PD状态
477 **************************************************************************/
478
479 void ISD_PD(void)
480 {
481 1 ISD_SendData(PD);
482 1 ISD_SendData(0x00);
483 1 SS=1;
484 1 }
485
486 /**************************************************************************
487 * 函数原型: void ISD_SendData(uchar BUF_ISD);
488 MOSI的数据在SCLK上升沿进入录音芯片,MISO的数据在SCLK的下降沿进入主控芯片。8位一字节,先发低位
489 * 功 能: 发送数据 注意:平时SS=1,SCLK=1,MOSI=0
C51 COMPILER V7.07 MAIN 12/19/2008 15:13:10 PAGE 9
490 **************************************************************************/
491 unsigned char ISD_SendData(unsigned char BUF_ISD)
492 {
493 1 unsigned char i,dat=BUF_ISD;
494 1 SCLK=1;
495 1 SS=0;
496 1 for(i=0;i<8;i++)
497 1 {
498 2 SCLK=0;
499 2 delay_ms(1);
500 2 if(dat&0x01)
501 2 { MOSI=1; }
502 2 else
503 2 { MOSI=0; }
504 2 dat>>=1;
505 2 if(MISO)
506 2 { dat|=0x80; }
507 2 SCLK=1;
508 2 delay_ms(1);
509 2 }
510 1 MOSI=0; //平时应保持MOSI为低
511 1 // SS=1; //不放在这里是因为一条指令是由发送指令码加发送数据地址等组成
512 1 return(dat); //在MOSI的同时,dat已一位一位的右移,变成了MISO的值了
513 1 }
514
515 /**************************************************************************
516 * 函数原型: void ClrInt(void);
517 * 功 能: 清除中断 任何情况都可以进行 且执行后不影响状态
518 **************************************************************************/
519 void ClrInt(void)
520 {
521 1 ISD_SendData(CLR_INT);
522 1 ISD_SendData(0x00);
523 1 SS=1;
524 1 delay_ms(10); //延迟10ms
525 1 }
526
527 /**************************************************************************
528 * 函数原型: void ISD_WR_APC2(uchar voiceValue);
529 * 功 能: 设置APC2 前:idle 后:idle
530 **************************************************************************/
531 void ISD_WR_APC2(unsigned char voiceValue)
532 { //初始化之前的指令都不影响状态,且上电后为RDY=1,所以不用检查RDY
533 1 ISD_SendData(WR_APC2);
534 1 ISD_SendData(0xa8|voiceValue);//0xa8声音最大,0xaf声音最小
535 1 ISD_SendData(0x0c); //D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后
-,执行到第一个EOM自动跳到第二段开始
536 1 SS=1;
537 1 delay_ms(10); //延迟10ms
538 1 }
539
540
541 /**************************************************************************
542 * 函数原型: delay_ms(unsigned int t)
543 * 功 能: 延时 约1ms 具体 j可改变,参数也可变 参考
544 **************************************************************************/
545 void delay_ms(unsigned int t)
546 { unsigned int j;
547 1 for(;t>0;t--)
548 1 for(j=400;j>0;j--);
549 1 }
550
C51 COMPILER V7.07 MAIN 12/19/2008 15:13:10 PAGE 10
551 /**************************************************************************
552 * END
553 **************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 899 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 24 6
PDATA SIZE = ---- ----
DATA SIZE = 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 + -