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

📄 m61538.lst

📁 一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不同的VFD, 功放芯片用M61538
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   M61538                                                                07/16/2005 13:42:41 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE M61538
OBJECT MODULE PLACED IN ..\output\M61538.obj
COMPILER INVOKED BY: C:\Keil51\C51\BIN\C51.EXE ..\source\Audio\M61538.C BROWSE DEBUG OBJECTEXTEND CODE PRINT(..\output\M
                    -61538.lst) OBJECT(..\output\M61538.obj)

line level    source

   1          #include "reg52.h"
   2          #include "intrins.h"
   3          #include "..\..\inc\globedef.h"
   4          #include "..\..\inc\M61538.h"
   5          #include "..\..\inc\delay.h"
   6          
   7          /*========================================================================
   8          音量转换函数,将音量的0~60等级转换成具体写入到M61538的音量
   9          在前0~12之间一档增加4个DB, 后面一个档增加一个DB
  10          ========================================================================*/
  11          code BYTE ALL_VolumeChange[] =
  12          {       
  13                  96,
  14                  95, 91, 87, 83, 79, 75, 71, 67, 63, 59,
  15                  55, 51, 47, 46, 45, 44, 43, 42, 41, 40,
  16                  39, 38, 37, 36, 35, 34, 33, 32, 31, 30,
  17                  29, 28, 27, 26, 25, 24, 23, 22, 21, 20,
  18                  19, 18, 17, 16, 15, 14, 13, 12, 11, 10,
  19                   9,  8,  7,  6,  5,  4,  3,  2,  1,  0 
  20          };
  21          /*========================================================================
  22                       音量调节函数,调整由M61538控制的6个通道的整体音量
  23          ========================================================================*/
  24          void    Volume_Tune(BYTE VolumeChannel)
  25          {
  26   1              WORD ALL_Volume;
  27   1              BYTE VOL_TEMPH;
  28   1              BYTE VOL_TEMPL;
  29   1              if( ALLCH_Vol == VolumeChannel )
  30   1              {               
  31   2                      VOL_TEMPH = VOLUME_CHANNEL[FrontL_VOLUME];
  32   2                      VOL_TEMPL = VOLUME_CHANNEL[FrontR_VOLUME];
  33   2                      ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2);
  34   2                      M61538_Tune_Timing(ALL_Volume);         
  35   2      
  36   2                      VOL_TEMPH = VOLUME_CHANNEL[CENTER_VOLUME];
  37   2                      VOL_TEMPL = VOLUME_CHANNEL[SUBWOOFER_VOLUME];
  38   2                      ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
             -x1;
  39   2                      M61538_Tune_Timing(ALL_Volume);
  40   2      
  41   2                      VOL_TEMPH = VOLUME_CHANNEL[SURROUNDL_VOLUME];
  42   2                      VOL_TEMPL = VOLUME_CHANNEL[SURROUNDR_VOLUME];
  43   2                      ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
             -x2;
  44   2                      M61538_Tune_Timing(ALL_Volume);         
  45   2              }
  46   1              else if(BASSCEN_Vol== VolumeChannel) 
  47   1              {
  48   2                      VOL_TEMPH = VOLUME_CHANNEL[CENTER_VOLUME];
  49   2                      VOL_TEMPL = VOLUME_CHANNEL[SUBWOOFER_VOLUME];
  50   2                      ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
             -x1;
  51   2                      M61538_Tune_Timing(ALL_Volume);
C51 COMPILER V7.20   M61538                                                                07/16/2005 13:42:41 PAGE 2   

  52   2              }
  53   1              else if(FLR_Vol == VolumeChannel)
  54   1              {
  55   2                      VOL_TEMPH = VOLUME_CHANNEL[FrontL_VOLUME];
  56   2                      VOL_TEMPL = VOLUME_CHANNEL[FrontR_VOLUME];
  57   2                      ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2);
  58   2                      M61538_Tune_Timing(ALL_Volume); 
  59   2              }
  60   1              else if(SLR_Vol == VolumeChannel) 
  61   1              {
  62   2                      VOL_TEMPH = VOLUME_CHANNEL[SURROUNDL_VOLUME];
  63   2                      VOL_TEMPL = VOLUME_CHANNEL[SURROUNDR_VOLUME];
  64   2                      ALL_Volume = (WORD)((ALL_VolumeChange[VOL_TEMPH]) << 9) + (WORD)((ALL_VolumeChange[VOL_TEMPL]) << 2) | 0
             -x2;
  65   2                      M61538_Tune_Timing(ALL_Volume);
  66   2              }
  67   1              //发送音量值
  68   1              
  69   1              
  70   1      }
  71          void M61538_Tune_Timing(WORD Volume_Set)
  72          {
  73   1              BYTE Volume_i;
  74   1              
  75   1              CLEAR_M61538_CLK;
  76   1              CLEAR_M61538_DATA;
  77   1              
  78   1              Delay5US();
  79   1              for(Volume_i = 0; Volume_i < 16; Volume_i++)
  80   1              {               
  81   2                      if(Volume_Set & 0x8000)
  82   2                              SET_M61538_DATA;
  83   2                      else
  84   2                              CLEAR_M61538_DATA;                              
  85   2                      Delay5US();
  86   2                      SET_M61538_CLK;
  87   2                      Delay5US();
  88   2                      if( Volume_i < 15)
  89   2                              CLEAR_M61538_DATA;
  90   2                      else
  91   2                              SET_M61538_DATA;
  92   2                      Delay5US();
  93   2                      CLEAR_M61538_CLK;
  94   2                      Delay5US();
  95   2                      Volume_Set <<= 1;
  96   2              }
  97   1              
  98   1              
  99   1      }
 100          
C51 COMPILER V7.20   M61538                                                                07/16/2005 13:42:41 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _Volume_Tune (BEGIN)
                                           ; SOURCE LINE # 24
0000 8F00        R     MOV     VolumeChannel,R7
                                           ; SOURCE LINE # 25
                                           ; SOURCE LINE # 29
0002 E500        R     MOV     A,VolumeChannel
0004 7058              JNZ     ?C0001
                                           ; SOURCE LINE # 30
                                           ; SOURCE LINE # 31
0006 850000      R     MOV     VOL_TEMPH,VOLUME_CHANNEL+01H
                                           ; SOURCE LINE # 32
0009 850000      R     MOV     VOL_TEMPL,VOLUME_CHANNEL+02H
                                           ; SOURCE LINE # 33
000C E500        R     MOV     A,VOL_TEMPL
000E 900000      R     MOV     DPTR,#ALL_VolumeChange
0011 93                MOVC    A,@A+DPTR
0012 75F004            MOV     B,#04H
0015 A4                MUL     AB
0016 AEF0              MOV     R6,B
0018 FD                MOV     R5,A
0019 AC06              MOV     R4,AR6
001B E500        R     MOV     A,VOL_TEMPH
001D 93                MOVC    A,@A+DPTR
001E 25E0              ADD     A,ACC
0020 FE                MOV     R6,A
0021 E4                CLR     A
0022 2D                ADD     A,R5
0023 F500        R     MOV     ALL_Volume+01H,A
0025 EE                MOV     A,R6
0026 3C                ADDC    A,R4
0027 F500        R     MOV     ALL_Volume,A
                                           ; SOURCE LINE # 34
0029 AF00        R     MOV     R7,ALL_Volume+01H
002B FE                MOV     R6,A
002C 120000      R     LCALL   _M61538_Tune_Timing
                                           ; SOURCE LINE # 36
002F 850000      R     MOV     VOL_TEMPH,VOLUME_CHANNEL+04H
                                           ; SOURCE LINE # 37
0032 850000      R     MOV     VOL_TEMPL,VOLUME_CHANNEL+03H
                                           ; SOURCE LINE # 38
0035 E500        R     MOV     A,VOL_TEMPL
0037 900000      R     MOV     DPTR,#ALL_VolumeChange
003A 93                MOVC    A,@A+DPTR
003B 75F004            MOV     B,#04H
003E A4                MUL     AB
003F AEF0              MOV     R6,B
0041 FD                MOV     R5,A
0042 AC06              MOV     R4,AR6
0044 E500        R     MOV     A,VOL_TEMPH
0046 93                MOVC    A,@A+DPTR
0047 25E0              ADD     A,ACC
0049 FE                MOV     R6,A
004A E4                CLR     A
004B 2D                ADD     A,R5
004C FF                MOV     R7,A
004D EE                MOV     A,R6
004E 3C                ADDC    A,R4
004F F500        R     MOV     ALL_Volume,A
0051 EF                MOV     A,R7
C51 COMPILER V7.20   M61538                                                                07/16/2005 13:42:41 PAGE 4   

0052 4401              ORL     A,#01H
0054 F500        R     MOV     ALL_Volume+01H,A
                                           ; SOURCE LINE # 39
0056 FF                MOV     R7,A
0057 AE00        R     MOV     R6,ALL_Volume
0059 120000      R     LCALL   _M61538_Tune_Timing
                                           ; SOURCE LINE # 41
                                           ; SOURCE LINE # 42
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
                                           ; SOURCE LINE # 45
005C 8061              SJMP    ?C0017
005E         ?C0001:
                                           ; SOURCE LINE # 46
005E E500        R     MOV     A,VolumeChannel
0060 6402              XRL     A,#02H

⌨️ 快捷键说明

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