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

📄 oscilloscope2.lst

📁 单片机通过DA对信号采样
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE OSCILLOSCOPE2
OBJECT MODULE PLACED IN oscilloscope2.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE oscilloscope2.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<AT89X52.H>
   2          #include<absacc.h>
   3          #include<intrins.h>
   4          #define unchar  unsigned char 
   5          #define unint   unsigned int
   6          #define DisCmd XBYTE [0xC100]                     //7218控制字地址
   7          #define DisData XBYTE [0xC000]                    //7218数据口地址
   8          #define LedMode P1_5
   9          #define scode 0xb0                                //7218软件译码方式命令字
  10          #define bcode 0x90                                //B码译码方式命令字
  11          #define hexcode 0xd0                              //软件译码方式命令字
  12          #define CMD8155       XBYTE[0XEFF0]               //8155命令口
  13          #define PA8155        XBYTE[0XEFF1]               //8155PA口
  14          #define PB8155        XBYTE[0XEFF2]               //8155PB口
  15          #define PC8155        XBYTE[0XEFF3]               //8155PC口
  16          //*****************************************************************************************************
  17          #define Wave_Frequence_Low      XBYTE[0XA0F0]  //测量波形频率低位
  18          #define Wave_Frequence_High     XBYTE[0XA0F1]  //测量波形频率高位
  19          #define Wave_Amplitude_Add      XBYTE[0XA0F2]  //测量波形幅度
  20          //#define Select_A              XBYTE[0xA0F3]  //|A路选通/断路            |     01/00
  21          #define Select_AB               XBYTE[0xA0F3]  //|A,B路选通/断路          |     01/02/03(A,B,AB)
  22          #define Frequence_Start         XBYTE[0XA0F4]  //频率测量控制字口         
  23          //#define Vertical_Gain_A       XBYTE[0xA0F4]  //|A垂直增益挡位(三挡)   |     00/01/02
  24          #define Vertical_Move_A         XBYTE[0xA0F5]  //|A垂直移动波形           |     00 ~ FF
  25          //#define Select_B              XBYTE[0xA0F6]  //|B路选通/断路            |     01/00
  26          //#define Vertical_Gain_B       XBYTE[0xA0F7]  //|B垂直增益挡位(三挡)   |     00/01/02
  27          #define Vertical_Move_B         XBYTE[0xA0F8]  //|B垂直移动波形           |     00 ~ FF
  28          #define Single_Auto_Select      XBYTE[0xA0F9]  //|单次/连续触发方式切换; |     01/00  
  29          #define Trigger_Voltage         XBYTE[0xA0FA]  //|单次触发电平值          |     00 ~ FF
  30          #define Lock_Wave               XBYTE[0xA0FB]  //|锁存当前波形;          |     先01后00
  31          #define X_Freq_High             XBYTE[0xA0FC]  //|水平增益频率高八位;    |     00 ~ 3F
  32          #define X_Freq_Low              XBYTE[0xA0FD]  //|水平增益频率低八位;    |     00 ~ FF
  33          #define X_Move                  XBYTE[0xA0FE]  //|水平移动相位八位;      |     00 ~ C7
  34          #define RESET                   XBYTE[0xA0FF]  //|重置信号reset;         |     置01
  35          
  36          //*****************************************************************************************************
  37          bit    Enter;                                               //enter键按下标志
  38          bit    Glint_Flag;                                           //闪烁标志位
  39          bit    Special_Down_Flag;
  40          bit    Shift_Flag;
  41          bit    Lock_Wave_Flag;
  42          //bit  Select_A_Flag;
  43          //bit    Select_B_Flag;
  44          //bit    Lock_Wave;
  45          bit    Led_On=1;
  46          bit    tempflag;
  47          //unchar Select_Flag;
  48          unchar AD_Channel;
  49          //unchar AD_Controll;
  50          unint  Wave_Frequence;
  51          unchar  Wave_Amplitude;
  52          //unchar Frequence_Measure_Flag;                                 //波形频率测量标志
  53          unchar keynum; 
  54          unchar Single_Flag;                                            //单步标志
  55          unchar Vertical_Pos_A;                                         //垂直偏移位置A
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 2   

  56          unchar Vertical_Pos_B;                                         //垂直偏移位置B
  57          unchar Vertical_Gain_A_Grade;                                  //垂直增益等级A
  58          unchar Vertical_Gain_B_Grade;                                  //垂直增益等B
  59          unint  X_Frequence;                                            //X轴扫描频率
  60          unint  X_Pos;                                                  //X轴平移位置
  61          unint  Trigger_V;                                              //触发电平
  62          unchar Key_Flag;                                              //功能键按键标志
  63          unchar ledcursor=7;                                           //保存光标当前位置
  64          unchar distab[8]={0x12,0x13,0x14,0x00,0x12,0x12,0x0e,0x11};   //要显示的内容 hello-pp
  65          unchar code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
  66                                 //0,   1,    2,   3,   4,   5,   6,   7 
  67                                 0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
  68                                 //8    ,9   ,a   ,b   ,c    ,d  ,e    ,f  
  69                                 0x80,0xbe,0x8b,0xee,0x84 };
  70                                 //熄灭 H    L    P    -
  71          //*****************************************************************************************************
  72          extern void lcd_init();
  73          extern void lcd_write_passage(unchar *string);
  74          extern void lcd_write_sentence(unchar row,unchar col,unchar *string);
  75          extern void lcd_write_command(unchar c);
  76          extern void lcd_write_data(unchar ddata); //向LCD模块的字符发生器或显存写一个字节data。 
  77          extern void lcd_clear();
  78          //*****************************************************************************************************
  79          void delay200ms()
  80           { 
  81   1         int i=10000,j=1000;
  82   1         for(;i>0;i--)
  83   1         for(;j>0;j--);
  84   1        } 
  85          //***************************************************************************************   
  86          void display(unchar dot)
  87          {
  88   1         unchar i; 
  89   1         LedMode=1;
  90   1         DisCmd=scode;            //采用软件译码
  91   1         LedMode=0;
  92   1         if(Led_On)
  93   1         {
  94   2         for(i=0;i<8;i++)                    //将distab中的数据送如7218
  95   2         {
  96   3           if((i==dot)&(dot!=0))
  97   3                 DisData=ledtab[distab[i]]+0x80; //查表转化并将字型送入7218
  98   3              else
  99   3             DisData=ledtab[distab[i]];      //查表转化并将字型送入7218
 100   3         } 
 101   2        }
 102   1      } 
 103          //*************************************************************************************** 
 104          void distab_clear()
 105          {
 106   1        unchar i;
 107   1        for(i=0;i<8;i++)
 108   1        {
 109   2        distab[i]=0x10;
 110   2        }
 111   1      } 
 112            
 113          //**************************************************************************************      
 114          //***************************************************************************************  
 115          void glint() //glintflag为1闪烁,flag为0,不闪烁;
 116          {
 117   1        
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 3   

 118   1        unchar  i;
 119   1        while(Glint_Flag&Led_On)            //光标位置闪烁
 120   1         {
 121   2          LedMode=1;
 122   2          DisCmd=scode;         //采用软件译码
 123   2              LedMode=0;
 124   2          for(i=0;i<8;i++)      //将distab中的数据送如7218       
 125   2            {
 126   3              if(i==ledcursor)
 127   3                      DisData=0x80; //查表转化并将字型送入7218 
 128   3                  else
 129   3                  DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
 130   3            }
 131   2               delay200ms();
 132   2               LedMode=1;
 133   2               DisCmd=scode;            
 134   2               display(0);
 135   2           delay200ms();
 136   2         }
 137   1      }
 138          //***************************************************************************************
 139          /*初始化:A0F3:1, A0F4:2, A0F5:00, A0F6:0, A0F7:2, A0F8:00, A0F9:0, 
 140                    A0FA:00, A0FB:0, A0FC:40, A0FD:00;初始挡位, A0FE:00  */
 141          void FpgaInitial()     //初始化程序
 142          {
 143   1        Select_AB=1;
 144   1       // Vertical_Gain_A=2;
 145   1        Vertical_Move_A=0;
 146   1        //Select_A=0;
 147   1        //Vertical_Gain_B=2;
 148   1        Vertical_Move_B=0;
 149   1        Single_Auto_Select=0;
 150   1        Trigger_Voltage=0;
 151   1        Lock_Wave=0;
 152   1        X_Freq_High=0x03;
 153   1        X_Freq_Low=0xE8;
 154   1        X_Move=0;
 155   1        Frequence_Start=0;
 156   1      }
 157          //***************************************************************************************
 158          void Set_X_Freq()   //设置X轴扫描频率,Key_Flag:1
 159          {  
 160   1         Shift_Flag=1;
 161   1         //unint Freq,temp;
 162   1         Led_On=1;
 163   1         Key_Flag=1;
 164   1         ledcursor=4;
 165   1         Glint_Flag=1;
 166   1         distab[0]=0x00;
 167   1         distab[1]=0x00;
 168   1         distab[2]=0x00;
 169   1         distab[3]=0x00;
 170   1         distab[4]=0x00;
 171   1         distab[5]=0x10;
 172   1         distab[6]=0x10;
 173   1         distab[7]=0x01;
 174   1         display(0);
 175   1         lcd_clear();
 176   1         lcd_write_sentence(1,0,"请输X 轴扫描频率");
 177   1         lcd_write_sentence(2,1,"频率范围:");
 178   1         lcd_write_sentence(3,1,"0-100KHZ");
 179   1         
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 4   

 180   1      }
 181          //***************************************************************************************
 182          void Set_X_Pos()
 183          {
 184   1         Shift_Flag=1;
 185   1         lcd_clear();
 186   1         Key_Flag=2;
 187   1         ledcursor=2;
 188   1         Glint_Flag=1;
 189   1         Led_On=1;
 190   1         distab[0]=0x00;
 191   1         distab[1]=0x00;
 192   1         distab[2]=0x00;
 193   1         distab[3]=0x10;
 194   1         distab[4]=0x10;
 195   1         distab[5]=0x10;
 196   1         distab[6]=0x10;
 197   1         distab[7]=0x02;
 198   1         display(0); 
 199   1         lcd_write_sentence(1,0,"请输入水平移相");
 200   1         lcd_write_sentence(2,1,"位置范围:");
 201   1         lcd_write_sentence(3,2,"0-200");
 202   1         
 203   1      }
 204          void Set_Trigger_Voltage()
 205          {
 206   1         Shift_Flag=1;
 207   1         lcd_clear();
 208   1         Key_Flag=3;
 209   1         ledcursor=2;
 210   1         Led_On=1;
 211   1         Glint_Flag=1;
 212   1         distab[0]=0x00;
 213   1         distab[1]=0x00;
 214   1         distab[2]=0x00;
 215   1         distab[3]=0x10;
 216   1         distab[4]=0x10;
 217   1         distab[5]=0x10;
 218   1         distab[6]=0x10;
 219   1         distab[7]=0x03;
 220   1         //display(2); 
 221   1         lcd_write_sentence(1,0,"请输入触发电平");
 222   1         lcd_write_sentence(2,1,"电平范围:");
 223   1         lcd_write_sentence(3,2,"0-5V");
 224   1         
 225   1       }
 226          //***************************************************************************************
 227          void Lock_Current_Wave()
 228          {
 229   1        //Special_Down_Flag;
 230   1        Lock_Wave_Flag=!Lock_Wave_Flag;
 231   1        Led_On=0;
 232   1        //Lock_Wave=Lock_Wave_Flag;
 233   1        lcd_clear();
 234   1        if(Lock_Wave_Flag)
 235   1        {
 236   2        lcd_write_sentence(2,1,"波形锁存成功!");
 237   2        Lock_Wave=1;
 238   2        }
 239   1        else
 240   1        {
 241   2        lcd_write_sentence(2,1,"波形解除锁定!");
C51 COMPILER V7.06   OSCILLOSCOPE2                                                         08/19/2005 08:58:26 PAGE 5   

 242   2        Lock_Wave=0;
 243   2        }
 244   1      }
 245          //***************************************************************************************
 246          void Single_Select()
 247          {
 248   1        //Special_Down_Flag
 249   1        lcd_clear();
 250   1        Led_On=0;
 251   1        Single_Flag=!Single_Flag;
 252   1        //Single_Auto_Select=Single_Flag;
 253   1        lcd_clear();
 254   1        lcd_write_sentence(1,0,"当前触发状态:");
 255   1        if(Single_Flag)
 256   1        {

⌨️ 快捷键说明

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