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

📄 adda.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 1   


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

stmt level    source

   1          #include "system.h"
   2          #include "menu.h"
   3          #include "Lcd.h"
   4          #include <string.h>
   5          
   6          unsigned char ADCdata[1000];                                    //存放AD转化数据
   7          unsigned int  ADcounter=0;
   8          unsigned char TriggerMode=2;                                    //触发模式
   9          unsigned int TriggerValue=1000;                             //触发器触发值,单位mv
  10          unsigned char ADH_TriggerValue=0x55;                    //TriggerValue对应ADC值
  11          unsigned char ADL_TriggerValue=0x50;
  12          char LastStats=2;
  13          
  14          char ready=0;
  15          unsigned int code SinTable[]={                                  //一周期64点sin值表(0~4095)
  16           2048,  2248,  2447,  2642,  2831,  3013,  3185,  3347,  3496,  3631, 
  17           3750,  3854,  3940,  4007,  4056,  4086,  4095,  4086,  4056,  4007, 
  18           3940,  3854,  3750,  3631,  3496,  3347,  3185,  3013,  2831,  2642, 
  19           2447,  2248,  2048,  1847,  1648,  1453,  1264,  1082,   910,   748, 
  20            599,   464,   345,   241,   155,    88,    39,     9,     0,     9, 
  21             39,    88,   155,   241,   345,   464,   599,   748,   910,  1082, 
  22           1264,  1453,  1648,  1847,   };
  23          
  24          unsigned char xdata DACdata[128] _at_ 0x0;                      //存放DA转化数据(梯形波或正弦波,每周期64点)
  25          //ADDA参数数组:0:信源;1:频率;2:幅度;3:上升比;4:高电平;5:下降比;6:采样频率;7:接口模式
  26          unsigned char ADDAParaList[]={0,1,12,20,30,40,16,0};
  27          
  28          void DA_T4_INIT()                                       //T4初始化,驱动DA产生波形
  29          {       
  30   1              char SFRPAGE_SAVE;
  31   1              unsigned int T4VALUE; 
  32   1              SFRPAGE_SAVE=SFRPAGE;
  33   1          SFRPAGE = TMR4_PAGE;
  34   1              //T4初值= FFFF - 22.1184M/DA频率
  35   1              T4VALUE = 0xFFFF-(unsigned int)221184/(ADDAParaList[1]*64);
  36   1              TMR4H=T4VALUE>>8;                                                
  37   1              TMR4L=T4VALUE;                        
  38   1          RCAP4L=TMR4L;
  39   1          RCAP4H=TMR4H;
  40   1          TMR4CF |=0x09;                                      //SYSCLK作为T4输入,向上计数             
  41   1              TMR4CN &=0xf4;                                  //T4工作模式: 自动重装,计时器,忽略T3EX信号                       
  42   1              TR4=1;                                                  
  43   1              EIE2|=0x04;                                             //开T4中断
  44   1              SFRPAGE=SFRPAGE_SAVE;
  45   1      }
  46          
  47          void DAC0_Init()                                        //DAC中断,数据通过并口发送,判断触发
  48          {
  49   1              char SFRPAGE_SAVE;
  50   1              SFRPAGE_SAVE=SFRPAGE;
  51   1          SFRPAGE = DAC0_PAGE;
  52   1              REF0CN =0x03;                                   //ADDA内部偏压发生器工作,电压基准输出到VREF引脚(2.4V)
  53   1              DAC0CN=0x90;                                    //使能DAC0,T4溢出启动转换,数据右对齐
  54   1              SFRPAGE=SFRPAGE_SAVE;
  55   1      }
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 2   

  56          
  57          void AD_T3_INIT()                                       //T3初始化,用于驱动ADC0,但不引发中断(中断由ADC0引发)
  58          {               
  59   1              char SFRPAGE_SAVE;
  60   1              unsigned int T3Value;
  61   1              T3Value=0xFFFF-(unsigned int)22118/ADDAParaList[6];
  62   1              SFRPAGE_SAVE=SFRPAGE;
  63   1          SFRPAGE = TMR3_PAGE;
  64   1              //设置采样频率:TMR3=0xFFFF-22118400/采样频率 
  65   1              TMR3L=T3Value;                           
  66   1              TMR3H=T3Value>>8;
  67   1          RCAP3L=TMR3L;
  68   1          RCAP3H=TMR3H;
  69   1          TMR3CF |=0x09;                                      //SYSCLK作为T3输入,向上计数
  70   1              TMR3CN &=0xf4;                                  //T3工作模式: 自动重装,计时器,忽略T3EX信号                       
  71   1              TR3=1;
  72   1              SFRPAGE=SFRPAGE_SAVE;
  73   1      }
  74          
  75          void ADC0_Init()                                        //AD初始化      
  76          {
  77   1              char SFRPAGE_SAVE;
  78   1              SFRPAGE_SAVE=SFRPAGE;
  79   1          SFRPAGE = ADC0_PAGE;
  80   1              REF0CN =0x03;                                   //ADDA内部偏压发生器工作,电压基准输出到VREF引脚(2.4V)
  81   1              AMX0SL =0x06;                                   //选择AIN0.6作为输入,单端模式
  82   1              ADC0CF =0x16;                                   //CLKsar0=SYSCLK/6;PGA放大器0.5倍增益
  83   1              ADC0CN|=0x85;                                   //T3溢出启动转换,数据左对齐,启动ADC0
  84   1              SFRPAGE=SFRPAGE_SAVE;
  85   1      }
  86          ///////////////////////////////////////////////////////////
  87          void DASetUp_OnPaint()                                  //显示设置界面
  88          {       
  89   1              Clear(16*3,16*10);
  90   1              dprintf(2,16*2,"妚内部正弦波 妚内部梯形波 妚外部信号");
  91   1              dprintf(2+ADDAParaList[0]*13,16*2,"盅");
  92   1      
  93   1              if(ADDAParaList[0]!=2)
  94   1              {
  95   2                      dprintf(2,16*3,"信号频率:     Hz");
  96   2                      putufig(11,16*3, ADDAParaList[1]*100,5,0,' ');
  97   2                      dprintf(2,16*4,"信号幅度:     mV");
  98   2                      putufig(11,16*4, ADDAParaList[2]*100,5,0,' ');
  99   2              }
 100   1              if(ADDAParaList[0]==1)
 101   1              {               
 102   2                      int Sample[9]={4,130,150,0,110,0,110,0,150};
 103   2                      Sample[3]=130+ADDAParaList[3];
 104   2                      Sample[5]=130+ADDAParaList[3]+ADDAParaList[4];
 105   2                      Sample[7]=130+ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5];
 106   2      
 107   2                      dprintf(2,16*5,"上升比:   %   波形:");
 108   2                      putufig(9,16*5, ADDAParaList[3],3,0,' ');
 109   2                      dprintf(2,16*6,"高电平:   %");
 110   2                      putufig(9,16*6, ADDAParaList[4] ,3,0,' ');
 111   2                      dprintf(2,16*7,"下降比:   %");
 112   2                      putufig(9,16*7, ADDAParaList[5],3,0,' ');
 113   2      
 114   2                      drawline(130,150,130,100);
 115   2                      drawline(130,150,300,150);
 116   2                      link(Sample);
 117   2      
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 3   

 118   2                      Sample[0]=3;
 119   2                      Sample[1]=230;
 120   2                      Sample[3]=230+ADDAParaList[3];
 121   2                      Sample[5]=230+ADDAParaList[3]+ADDAParaList[4];
 122   2                      Sample[7]=230+ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5];
 123   2                      link(Sample);
 124   2              }       
 125   1      }
 126          
 127          void ADDASetUp()                                        //设置
 128          {
 129   1              char MovHand=1;                                 //移动光标标志位
 130   1              char ItemSel=1;                                 //光标所在行
 131   1              //显示界面
 132   1              Clear(0,240);
 133   1              dprintf(10,0,"并口A/D采集实验设置");
 134   1              dprintf(2,16*1,"选择信号源:");
 135   1              dprintf(2,16*10 ,"并口模式: EPP");
 136   1              dprintf(2,16*11,"采样频率: 16KHz");
 137   1              dprintf(0,16*12,line);
 138   1              dprintf(0,16*13,"选择项目 改变参数");
 139   1              dprintf(1,16*14, "芗  兦   戛  戋");
 140   1              dprintf(35,16*14, "确定");
 141   1              DASetUp_OnPaint();
 142   1      
 143   1              while(1)
 144   1              {               
 145   2                      if(CheckKeyF==1)                        //键盘检测
 146   2                      {
 147   3                              CheckKey();
 148   3                              CheckKeyF=0;
 149   3                      }
 150   2      
 151   2                      if(MovHand==1)
 152   2                      {
 153   3                              int i;
 154   3                              for(i=0;i<12;i++)
 155   3                              {
 156   4                                      if(ItemSel==i)  
 157   4                                      dprintf(0,i*16,"贲");
 158   4                                      else
 159   4                                      dprintf(0,i*16,"  ");
 160   4                              }
 161   3                              MovHand=0;
 162   3                      }
 163   2      
 164   2                      if(Key[0].pressed==1)       //检测到上键
 165   2                      {
 166   3                      Key[0].pressed=0;
 167   3                              switch(ItemSel)
 168   3                              {
 169   4                              case 1:
 170   4                                      break;
 171   4                              case 3:
 172   4                                      ItemSel=1;
 173   4                                      break;
 174   4                              case 10:
 175   4                                      if(ADDAParaList[0]==2)          ItemSel=1;
 176   4                                      if(ADDAParaList[0]==1)          ItemSel=7;
 177   4                                      if(ADDAParaList[0]==0)          ItemSel=4;
 178   4                                      break;
 179   4                              default:
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 4   

 180   4                                      ItemSel--;
 181   4                                      break;
 182   4                              }
 183   3                              MovHand=1;                              
 184   3                      }
 185   2      
 186   2                      if(Key[1].pressed==1)       //检测到下键
 187   2                      {
 188   3                      Key[1].pressed=0;
 189   3                              switch(ItemSel)
 190   3                              {
 191   4                              case 1:
 192   4                                      ItemSel=3;
 193   4                                      if(ADDAParaList[0]==2)          ItemSel=10;
 194   4                                      break;
 195   4                              case 4:
 196   4                                      ItemSel=5;
 197   4                                      if(ADDAParaList[0]!=1)          ItemSel=10;
 198   4                                      break;
 199   4                              case 7:
 200   4                                      ItemSel=10;
 201   4                                      break;
 202   4                              case 11:
 203   4                                      break;
 204   4                              default:
 205   4                                      ItemSel++;
 206   4                                      break;
 207   4                              }
 208   3                              MovHand=1;              
 209   3                      }
 210   2      
 211   2                      if(Key[2].pressed==1)       //检测到-键
 212   2                      {

⌨️ 快捷键说明

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