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

📄 msin.lst

📁 ISD400X系列语音录音芯片大全驱动代码
💻 LST
字号:
C51 COMPILER V7.09   MSIN                                                                  12/11/2006 11:49:07 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MSIN
OBJECT MODULE PLACED IN msin.OBJ
COMPILER INVOKED BY: F:\软件安装1\软件安装\安装软件\C51\BIN\C51.EXE msin.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //=================================================
   2          //创建者:蔡星      QQ:364444296
   3          //创建日期:2006年11月12日
   4          //项目:ISD4004语音芯片的录放
   5          //=================================================
   6          #include<reg51.h>
   7          #include<intrins.h>
   8          #include<head.h>
   9          
  10          #define uchar unsigned char
  11          #define uint  unsigned int
  12          //uint count;
  13          uint count=0;
  14          
  15          sbit sclk_4004=P3^5;
  16          sbit rac_4004=P3^3;
  17          sbit _int_4004=P3^4;
  18          sbit ss_4004=P3^0;
  19          sbit sda_4004=P3^1;
  20          //sbit sda_4004_=P3^1;
  21          
  22          sbit stop_4004=P1^0;//这是51板上的按键
  23          sbit Luyin_4004=P1^1;
  24          sbit play_4004=P1^2;
  25          sbit hang_4004=P1^3;//
  26          
  27          void delay_ISD4004(int i)
  28          {
  29   1       while(--i);
  30   1      } 
  31          
  32          void stop()
  33          {
  34   1       uchar number,i;
  35   1       number=0x30;
  36   1       ss_4004=1;
  37   1       sclk_4004=0;
  38   1       ss_4004=0;
  39   1       for(i=0;i<8;i++)
  40   1       {
  41   2        if(number&0x01)  sda_4004=1;
  42   2        else             sda_4004=0;
  43   2        sclk_4004=0;
  44   2        sclk_4004=1;
  45   2        number=number>>1;
  46   2        //number>>=1;
  47   2       }
  48   1       ss_4004=1;
  49   1      }
  50          
  51          void power_down()
  52          {
  53   1       uchar num,i;
  54   1       num=0x10;
  55   1       ss_4004=1;
C51 COMPILER V7.09   MSIN                                                                  12/11/2006 11:49:07 PAGE 2   

  56   1       sclk_4004=0;
  57   1       ss_4004=0;
  58   1       for(i=0;i<8;i++)
  59   1       {
  60   2       
  61   2        if(num&0x01)   sda_4004=1;
  62   2        else            sda_4004=0;
  63   2        sclk_4004=0;
  64   2        sclk_4004=1;
  65   2        num=num>>1;
  66   2       }
  67   1       ss_4004=1;
  68   1      }
  69          
  70          void power_up()
  71          {
  72   1       uchar bult,_data_,i;
  73   1       bult=0x20;
  74   1       ss_4004=1;
  75   1       sclk_4004=0;
  76   1       ss_4004=0;
  77   1       _data_=bult;
  78   1       for(i=0;i<8;i++)
  79   1       {
  80   2        
  81   2        if(_data_&0x01)    sda_4004=1;
  82   2        else               sda_4004=0;
  83   2        sclk_4004=0;
  84   2        sclk_4004=1;
  85   2        //bult=bult>>1;
  86   2        _data_>>=1;
  87   2       }
  88   1       ss_4004=1;
  89   1      }
  90          
  91          void record_4004(uint address)//address:0-2400
  92          {
  93   1       uchar data_4004,numb,i;
  94   1       uint data_mode=0;
  95   1       numb=0xa0;
  96   1      
  97   1       power_up();
  98   1       delay_ISD4004(5200);//大于25ms
  99   1       power_up();
 100   1       delay_ISD4004(10400);//是上面延时的两倍
 101   1      
 102   1       ss_4004=1;
 103   1       sclk_4004=0;
 104   1       ss_4004=0;
 105   1       data_mode=address;
 106   1       for(i=0;i<16;i++)//16位地址控制位
 107   1       {
 108   2       
 109   2        if(data_mode&0x01)   sda_4004=1;
 110   2        else                 sda_4004=0;
 111   2        sclk_4004=0;
 112   2        sclk_4004=1;
 113   2        //address=address>>1;
 114   2        data_mode>>=1;
 115   2        }
 116   1        data_4004=numb;
 117   1       for(i=0;i<8;i++)
C51 COMPILER V7.09   MSIN                                                                  12/11/2006 11:49:07 PAGE 3   

 118   1       {
 119   2        if(data_4004&0x01)   sda_4004=1;
 120   2        else                 sda_4004=0;
 121   2        sclk_4004=0;
 122   2        sclk_4004=1;
 123   2        //numb=numb>>1;
 124   2        data_4004>>=1;
 125   2       }
 126   1      
 127   1       numb=0xb0;
 128   1       ss_4004=1;
 129   1       sclk_4004=0;
 130   1       ss_4004=0;
 131   1       for(i=0;i<8;i++)
 132   1       {
 133   2        if(numb&0x01)   sda_4004=1;
 134   2        else                 sda_4004=0;
 135   2        sclk_4004=0;
 136   2        sclk_4004=1;
 137   2        //numb=numb>>1;
 138   2        numb>>=1;
 139   2       }
 140   1       ss_4004=1;
 141   1       P3=0xff;
 142   1       data_mode=0;
 143   1       while(_int_4004==1) //存储地址换行标志
 144   1       {
 145   2        if(rac_4004)
 146   2        {
 147   3         delay_ISD4004(20000);
 148   3         data_mode++; //记录本次录音所占的行数 就是本次录音有多大
 149   3        }
 150   2         if(stop_4004==0){stop();return;}
 151   2       }
 152   1      }
 153          
 154          void audio_out_4004(uint address)
 155          {
 156   1       uchar _data_4004,_numb,i;
 157   1       uint _data_mode;
 158   1       _numb=0xe0;
 159   1      
 160   1       power_up();
 161   1       delay_ISD4004(5200);
 162   1       ss_4004=1;
 163   1       sclk_4004=0;
 164   1       ss_4004=0;
 165   1       _data_mode=address;
 166   1       for(i=0;i<16;i++)//16位地址控制位
 167   1       {
 168   2        
 169   2        sclk_4004=0;
 170   2        if(_data_mode&0x01)   sda_4004=1;
 171   2        else                 sda_4004=0;
 172   2        //sclk_4004=0;
 173   2        sclk_4004=1;
 174   2        //address=address>>1;
 175   2         _data_mode>>=1;
 176   2       }
 177   1       _data_4004=_numb;
 178   1       for(i=0;i<8;i++)
 179   1       {
C51 COMPILER V7.09   MSIN                                                                  12/11/2006 11:49:07 PAGE 4   

 180   2        
 181   2        sclk_4004=0;
 182   2        if(_data_4004&0x01)   sda_4004=1;
 183   2        else                 sda_4004=0;
 184   2         //sclk_4004=0;
 185   2        sclk_4004=1;
 186   2        //_numb=_numb>>1;
 187   2        _data_4004>>=1;
 188   2       }
 189   1      
 190   1       _numb=0xfe;
 191   1       ss_4004=1;
 192   1       sclk_4004=0;
 193   1       ss_4004=0;
 194   1       _data_4004=_numb;
 195   1       for(i=0;i<8;i++)
 196   1       {
 197   2        sclk_4004=0;
 198   2        if(_data_4004&0x01)   sda_4004=1;
 199   2        else                 sda_4004=0;
 200   2        //sclk_4004=0;
 201   2        sclk_4004=1;
 202   2        //_numb=_numb>>1;
 203   2        _data_4004>>=1;
 204   2       }
 205   1       ss_4004=1;
 206   1       P3=0xff;
 207   1       while(_int_4004==1)
 208   1       {
 209   2        if(stop_4004==0){stop();return;}
 210   2       }
 211   1      }
 212          
 213          
 214          
 215          main()
 216          {
 217   1       //uint count=0;
 218   1       //delay_ISD4004(100000);
 219   1       while(1)
 220   1       {
 221   2        /*if(Luyin_4004==0) 
 222   2        { 
 223   2         P2=0x0f;
 224   2         delay_ISD4004(10000);
 225   2         record_4004(0);
 226   2         P2=0xfd;
 227   2         delay_ISD4004(10000);
 228   2        }
 229   2        if(play_4004==0)
 230   2        {
 231   2         P2=0xf0;
 232   2         delay_ISD4004(10000);
 233   2         audio_out_4004(0);
 234   2          P2=0xdf;
 235   2         delay_ISD4004(10000);
 236   2        }*/
 237   2        if(hang_4004==0)
 238   2        {
 239   3         //while(hang_4004==0) delay_ISD4004(100);
 240   3         //delay_ISD4004(500);
 241   3         count=count++;
C51 COMPILER V7.09   MSIN                                                                  12/11/2006 11:49:07 PAGE 5   

 242   3         display(count);
 243   3         //while(hang_4004);
 244   3         //delay_ISD4004(1000);        co
 245   3         if(count>5) 
 246   3         {
 247   4          count=0;
 248   4              display(count);
 249   4         //delay_ISD4004(1000);
 250   4         }
 251   3         //while(stop_4004);
 252   3        }
 253   2       
 254   2      
 255   2        if((Luyin_4004==0)&&(count==0))
 256   2        {
 257   3         display(count);delay_ISD4004(1000);record_4004(0);
 258   3        }
 259   2        if((play_4004==0)&&(count==0))
 260   2        {
 261   3         display(count);delay_ISD4004(1000);audio_out_4004(0);
 262   3        }
 263   2        
 264   2         if((Luyin_4004==400)&&(count==1))
 265   2        {
 266   3         display(count);delay_ISD4004(1000);record_4004(0);
 267   3        }
 268   2        if((play_4004==400)&&(count==1))
 269   2        {
 270   3         display(count);delay_ISD4004(1000);audio_out_4004(0);
 271   3        }
 272   2         
 273   2        
 274   2        if((Luyin_4004==800)&&(count==2))
 275   2        {
 276   3         display(count);delay_ISD4004(1000);record_4004(0);
 277   3        }
 278   2        if((play_4004==800)&&(count==2))
 279   2        {
 280   3         display(count);delay_ISD4004(1000);audio_out_4004(0);
 281   3        }
 282   2      
 283   2         if((Luyin_4004==1200)&&(count==3))
 284   2        {
 285   3         display(count);delay_ISD4004(1000);record_4004(0);
 286   3        }
 287   2        if((play_4004==1200)&&(count==3))
 288   2        {
 289   3         display(count);delay_ISD4004(1000);audio_out_4004(0);
 290   3        }
 291   2      
 292   2         if((Luyin_4004==1600)&&(count==4))
 293   2        {
 294   3         display(count);delay_ISD4004(1000);record_4004(0);
 295   3        }
 296   2        if((play_4004==1600)&&(count==4))
 297   2        {
 298   3         display(count);delay_ISD4004(1000);audio_out_4004(0);
 299   3        }
 300   2      
 301   2         if((Luyin_4004==2000)&&(count==5))
 302   2        {
 303   3         display(count);delay_ISD4004(1000);record_4004(0);
C51 COMPILER V7.09   MSIN                                                                  12/11/2006 11:49:07 PAGE 6   

 304   3        }
 305   2        if((play_4004==2000)&&(count==5))
 306   2        {
 307   3         display(count);delay_ISD4004(1000);audio_out_4004(0);
 308   3        }
 309   2      
 310   2      
 311   2       }
 312   1      }  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    710    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   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 + -