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

📄 generator.lst

📁 利用单片制作信号发生器
💻 LST
字号:
C51 COMPILER V7.50   GENERATOR                                                             08/15/2007 19:26:19 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE GENERATOR
OBJECT MODULE PLACED IN generator.OBJ
COMPILER INVOKED BY: D:\软件\单片机\keil c51\keil 软件\C51\BIN\C51.EXE generator.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include "hardware.h"
   3          /* 
   4           *      在TIMER0的ISR中,将数据送入DAC0832, 
   5           *  通过在功能按键的中断中,改变HZ和幅度值,
   6           *  TIMER0的ISR将监测这些变量,达到调控的作用,
   7           */
   8          unsigned char code data_buf[] = {
   9                  128,131,134,137,140,143,146,149,
  10                  152,156,159,162,165,168,171,174,
  11                  176,179,182,185,188,191,193,196,
  12                  199,201,204,206,209,211,213,216,
  13                  218,220,222,224,226,228,230,232,
  14                  234,236,237,239,240,242,243,245,
  15                  246,247,248,249,250,251,252,252,
  16                  253,254,254,255,255,255,255,255,
  17                  256,255,255,255,255,255,254,254,
  18                  253,252,252,251,250,249,248,247,
  19                  246,245,243,242,240,239,237,236,
  20                  234,232,230,228,226,224,222,220,
  21                  218,216,213,211,209,206,204,201,
  22                  199,196,193,191,188,185,182,179,
  23                  176,174,171,168,165,162,159,156,
  24                  152,149,146,143,140,137,134,131,
  25                  128,124,121,118,115,112,109,106,
  26                  103,99,96,93,90,87,84,81,
  27                  79,76,73,70,67,64,62,59,
  28                  56,54,51,49,46,44,42,39,
  29                  37,35,33,31,29,27,25,23,
  30                  21,19,18,16,15,13,12,10,
  31                  9,8,7,6,5,4,3,3,
  32                  2,1,1,0,0,0,0,0,
  33                  0,0,0,0,0,0,1,1,
  34                  2,3,3,4,5,6,7,8,
  35                  9,10,12,13,15,16,18,19,
  36                  21,23,25,27,29,31,33,35,
  37                  37,39,42,44,46,49,51,54,
  38                  56,59,62,64,67,70,73,76,
  39                  78,81,84,87,90,93,96,99,
  40                  103,106,109,112,115,118,121,124
  41          };
  42          
  43          bit     cur_signal = 0x20;      //当前输出波形, 0 方波 , 1 正弦
  44          unsigned int data freq; //频率
  45          
  46          /* 方波占空比 */
  47          unsigned char data time_high = 1, time_low = 1;
  48          
  49          /* 与方波频率相关 */
  50          unsigned char data rect_high_TH0;
  51          unsigned char data rect_high_TL0;
  52          unsigned char data rect_low_TH0;
  53          unsigned char data rect_low_TL0;
  54          
  55          /* 正弦频率相关 */
C51 COMPILER V7.50   GENERATOR                                                             08/15/2007 19:26:19 PAGE 2   

  56          unsigned char data sin_TH0;
  57          unsigned char data sin_TL0;
  58          
  59          /* 与正弦幅度相关 */
  60          unsigned char data range_low = 0, range_high = 0xff;
  61          float data proportion = 1; /* 幅度与DAC量程之比 */ 
  62          
  63          unsigned int data cur_pos = 0;
  64          
  65          void enable_timer0()
  66          {
  67   1              TMOD = 0X01; /* 方式1, 定时器  */ 
  68   1              ET0 = 1;
  69   1              EA = 1;
  70   1              TR0 = 1;
  71   1      }
  72          
  73          void TIMER0_ISR() interrupt 1 using 1
  74          {
  75   1              static rect_signal = 0;
  76   1              unsigned char sin_data;
  77   1              if (cur_signal == SIG_RECT) {
  78   2                      //根据HZ和占空比计算两段时间(在KeyInt中完成),相继的送给THO/TL0
  79   2                      if (rect_signal == 0) {
  80   3                              TH0 = rect_high_TH0;
  81   3                              TL0 = rect_high_TL0;
  82   3                              DAC0832_data = 0xff;
  83   3                              rect_signal = 1;
  84   3                      } else {
  85   3                              TH0 = rect_low_TH0;
  86   3                              TL0 = rect_low_TL0;
  87   3                              DAC0832_data = 0x0;
  88   3                              rect_signal = 0;
  89   3                      }
  90   2              } else if (cur_signal == SIG_SIN) { //正弦波
  91   2                      TH0 = sin_TH0;
  92   2                      TL0 = sin_TL0;
  93   2                      sin_data = data_buf[(cur_pos++) % 256];
  94   2                      sin_data = sin_data * proportion + range_low;
  95   2                      DAC0832_data = sin_data;
  96   2              } else ;
  97   1              //      printerr("undefined signal", 16);
  98   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    154    ----
   CONSTANT SIZE    =    256    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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