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

📄 download.lst

📁 5402的Hpi自装载程序
💻 LST
字号:
C51 COMPILER V7.06   DOWNLOAD                                                              06/08/2005 14:51:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DOWNLOAD
OBJECT MODULE PLACED IN DOWNLOAD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DOWNLOAD.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1                                                                                                                    
             -                                                      
   2          #include  <Reg52.h>        
   3          #include  <absacc.h>
   4          #include  <stdio.h>
   5          #include  <intrins.h>
   6          #include  <dspcode.h>  
   7          /*定义宏*/
   8          #define   uint unsigned  int
   9          #define   uchar unsigned  char
  10          
  11          #define   VOL1     0x81
  12          #define   VOL2     0x82
  13          
  14          #define   L_LINE_VOLUME        0x00
  15          #define   R_LINE_VOLUME        0x01
  16          #define   L_HEADPHONE_VOLUME   0x02
  17          #define   R_HEADPHONE_VOLUME   0x03
  18          #define   A_AUDIO_PATH         0x04
  19          #define   D_AUDIO_PATH         0x05
  20          #define   POWER_CON            0x06
  21          #define   D_AUDIO_INTERFACE    0x07
  22          #define   SAMPLE_RATE          0x08
  23          #define   D_INTERFACE_ACT      0x09
  24          #define   RESET                0x0f
  25          
  26          
  27          /*定义寄存器端口地址*/
  28          #define   HPICL          XBYTE[0xe000]
  29          #define   HPICH          XBYTE[0xe100]
  30          #define   WR_HPIL0_D     XBYTE[0xe200]
  31          #define   WR_HPIH0_D     XBYTE[0xe300]
  32          #define   WR_HPIL_A      XBYTE[0xe400]
  33          #define   WR_HPIH_A      XBYTE[0xe500]
  34          #define   WR_HPIL1_D     XBYTE[0xe600]
  35          #define   WR_HPIH1_D     XBYTE[0xe700]
  36          
  37          #define   RD_HPIL0_D     XBYTE[0xeA00]
  38          #define   RD_HPIH0_D     XBYTE[0xeB00]
  39          #define   RD_HPIL1_D     XBYTE[0xeE00]
  40          #define   RD_HPIH1_D     XBYTE[0xeF00]
  41          
  42          #define   WR_CR          XBYTE[0x7100]
  43          #define   WR_PARA        XBYTE[0x7000]
  44          
  45          sbit      DSPRST     = P1^2;
  46          sbit      RST8019    = P1^3;
  47          sbit      USBRST         = P1^4;
  48          sbit      LCDRST         = P1^5;
  49                  
  50          sbit      CS         =P3^3;
  51          sbit      SDIN       =P3^4;
  52          sbit      SCLK       =P3^5;
  53          
  54            
C51 COMPILER V7.06   DOWNLOAD                                                              06/08/2005 14:51:00 PAGE 2   

  55          uchar hpic;
  56          bit ok,readT,key_down;
  57          unsigned char time,stoptime,ms,DSPorder;
  58          unsigned char volume;
  59          
  60          void    wr_dspcode();
  61          void    delay(uint  wu);
  62          void    LOADDSP();
  63          void    init_51();
  64          void    init_AIC23();
  65          void    write_AIC23(uchar addr,uint dat);
  66          void    DspRst(void);
  67          void    UsbRst(void);
  68          void    LcdRst(void);
  69          void    RstNet();
  70          unsigned char rd_hpi(uint addr);
  71          
  72          unsigned char getDSP();
  73          
  74          main()
  75          {
  76   1      
  77   1           init_AIC23();   
  78   1           
  79   1           delay(10000);
  80   1           RstNet();
  81   1           DspRst();
  82   1               LcdRst();
  83   1               UsbRst();      
  84   1           LOADDSP();
  85   1           init_51();
  86   1        
  87   1           delay(30000);
  88   1           volume=108;
  89   1           write_AIC23(L_HEADPHONE_VOLUME,0x0180+volume);   
  90   1           
  91   1           while(1);
  92   1      
  93   1      }
  94          
  95          void  delay(uint  wu)
  96          {
  97   1        for(wu;wu>0;wu--);
  98   1      }
  99          
 100          
 101          void    LcdRst(void)
 102                          {
 103   1                              LCDRST = 0;
 104   1                              delay(200);
 105   1                              LCDRST = 1;
 106   1                              delay(200);                     
 107   1                      }
 108          void    DspRst()
 109                          {
 110   1                      DSPRST=0;
 111   1                      delay(200);
 112   1                      DSPRST=1;
 113   1                      delay(200);
 114   1                      }
 115          
 116          void    UsbRst(void)
C51 COMPILER V7.06   DOWNLOAD                                                              06/08/2005 14:51:00 PAGE 3   

 117                          {
 118   1                              USBRST = 0;
 119   1                              delay(200);
 120   1                              USBRST = 1;
 121   1                              delay(200);     
 122   1                      }
 123          
 124          void    RstNet()
 125                          {
 126   1                      RST8019=1;
 127   1                      delay(200);
 128   1                      RST8019=0;
 129   1                              delay(200);     
 130   1                      }                     
 131          
 132          void  LOADDSP()
 133          {
 134   1            wr_dspcode();
 135   1      }
 136          /*
 137          unsigned char rd_hpi(uint addr)
 138          {
 139                unsigned char i;
 140                WR_HPIL_A=addr/256;
 141                WR_HPIH_A=addr%256;
 142                i=RD_HPIL0_D;
 143                i=RD_HPIH0_D;
 144                return(i);
 145          }
 146          
 147          void wr_hpi(uint addr,uint dat)
 148          {
 149               WR_HPIL_A=addr/256;
 150               WR_HPIH_A=addr%256;
 151               WR_HPIL1_D=dat/256;       
 152               WR_HPIH1_D=dat%256;        
 153          }
 154          */ 
 155          void wr_dspcode()
 156          {
 157   1           uchar  code   *dspptr,*temp;
 158   1           uchar len;
 159   1           char i;
 160   1           uint addr;
 161   1           
 162   1           HPICL=0x08;  //clear HPIint,least is first
 163   1           HPICH=0x08;
 164   1       
 165   1           dspptr=dspcode;
 166   1           while(1)
 167   1           {
 168   2             len=*dspptr++;
 169   2             if(len==0) break;
 170   2             else
 171   2             {
 172   3               addr=((*dspptr++)*256)+(*dspptr++);
 173   3               addr--;
 174   3               temp=dspptr;
 175   3      again:         
 176   3               WR_HPIL_A=addr/256;
 177   3               WR_HPIH_A=addr%256;
 178   3               for(i=0;i<len/2;i++)
C51 COMPILER V7.06   DOWNLOAD                                                              06/08/2005 14:51:00 PAGE 4   

 179   3               {  
 180   4                 WR_HPIL0_D=*dspptr++;       
 181   4                 WR_HPIH0_D=*dspptr++;                      
 182   4               }
 183   3               dspptr=temp;
 184   3               addr++;
 185   3               WR_HPIL_A=addr/256;
 186   3               WR_HPIH_A=addr%256;
 187   3               for(i=0;i<len/2;i++)
 188   3               {  
 189   4                 if(RD_HPIL0_D!=*dspptr++)  goto again;       //不相等,再写
 190   4                 if(RD_HPIH0_D!=*dspptr++)  goto again;                      
 191   4               }
 192   3             }
 193   2           }
 194   1           WR_HPIL_A=0x00; 
 195   1           WR_HPIH_A=0x7f;
 196   1           WR_HPIL1_D=0x00;    //THE START ADDRESS OF RUN
 197   1           WR_HPIH1_D=0x80;        
 198   1           
 199   1      }     
 200          
 201          Timer0() interrupt 1
 202          {
 203   1         ok=1;
 204   1         ms++;
 205   1      }
 206          
 207          void init_51()
 208          {
 209   1            TMOD=0x21;
 210   1            SCON=0x40;
 211   1            REN=1;
 212   1            TH1=0xfd;
 213   1            TL1=0xfd;
 214   1            ET1=0;
 215   1            ES=0;
 216   1            IT0=1;
 217   1            EX0=0;
 218   1            ET0=1;
 219   1            EA=1;
 220   1            TR1=1;
 221   1            TR0=1;
 222   1      }
 223          /***************************************************************/
 224          
 225          /*
 226          unsigned char getDSP()
 227          {
 228                   WR_HPIL_A=0;
 229                   WR_HPIH_A=0x7d;
 230                   return(RD_HPIH0_D);
 231          }
 232          */  
 233          void init_AIC23()
 234          { 
 235   1         write_AIC23(RESET,0);
 236   1         write_AIC23(D_INTERFACE_ACT,0x001);
 237   1         write_AIC23(POWER_CON,0);
 238   1         write_AIC23(SAMPLE_RATE,0x022);  //44.1k
 239   1      //   write_AIC23(SAMPLE_RATE,0x062);  //22.05k
 240   1      //   write_AIC23(SAMPLE_RATE,0x02e);    //8.021k
C51 COMPILER V7.06   DOWNLOAD                                                              06/08/2005 14:51:00 PAGE 5   

 241   1          
 242   1         write_AIC23(L_LINE_VOLUME,0x0117);
 243   1         write_AIC23(L_LINE_VOLUME,0x0117);
 244   1         
 245   1         volume=100;
 246   1         write_AIC23(L_HEADPHONE_VOLUME,0x0180+volume);   
 247   1         write_AIC23(R_HEADPHONE_VOLUME,0x0180+volume);   
 248   1         
 249   1      //   write_AIC23(A_AUDIO_PATH,0x009);  //bypass DAC OFF
 250   1      //   write_AIC23(A_AUDIO_PATH,0x014);   //MIC ADC DAC ON  0DB
 251   1      //     write_AIC23(A_AUDIO_PATH,0x1fc);   //bypass MIC ADC DAC ON 0DB sidetone 
 252   1           write_AIC23(A_AUDIO_PATH,0x07d);   //bypass MIC ADC DAC ON 20DB sidetone(-6db)
 253   1      //   write_AIC23(A_AUDIO_PATH,0x011);   //LINE ADC DAC ON
 254   1         
 255   1         write_AIC23(D_AUDIO_PATH,0x04);
 256   1         
 257   1         write_AIC23(D_AUDIO_INTERFACE,0x043);   //master  dsp mode
 258   1      }
 259          void write_AIC23(uchar addr,uint dat)
 260          {
 261   1          uchar i;
 262   1          dat|=addr<<9;
 263   1          CS=0;
 264   1          for(i=0;i<16;i++)
 265   1          {
 266   2            SCLK=0;
 267   2            if((dat<<i)&0x8000)
 268   2              SDIN=1;
 269   2            else 
 270   2              SDIN=0;
 271   2            SCLK=1;
 272   2          }
 273   1          SCLK=0;
 274   1          CS=1;
 275   1      }
 276          /*
 277          unsigned char getkey()
 278          {
 279              uchar key;
 280              if(RI)
 281              {
 282                RI=0;
 283                key=SBUF;
 284                return(key);
 285              }
 286              return(255);
 287          }
 288          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    626    ----
   CONSTANT SIZE    =   1060    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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