⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main4.lst

📁 ISD4004芯片的语音录放程序
💻 LST
字号:
C51 COMPILER V8.08   MAIN4                                                                 11/10/2008 22:15:21 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN4
OBJECT MODULE PLACED IN main4.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE main4.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include <reg51.h>
   3          #include "main4.h"
   4          #include "ISD4004.c"
*** WARNING C280 IN LINE 196 OF ISD4004.C: 'ovflog': unreferenced local variable
   5          
   6          uchar key_num = 0;
   7          uchar ad_l ,ad_h ;
   8          
   9          //普通延时函数
  10          void commen_delay(uint k)
  11          {
  12   1        uint i ,j ;
  13   1        for(i = 0 ; i < k ; i ++)
  14   1         for(j = 0 ; j < 121 ; j ++)
  15   1             ;
  16   1      }
  17          
  18          //初始化程序
  19          //初始化单片机,并等待按键按下
  20          void in_stc()
  21          {
  22   1      
  23   1       
  24   1              P0 = P1 = P2 = P3 = 0xff;//初始化
  25   1              isd_pu();//AN键按下,isd上电并延迟50ms
  26   1              isd_pd();
  27   1              isd_pu();
  28   1        
  29   1      }
  30          
  31          //按键扫描程序
  32          //入口:无
  33          //出口:按键值key_num
  34          //功能:实现按键值的加减,让主函数对按键值做出不同的反应
  35          void scan_key()
  36          {
  37   1        if(up == 0)
  38   1         {
  39   2              commen_delay(30);
  40   2              if(up == 0)
  41   2               key_num ++;            //键值加
  42   2               if(key_num > 11)
  43   2                      key_num = 0 ;
  44   2              }
  45   1              if(down == 0)
  46   1         {
  47   2              commen_delay(30);
  48   2              if(down == 0)
  49   2               key_num --;            //键值减
  50   2               if(key_num < 0)
  51   2                      key_num = 0 ;
  52   2              }
  53   1              
  54   1              switch ( key_num )//根据键值key_num判定播放音的起始位置
C51 COMPILER V8.08   MAIN4                                                                 11/10/2008 22:15:21 PAGE 2   

  55   1          {
  56   2           case  0 : {ad_l = 0x00; ad_h = 0x00; break;}  //开机音乐
  57   2               case  1 : {ad_l = 0x40; ad_h = 0x00; break;}  //工学院站
  58   2               case  2 : {ad_l = 0x80; ad_h = 0x00; break;}  //东环路口站
  59   2               case  3 : {ad_l = 0xc0; ad_h = 0x00; break;}   //雀山公园 
  60   2               case  4 : {ad_l = 0x00; ad_h = 0x01; break;}  //柳州宾馆
  61   2               case  5 : {ad_l = 0x40; ad_h = 0x01; break;}   //龙潭公园
  62   2               case  6 : {ad_l = 0x80; ad_h = 0x01; break;}  //东风商场 
  63   2               case  7 : {ad_l = 0xc0; ad_h = 0x01; break;}  //柳侯公园
  64   2               case  8 : {ad_l = 0x00; ad_h = 0x02; break;} //华信国际东
  65   2               default  : break ;
  66   2              }
  67   1      
  68   1      /*
  69   1              switch ( key_num )//根据键值key_num判定播放音的起始位置
  70   1          {
  71   1           case  0 : {ad_l = 0x00; ad_h = 0x00; break;}  //开机音乐
  72   1               case  1 : {ad_l = 0x10; ad_h = 0x00; break;}  //工学院站
  73   1               case  2 : {ad_l = 0x20; ad_h = 0x00; break;}  //东环路口站
  74   1               case  3 : {ad_l = 0x30; ad_h = 0x00; break;}   //雀山公园 
  75   1               case  4 : {ad_l = 0x40; ad_h = 0x00; break;}  //柳州宾馆
  76   1               case  5 : {ad_l = 0x50; ad_h = 0x00; break;}   //龙潭公园
  77   1               case  6 : {ad_l = 0x60; ad_h = 0x00; break;}  //东风商场 
  78   1               case  7 : {ad_l = 0x70; ad_h = 0x00; break;}  //柳侯公园
  79   1               case  8 : {ad_l = 0x80; ad_h = 0x00; break;} //华信国际东
  80   1               case  9 : {ad_l = 0x90; ad_h = 0x00; break;} 
  81   1               case  10 : {ad_l = 0xa0; ad_h = 0x00; break;} 
  82   1               case  11 : {ad_l = 0xb0; ad_h = 0x00; break;} 
  83   1               default  : break ;
  84   1              }
  85   1              */
  86   1      }
  87          
  88          //放录音模式选择及放音选段函数
  89          void find_play()
  90          {
  91   1      if(PR == 1) //如果PR==1则转入录音部分
  92   1               {                      
  93   2                      if(AN == 0 )   //录音键,录音时按住不放
  94   2                   {   
  95   3                       // rec(0xb0,0x00); //开始从指定位置录音
  96   3                       rec(0x90,0x00); //开始从指定位置录音 
  97   3                        }
  98   2           }
  99   1        else //如果PR=0则转入放音部分
 100   1         {
 101   2                if(AN == 0)   //放音键,按下开始放音
 102   2                 {       
 103   3              play(ad_l,ad_h);  //从指定位置开始放音
 104   3                      key_num ++; //自动跳转到下一段
 105   3      
 106   3                      if(key_num > 11)
 107   3                    key_num = 0;
 108   3                 }
 109   2                 if(turn == 0) //转弯
 110   2                  {
 111   3                              play(0x60,0x00);
 112   3                      }
 113   2                 if(brige == 0)//过桥提示语
 114   2                   {
 115   3                              play(0x90,0x00);
 116   3                       }
C51 COMPILER V8.08   MAIN4                                                                 11/10/2008 22:15:21 PAGE 3   

 117   2                 if (sit == 0)  //让座提示语
 118   2                   {
 119   3                         play(0x90,0x00);
 120   3                       }
 121   2               
 122   2            }
 123   1         isd_stop();
 124   1         isd_pd();
 125   1      }
 126          
 127          
 128          
 129          //**********************************************
 130          //主程序
 131          //功能:1.录音时,按住AN键,LED点亮开始录音,松开AN键即可停止录音
 132          //再次按下AN键,LED点亮开始录音第二段,依次类推,直至芯片溢出
 133          //按stop键芯片复位
 134          //2.放音时,按下AN键,即可播放一段语音,按stop键芯片复位.
 135          //***************************************************
 136          void main(void)
 137          {
 138   1       in_stc();//单片机初始化
 139   1       LED = 0 ;
 140   1       //play(0x20,0x00);
 141   1       //key_num++ ;
 142   1        while (1)
 143   1        {
 144   2          LED = 0 ;
 145   2              in_stc();//单片机初始化
 146   2              scan_key();     //按键扫描,得出键值
 147   2          find_play(); //找指定的放音位置
 148   2        }
 149   1      }
 150          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    645    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -