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

📄 control.lst

📁 通过按键控制波形
💻 LST
字号:
C51 COMPILER V8.02   CONTROL                                                               09/17/2008 21:00:00 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CONTROL
OBJECT MODULE PLACED IN control.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE control.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //////////////////////////////////////////////////////////////////////////////
   2          
   3          //_________________________________//
   4          // 0 1 2 3 4 5 6 7 8 9 a b c d e f //
   5          /////////////////////////////////////
   6          // O u t :   1 2 3 4 5 6 7 8   H z // disp_buf0[16]
   7          // I n  :    8 7 6 5 4 3 2 1   H z // disp_buf1[16]
   8          /////////////////////////////////////
   9          
  10          extern unsigned char    disp_buf0[16];
  11          extern unsigned char    disp_buf1[16];
  12          extern unsigned char code       disp_error[16];
  13          extern unsigned char code       disp_init[16];
  14          extern unsigned char            word_buf[5];
  15          extern unsigned char code   disp_max[16];
  16          
  17          extern  unsigned char   check_key(void);
  18          
  19          extern  void    ad9851_init(void);
  20          extern  void    send_word(unsigned char *fq_word);
  21          
  22          extern  void    lcd_init(void);
  23          extern  void    write_lcd(unsigned char select,unsigned char dat);
  24          extern  void    display_line(unsigned char y, unsigned char *dat);
  25          
  26          unsigned  long code     word_table[8] = {24,238,2386,23860,238609,2386092,23860929,238609294};//频率表
  27          
  28          void    delay_ms(unsigned char time)   //长延时函数
  29          {
  30   1              unsigned char cnt;
  31   1              while(time--)
  32   1                      for (cnt=17;cnt>0;--cnt);
  33   1      }
  34          void    delay_s(unsigned int time)       //短延时函数
  35          {
  36   1              unsigned int cnt;
  37   1              while(time--)
  38   1                      for (cnt=1000;cnt>0;--cnt);
  39   1      }
  40          
  41          main()
  42          {
  43   1                               char nbit = 0;
  44   1              unsigned char key;
  45   1              unsigned char frequent[8];        //用来查表的纯频率数组 
  46   1              unsigned char i;
  47   1              unsigned long temp;
  48   1      
  49   1              ad9851_init();        //各部件的初始化
  50   1              lcd_init();
  51   1      
  52   1              send_word(word_buf);   //初始化频率
  53   1              display_line(0,disp_buf0);
  54   1              display_line(1,disp_init);
  55   1              delay_s(200);
C51 COMPILER V8.02   CONTROL                                                               09/17/2008 21:00:00 PAGE 2   

  56   1              display_line(1,disp_buf1);// 液晶默认显示
  57   1      
  58   1              while(1)
  59   1              {
  60   2                      key = check_key();
  61   2                      if(key == 10)    //退格键
  62   2                      {
  63   3                              nbit--;  
  64   3                              if (nbit < 0)  // 记得加 上如果开机状态 输退格处理
  65   3                                      nbit = 0; 
  66   3                              frequent[nbit] = 0;
  67   3                              disp_buf1[5 + nbit] = ' ';
  68   3                              display_line(1,disp_buf1);
  69   3                      }
  70   2                      if(key == 11)   //确认键
  71   2                      {
  72   3                              temp = 0;
  73   3                              for(i=0;i<nbit;i++)  // 查表,读频率
  74   3                              {
  75   4                                      temp += (word_table[nbit-i-1]*frequent[i]);
  76   4                              }
  77   3                              for(i=0;i<4;i++)
  78   3                              {
  79   4                                      word_buf[4-i] = (unsigned char)(temp>>(8*i));
  80   4                              }
  81   3                              send_word(word_buf);   //更新频率
  82   3      
  83   3                              if(nbit != 0)
  84   3                                      for(i=0;i<8;i++)
  85   3                                              disp_buf0[5+i] = ' ';  //去掉上次显示
  86   3      
  87   3                              for(i=0;i<nbit;i++)        //更新频率显示
  88   3                              {
  89   4                                      disp_buf0[13-nbit+i] = frequent[i] + 0x30;      
  90   4                              }
  91   3                              display_line(0,disp_buf0);
  92   3                              for (i=0;i<8;i++)
  93   3                              {
  94   4                                      disp_buf1[5+i] = ' ';    //清输入显示
  95   4                                      frequent[i]     =  0;
  96   4                              }
  97   3                              
  98   3                              display_line(1,disp_buf1);
  99   3                              nbit = 0;
 100   3                      }
 101   2                      if(key <= 9 && key >= 0)        //数字键
 102   2                      {
 103   3                              if(nbit > 7 || ((nbit == 7) && (frequent[0] > 7)))               //超出最大范围
 104   3                                      {
 105   4                                              display_line(1,disp_error);
 106   4                                              display_line(0,disp_max);               //显示超范围错误
 107   4                                              delay_s(200);
 108   4                                              display_line(0,disp_buf0);
 109   4                                              for(i=0;i<8;i++)                                        //清屏幕
 110   4                                              {
 111   5                                                      nbit = 0;
 112   5                                                      disp_buf1[5 + i] = ' ';
 113   5                                                      frequent[i] = 0;
 114   5                                              }
 115   4                                              display_line(1,disp_buf1);
 116   4                                      }
 117   3                              else                                                                    //数字键处理过程
C51 COMPILER V8.02   CONTROL                                                               09/17/2008 21:00:00 PAGE 3   

 118   3                                      {
 119   4                                              frequent[nbit] = key;
 120   4                                              disp_buf1[5 + nbit] = key + 0x30;
 121   4                                              display_line(1,disp_buf1);
 122   4                                              nbit++;
 123   4                                      }
 124   3                       }      
 125   2              }       
 126   1      }


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