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

📄 main.lst

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


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

line level    source

   1          #include "hardware.h"
   2          #include "LCD1602.h"
   3          extern void (enable_timer1)();
   4          extern void (enable_timer0)();
   5          extern void (init_LCD1602)();
   6          
   7          extern bit      cur_signal;
   8          extern unsigned int data freq;
   9          
  10          /* 方波占空比 */
  11          extern unsigned char data time_high, time_low;
  12          
  13          /* 与方波频率相关 */
  14          extern unsigned char data rect_high_TH0;
  15          extern unsigned char data rect_high_TL0;
  16          extern unsigned char data rect_low_TH0;
  17          extern unsigned char data rect_low_TL0;
  18          
  19          /* 正弦频率相关 */
  20          extern unsigned char data sin_TH0;
  21          extern unsigned char data sin_TL0;
  22          
  23          /* 与幅度相关 */
  24          extern unsigned char data range_low, range_high;
  25          extern float data proportion; /* 幅度与DAC量程之比 */ 
  26          
  27          extern mdelay(unsigned int);
  28          void main()
  29          {
  30   1              unsigned int count;
  31   1              //      unsigned char dec_bit;
  32   1              //char rect_line1[] = "F  DR:5/5#";
  33   1              cur_signal = SIG_RECT;
  34   1              freq = 500;
  35   1              range_high = 0xff;
  36   1              range_low = 0x00;
  37   1              time_high = 1;
  38   1              time_low = 1;
  39   1      
  40   1              proportion = (float)(range_high - range_low) / 0xff;
  41   1              
  42   1              count = (HZ * time_high) / (freq * 12 * (time_high + time_low)) * 1000000;
  43   1              rect_high_TL0 = (unsigned char) count; 
  44   1              rect_high_TH0 = count >> 8;
  45   1      
  46   1              count = (HZ * time_low) / (freq * 12 * (time_high + time_low)) * 1000000;
  47   1              rect_low_TL0 = (unsigned char) count; 
  48   1              rect_low_TH0 = count >> 8;
  49   1              
  50   1              count = (HZ / (12 * 256 * freq)) * 1000000;
  51   1              sin_TL0 = (unsigned char) count;
  52   1              sin_TH0 = count >> 8;
  53   1      
  54   1              init_LCD1602();
  55   1              //if( cur_signal == SIG_RECT)
C51 COMPILER V7.50   MAIN                                                                  08/15/2007 19:26:19 PAGE 2   

  56   1              //      print_line(0, 10, "F  DR:5/5#");
  57   1              //else //cur_signal == SIG_SIN
  58   1              //      print_line(0, 10, "Z 0.5-5.0v");  
  59   1              
  60   1              enable_timer0();
  61   1              enable_timer1();
  62   1              
  63   1              printstr(0x0, 0xf, "SignalGenerator");
  64   1              printstr(0x40, 0x4f, "program running!");
  65   1              mdelay(1000);
  66   1              LCD_write_cmd(0x01);
  67   1              //print : program running
  68   1              
  69   1              printstr(0xa, 0xf, "0500HZ");
  70   1              
  71   1              while (1) {
  72   2                      if (cur_signal == SIG_RECT) {
  73   3                              printstr(0x0, 0x3, "F DR");
  74   3                              LCD_write_data(0, 4, time_high + 0x30);
  75   3                              LCD_write_data(0, 5, 'H');
  76   3                              LCD_write_data(0, 6, time_low + 0x30);
  77   3                              LCD_write_data(0, 7, 'L');
  78   3                              LCD_write_data(0, 8, ' ');
  79   3                              LCD_write_data(0, 9, ' ');
  80   3                              printstr(0x40, 0x4f, "SET DR: 5L  6H ");
  81   3                      } else {// 正弦波
  82   3                              LCD_write_data(0, 0, 'Z');
  83   3                              LCD_write_data(0, 1, ' ');
  84   3      
  85   3                              /* range_low / 50 + 0x30;将256个阶分为25份,每份10, 
  86   3                               * 对于Vref为5V的情况,10近似地代表0.2V 
  87   3                               * 50近似代表1V, 所以这里的dec_bit表示幅度的整数部分
  88   3                               */
  89   3                              LCD_write_data(0, 2, range_low / 50 + 0x30);    
  90   3                              LCD_write_data(0, 3, '.');
  91   3                              LCD_write_data(0, 4, ((range_low / 5) % 10) + 0x30);
  92   3                              // (range_low / 5) % 10 + 0x30;range_low /5 表示0。1V的个数, %10 取个位数
  93   3                              
  94   3                              LCD_write_data(0, 5, '-');
  95   3                              
  96   3                              LCD_write_data(0, 6, range_high / 50 + 0x30);   
  97   3                              LCD_write_data(0, 7, '.');
  98   3                              LCD_write_data(0, 8, (range_high / 5) % 10  + 0x30);
  99   3                              LCD_write_data(0, 9, 'V');
 100   3                              
 101   3                              printstr(0x40, 0x4f, "mod:5 trg,6 crst");   
 102   3                              //LCD_write_data(0, 4, (unsigned char)
 103   3                      }
 104   2              }
 105   1      }


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