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

📄 m61538.lst

📁 一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不同的VFD, 功放芯片用M61538
💻 LST
字号:
C51 COMPILER V7.20   M61538                                                                06/30/2005 14:02:58 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE M61538
OBJECT MODULE PLACED IN M61538.OBJ
COMPILER INVOKED BY: C:\Keil51\C51\BIN\c51.exe M61538.C DB OE SMALL ROM(LARGE)

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                      
  28   1              if( ALLCH_Vol == VolumeChannel )
  29   1              {               
  30   2                      ALL_Volume = (WORD)((ALL_VolumeChange[FL_Volume]) << 9) + (WORD)((ALL_VolumeChange[FR_Volume]) << 2);
  31   2                      M61538_Tune_Timing(ALL_Volume);         
  32   2                      ALL_Volume = (WORD)((ALL_VolumeChange[Center_Volume]) << 9) + (WORD)((ALL_VolumeChange[BASS_Volume]) << 
             -2) | 0x1;
  33   2                      M61538_Tune_Timing(ALL_Volume);
  34   2                      ALL_Volume = (WORD)((ALL_VolumeChange[SL_Volume]) << 9) + (WORD)((ALL_VolumeChange[SR_Volume]) << 2) | 0
             -x2;
  35   2                      M61538_Tune_Timing(ALL_Volume);         
  36   2              }
  37   1              else if(BASSCEN_Vol== VolumeChannel) 
  38   1              {
  39   2                      ALL_Volume = (WORD)((ALL_VolumeChange[Center_Volume]) << 9) + (WORD)((ALL_VolumeChange[BASS_Volume]) << 
             -2) | 0x1;
  40   2                      _nop_();
  41   2                  M61538_Tune_Timing(ALL_Volume);
  42   2              }
  43   1              else if(FLR_Vol == VolumeChannel)
  44   1              {
  45   2                      ALL_Volume = (WORD)((ALL_VolumeChange[FL_Volume]) << 9) + (WORD)((ALL_VolumeChange[FR_Volume]) << 2);
  46   2                  M61538_Tune_Timing(ALL_Volume);
  47   2              }
  48   1              else if(SLR_Vol == VolumeChannel) 
  49   1              {
  50   2                      ALL_Volume = (WORD)((ALL_VolumeChange[SL_Volume]) << 9) + (WORD)((ALL_VolumeChange[SR_Volume]) << 2) | 0
             -x2;
  51   2                  M61538_Tune_Timing(ALL_Volume);
C51 COMPILER V7.20   M61538                                                                06/30/2005 14:02:58 PAGE 2   

  52   2              }
  53   1              //发送音量值
  54   1              
  55   1              
  56   1      }
  57          void M61538_Tune_Timing(WORD Volume_Set)
  58          {
  59   1              BYTE Volume_i;
  60   1              
  61   1              CLEAR_M61538_CLK;
  62   1              CLEAR_M61538_DATA;
  63   1              
  64   1              Delay5US();
  65   1              for(Volume_i = 0; Volume_i < 16; Volume_i++)
  66   1              {               
  67   2                      if(Volume_Set & 0x8000)
  68   2                              SET_M61538_DATA;
  69   2                      else
  70   2                              CLEAR_M61538_DATA;                              
  71   2                      Delay5US();
  72   2                      SET_M61538_CLK;
  73   2                      Delay5US();
  74   2                      if( Volume_i < 15)
  75   2                              CLEAR_M61538_DATA;
  76   2                      else
  77   2                              SET_M61538_DATA;
  78   2                      Delay5US();
  79   2                      CLEAR_M61538_CLK;
  80   2                      Delay5US();
  81   2                      Volume_Set <<= 1;
  82   2              }
  83   1              
  84   1              
  85   1      }
  86          


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