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

📄 pt2322s.lst

📁 基于KEIL51的一款高性能的数字功放的完整代码
💻 LST
字号:
C51 COMPILER V8.05a   PT2322S                                                              10/22/2006 21:41:57 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE PT2322S
OBJECT MODULE PLACED IN PT2322S.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PT2322S.c OMF2 BROWSE DEBUG

line level    source

   1          #include "config.h"
   2          
   3          
   4          #define IN_PT2322S
   5          
   6          #define PT2322_I2CADDRESS   0x88   // PT2322的I2C的地址 
   7          
   8          // --------------------------------------------------------------------------------
   9          // ------------  主音量的控制 -----------------------------------------------------
  10          unsigned char idata  master_volume=0x00;   //主音量的值 
  11          unsigned char idata  pt2322_buffer[5];  //I2C发送的buffer,不包含子地址,一般为2个字节而已 
  12          
  13          /*  ------------------------------------------------------------------
  14          FUNCTION DEFINITION
  15          MSB LSB
  16          B7 B6 B5 B4 B3 B2 B1 B0      Function
  17          0 0 0 0 x  x  x  x           No function
  18          0 0 0 1 E3 E2 E1 E0          Front left channel volume TRIM control
  19          0 0 1 0 E3 E2 E1 E0          Front right channel volume TRIM control
  20          0 0 1 1 E3 E2 E1 E0          Center channel volume TRIM control
  21          0 1 0 0 E3 E2 E1 E0          Rear left channel volume TRIM control
  22          0 1 0 1 E3 E2 E1 E0          Rear right channel volume TRIM control
  23          0 1 1 0 E3 E2 E1 E0          Subwoofer volume TRIM control
  24          0 1 1 1 I1 I0 J1 J0          Function select
  25          1 0 0 0 x  x  x  x           No function
  26          1 0 0 1 G3 G2 G1 G0          Bass tone control
  27          1 0 1 0 K3 K2 K1 K0          Middle tone control
  28          1 0 1 1 H3 H2 H1 H0          Treble tone control
  29          1 1 0 0 0  C2 C1 C0          Input SW
  30          1 1 0 1 A3 A2 A1 A0          Master volume control (-1dB Step)
  31          1 1 1 0 0  B2 B1 B0          Master volume control (-10dB Step)
  32          
  33          FUNCTION SELECT BITS
  34          I1=0 Mute Off I1=1 Mute On
  35          I0=0 3D On I0=1 3D Off
  36          J1=0 Tone Control ON J1=1 TONE Defeat
  37          J0=0 No Function J0=1 No Function
  38          
  39          
  40          MASTER VOLUME CONTROL BITS         // 主音量的调节
  41          A3 A2(B2) A1(B1) A0(B0) Attenuation (dB)
  42          0 0 0 0 0 (0)
  43          0 0 0 1 -1 (-10)
  44          0 0 1 0 -2 (-20)
  45          0 0 1 1 -3 (-30)
  46          0 1 0 0 -4 (-40)
  47          0 1 0 1 -5 (-50)
  48          0 1 1 0 -6 (-60)
  49          0 1 1 1 -7 (-70)
  50          1 0 0 0 -8 (x)
  51          1 0 0 1 -9 (x)
  52          Note: A=-1dB/Step, B=-10dB/Step
  53          TONE CONTROL BITS        //音调的调节
  54          G3/K3/H3 G2/K2/H2 G1/K1/H1 G0/K0/H0 Attenuation (dB)
  55          0 0 0 0 -14
C51 COMPILER V8.05a   PT2322S                                                              10/22/2006 21:41:57 PAGE 2   

  56          0 0 0 1 -12
  57          0 0 1 0 -10
  58          0 0 1 1 -8
  59          0 1 0 0 -6
  60          0 1 0 1 -4
  61          0 1 1 0 -2
  62          0 1 1 1 0
  63          1 0 0 0 +14
  64          1 0 0 1 +12
  65          1 0 1 0 +10
  66          1 0 1 1 +8
  67          1 1 0 0 +6
  68          1 1 0 1 +4
  69          1 1 1 0 +2
  70          1 1 1 1 0
  71          Note: G=Bass, K=Middle, H=Treble
  72          
  73          
  74          CHANNEL TRIM VOLUME CONTROL BITS
  75          E3 E2 E1 E0 Attenuation (dB)
  76          0 0 0 0 0
  77          0 0 0 1 -1
  78          0 0 1 0 -2
  79          0 0 1 1 -3
  80          0 1 0 0 -4
  81          0 1 0 1 -5
  82          0 1 1 0 -6
  83          0 1 1 1 -7
  84          1 0 0 0 -8
  85          1 0 0 1 -9
  86          1 0 1 0 -10
  87          1 0 1 1 -11
  88          1 1 0 0 -12
  89          1 1 0 1 -13
  90          1 1 1 0 -14
  91          1 1 1 1 -15
  92          
  93          
  94          ------------------------------------------------------------------*/
  95          
  96          
  97          // PT2322S的初始化程序
  98          void pt2322s_initialize(void)
  99          {
 100   1      
 101   1      #if  EEPROM_USING
                        eeprom_operatemode=0x01; //将要记忆的内容写入EEPROM
                    eeprom_process();  //取得音量值和音乐模式 
              #endif
 105   1       pt2322_buffer[0]=0xff;  //Clear Register
 106   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // 关于mute功能的控制 
 107   1       pt2322_buffer[0]=0xc7;  //开放6个通道 
 108   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // 开放6通道 
 109   1      
 110   1       mastervolume_control();
 111   1       musicmode_control();
 112   1      
 113   1       pt2322_mutecontrol(0x00);
 114   1      
 115   1      }
 116          
 117          
C51 COMPILER V8.05a   PT2322S                                                              10/22/2006 21:41:57 PAGE 3   

 118          // ---音量0为最大, -79DB为最小
 119          void  mastervolume_control(void)
 120          {unsigned char idata i=0x00;
 121   1       if(master_volume>79)
 122   1          master_volume=79;  //不容许超过音量限制 
 123   1       pt2322_buffer[0]=0xe0+(master_volume/10);
 124   1       pt2322_buffer[1]=0xd0+(master_volume%10);
 125   1       //PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x02);   //发送音量的控制 
 126   1       if(PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x02)==0x00)  //;  // 发送音量的控制 
 127   1          {//rs232_senddata(0x86);
 128   2               //rs232_senddata(0x01);
 129   2               }
 130   1       else
 131   1          {//rs232_senddata(0x86);
 132   2               //rs232_senddata(0x02);
 133   2               }
 134   1      
 135   1      
 136   1      }
 137          
 138          // --------------------------------------------------------------------------------
 139          // ----模式的选择,通过TRIM的控制,以及3D效果的控制来实现 
 140          
 141          unsigned char idata music_mode=0x00;  //PT2322的音响效果模式 
 142          unsigned char idata function_mode=0x00;    //PT2322的模式选择 
 143          #define MAX_MUSIC_MODE  0x04
 144          unsigned char code  pt2322_trim_code[MAX_MUSIC_MODE][7]=                   
 145                                                  {// Front left, Front right,Center,Rear left,Rear right,Subwoofer,3D ON/OFF
 146                                                      0x00,       0x00,       0x00,  0x00,     0x00,      0x08,     0x01,  // mode 0
 147                                                      0x00,       0x00,       0x00,  0x00,     0x00,      0x00,     0x00,  // mode 1
 148                                                      0x00,       0x00,       0x00,  0x00,     0x00,      0x08,     0x01,  // mode 2
 149                                                      0x02,       0x00,       0x00,  0x00,     0x00,      0x00,     0x01,  // mode 3
 150                                                   }; 
 151          
 152          
 153          void  musicmode_control(void)
 154          {
 155   1      
 156   1       pt2322_mutecontrol(0x00);
 157   1       if(music_mode >= MAX_MUSIC_MODE)
 158   1          music_mode = 0x00;
 159   1       if(music_mode==0x00)
 160   1          {LED1=0x00;LED2=0x01;LED3=0x01;LED4=0x01;}
 161   1       else if(music_mode==0x01)
 162   1          {LED1=0x01;LED2=0x00;LED3=0x01;LED4=0x01;}
 163   1       else if(music_mode==0x02)
 164   1          {LED1=0x01;LED2=0x01;LED3=0x00;LED4=0x01;}
 165   1       else if(music_mode==0x03)
 166   1          {LED1=0x01;LED2=0x01;LED3=0x01;LED4=0x00;}
 167   1      
 168   1       pt2322_buffer[0]=0x10+pt2322_trim_code[music_mode][0]&0x0f;
 169   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // Front left channel volume TRIM control 
 170   1       pt2322_buffer[0]=0x20+pt2322_trim_code[music_mode][1]&0x0f;
 171   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // Front right channel volume TRIM control 
 172   1       pt2322_buffer[0]=0x30+pt2322_trim_code[music_mode][2]&0x0f;
 173   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // Center channel volume TRIM control 
 174   1       pt2322_buffer[0]=0x40+pt2322_trim_code[music_mode][3]&0x0f;
 175   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // Rear left channel volume TRIM control 
 176   1       pt2322_buffer[0]=0x50+pt2322_trim_code[music_mode][4]&0x0f;
 177   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // Rear right channel volume TRIM control
 178   1       pt2322_buffer[0]=0x60+pt2322_trim_code[music_mode][5]&0x0f;
 179   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // Subwoofer volume TRIM control 
C51 COMPILER V8.05a   PT2322S                                                              10/22/2006 21:41:57 PAGE 4   

 180   1      
 181   1       // ------- 3D开放的问题 -------
 182   1       if(pt2322_trim_code[music_mode][5]!=0x00)
 183   1          {function_mode|=0x04;  //开放3D功能 
 184   2               }
 185   1       else
 186   1          {function_mode=function_mode&0x0b;  //屏蔽3D功能 
 187   2               }
 188   1       pt2322_buffer[0]=0x70+function_mode&0x0f;
 189   1       if(PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01)==0x00)  //;  // 关于3D功能的控制 
 190   1          {//rs232_senddata(0x85);
 191   2               //rs232_senddata(0x01);
 192   2               }
 193   1       else
 194   1          {//rs232_senddata(0x85);
 195   2               //rs232_senddata(0x02);
 196   2               }
 197   1      
 198   1      
 199   1      
 200   1      }
 201          
 202          void pt2322_mutecontrol(unsigned char mute_onoff)
 203          {if(mute_onoff!=0x00)
 204   1          {function_mode|=0x08;  //mute on
 205   2               MUTE_CTL=0x01;  //静音   高为截至 
 206   2               }
 207   1       else
 208   1          {function_mode=function_mode&0x07;  //mute off
 209   2               MUTE_CTL=0x00;  //      低开放音频 
 210   2               }
 211   1       pt2322_buffer[0]=0x70+(function_mode&0x0f);
 212   1       PSendStr(PT2322_I2CADDRESS,pt2322_buffer,0x01);  // 关于mute功能的控制 
 213   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    499    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      8       1
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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