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

📄 main.lst

📁 采用AD9851设计的一个产生50M 方波
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.08   MAIN                                                                  05/04/2009 15:04:02 PAGE 1   


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

line level    source

   1          /************************************************************************
   2          *文件名:main。C                                                        *
   3          *功能:  高频实验箱DDS程序。                                            *
   4          *作者:  杨乐                                                           *
   5          *日期:  2009年1月21日                                                  *
   6          ************************************************************************/
   7          #include<REG52.h>
   8          #include<intrins.h>
   9          #include<string.h>
  10          #include"mainloop.h"
  11          #include "dds9851.h"
  12          #include"key.h"
  13          #include"lcd.h"
  14          #include "volcontrol.h"
  15          /************************************************************************
  16          *作者:    杨乐                                                         *
  17          *函数名:  Init_special_interrupts                                      *
  18          *功能:    中断设置                                                     *
  19          *入口参数:无                                                           *
  20          *返回值:  无                                                           *
  21          *日期:    2009年1月21日                                                *
  22          ************************************************************************/
  23          void Init_special_interrupts(void)
  24          {
  25   1              EA = 1;
  26   1      //    ES = 1;
  27   1          ES = 0;
  28   1          ET1 = 0;
  29   1          ET0 = 1;
  30   1          EX1 = 0;
  31   1      //    EX0 = 1;
  32   1          EX0 = 0;
  33   1              TR0 = 1;
  34   1      //    IT0 = 1;
  35   1      //    IP = #10H;
  36   1      }
  37          /************************************************************************
  38          *作者:    杨乐                                                         *
  39          *函数名:  Init_MCU                                                     *
  40          *功能:    I/O口初始化                                                  *
  41          *入口参数:无                                                           *
  42          *返回值:  无                                                           *
  43          *日期:    2009年1月21日                                                *
  44          ************************************************************************/
  45          void Init_MCU()
  46          {
  47   1              P0 = 0xFF;
  48   1              P1 = 0xFF;
  49   1              P2 = 0xFF;
  50   1              P3 = 0xFF;
  51   1      
  52   1              //串口配置
  53   1      //      SCON = 0xD8;
  54   1              //电源设置
  55   1      //      PCON = 0x80;           //波特率加倍
C51 COMPILER V8.08   MAIN                                                                  05/04/2009 15:04:02 PAGE 2   

  56   1      }
  57          /************************************************************************
  58          *作者:    杨乐                                                         *
  59          *函数名:  Init_timer                                                   *
  60          *功能:    定时器初始化                                                 *
  61          *入口参数:无                                                           *
  62          *返回值:  无                                                           *
  63          *日期:    2009年1月21日                                                *
  64          ************************************************************************/
  65          void Init_timer()
  66          {
  67   1              TMOD = 0x21;         //T1为8位,T0为16位
  68   1          TH0 = 0xF0;                 //T0定时扫描键盘,4ms×
  69   1          TL0 = 0x5F;
  70   1          TH1 = 0xF3;
  71   1          TL1 = 0xF3;
  72   1      }
  73          /************************************************************************
  74          *作者:    杨乐                                                         *
  75          *函数名:  Timer_0                                                      *
  76          *功能:    定时器中断程序(键盘扫描)                                   *
  77          *入口参数:无                                                           *
  78          *返回值:  无                                                           *
  79          *日期:    2009年1月21日                                                *
  80          ************************************************************************/
  81          void Timer_0(void) interrupt 1 //中断方式0 
  82          { 
  83   1              TR0 = 0;
  84   1              ET0 = 0;
  85   1      
  86   1      //--------------------------------------------
  87   1      //  添加周期性处理程序,如定时等
  88   1      //      if (!(DisplayTimer--)) DEnable = TRUE;
  89   1      //      KeyEnable = TRUE;
  90   1              
  91   1      // 读键盘---------------------------------
  92   1              new_key = Read_Key();
  93   1              if ((new_key & 0xF0) == 0x00)
  94   1              {
  95   2                      if (new_key != old_key)                 // 有新的按键被按下
  96   2                      {
  97   3                              key_counter = 0;                // 计时开始
  98   3                              Key_Process = FALSE;
  99   3                      }
 100   2                      else
 101   2                      {
 102   3                              if ((key_counter >= 5) && !Key_Process)         // 按下键超过20ms且未处理 
 103   3                              {
 104   4                                      Key_Push_Flag = TRUE;
 105   4                                      Key_Code = new_key;
 106   4                              }
 107   3                              else key_counter++;             // 连续计数
 108   3                      }
 109   2              }
 110   1              
 111   1              old_key = new_key;                              // 保存键值
 112   1      
 113   1          TH0 = 0xDA;
 114   1          TL0 = 0xF0;
 115   1      
 116   1              TR0 = 1;
 117   1              ET0 = 1;
C51 COMPILER V8.08   MAIN                                                                  05/04/2009 15:04:02 PAGE 3   

 118   1      } 
 119          /************************************************************************
 120          *作者:    杨乐                                                         *
 121          *函数名:  main                                                         *
 122          *功能:    主程序                                                       *
 123          *入口参数:无                                                           *
 124          *返回值:  无                                                           *
 125          *日期:    2009年1月21日                                                *
 126          ************************************************************************/
 127          void main(void)
 128          {
 129   1         // unsigned char i,j;
 130   1          Init_MCU();
 131   1              Init_timer();
 132   1              Init_special_interrupts();
 133   1              Init_DDS();
 134   1          SetVoltage(5000);
 135   1              initi();
 136   1      //-----------------------------------//
 137   1              Key_Push_Flag = FALSE;
 138   1              Key_Process = FALSE;
 139   1      
 140   1              ichar = 0;
 141   1              Renew_Key = TRUE;
 142   1              En_Key = FALSE;
 143   1      
 144   1              Fnc = FSK;
 145   1              mul = 1;
 146   1      
 147   1              K_M = 0;
 148   1              Freq_Vol = 0;
 149   1              p = 0;
 150   1          p1 = 0;
 151   1              c = 1;
 152   1              fd = 0;
 153   1              fd1 = 0;
 154   1          display(0x80,"        ");
 155   1              display(0xc0,"        ");
 156   1          display(0x84,"1000");
 157   1          display(0xC0,"HZ");
 158   1      //      Freqdisplay[7]={0,0,0,1,};
 159   1          while(1)
 160   1        {     
 161   2              if(Key_Push_Flag)
 162   2              {
 163   3                      if ((Key_Code <= 9)&&(Renew_Key)&&(p_bit==0)) 
 164   3                              {
 165   4                              //      if (Freq_Vol == 0)
 166   4                              //      {
 167   4                                              Fichar = 0;
 168   4                                              memset(Freqdisplay,0,8);
 169   4                                              f = 0;
 170   4                                              mul = 1;
 171   4                              /*      }
 172   4                                      else
 173   4                                      {
 174   4                                              Vichar = 0;
 175   4                                              memset(Voldisplay,0,8);
 176   4                                              v = 0;
 177   4                                      }*/
 178   4                                      Fnc = FSK;
 179   4                                      En_Key = TRUE;
C51 COMPILER V8.08   MAIN                                                                  05/04/2009 15:04:02 PAGE 4   

 180   4                                      Renew_Key = FALSE;
 181   4                                      display(0x80,"        ");
 182   4                              //      Display_8X16(3,0,"                ");
 183   4                              }               
 184   3                              if ((Key_Code <= 9)&&(En_Key)&&(p_bit==0)) 
 185   3                              {                       
 186   4                                      /*if (Freq_Vol == 1)
 187   4                                      {
 188   4                                              v = Dis(Voldisplay,&Vichar,0x80);
 189   4                          //  display(0x80,Voldisplay);
 190   4                                      }
 191   4                                      else
 192   4                                      {*/
 193   4                                              f = Dis(Freqdisplay,&Fichar,0x88);
 194   4                                              //      display(0x80,Freqdisplay);
 195   4                              //      }
 196   4                                      
 197   4                                      Key_Push_Flag = FALSE;                                  // 处理完,清除标志
 198   4                                      Key_Process = TRUE;                                     // 置处理标志
 199   4                              }
 200   3              }
 201   2      //确定
 202   2                              if ((Key_Code == 0x0F))
 203   2                              {
 204   3                              //      if(!Freq_Vol)
 205   3                              //      {

⌨️ 快捷键说明

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