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

📄 adandda_intial.lst

📁 电子设计训练课题
💻 LST
字号:
C51 COMPILER V8.02   ADANDDA_INTIAL                                                        07/16/2008 00:27:28 PAGE 1   


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

line level    source

   1          #include "common.h"
   2          #include"PCA.h"
   3          
   4          sfr16  RCAP2 = 0xca;
   5          sfr16  TMR2=0xcc;
   6          extern bit isnewdata,flag;
   7          extern int kk; 
   8          extern int xdata realvol0[100];
   9          unsigned char temppage;
  10          idata unsigned char temp_Page;
  11          extern  unsigned char Key_Value;
  12          int count=0;
  13          unsigned char number=0;
  14          extern int da;
  15          union tcfint16
  16          { 
  17                  uint myword;
  18                  struct{uchar hi;uchar low;}bytes;
  19          }myint16;//用联合体定义16位操作
  20          
  21          /*      
  22          void DAC1_initial()
  23          {
  24                  SFRPAGE=0x01;
  25              REF0CN=0x03;
  26                  DAC1CN|=0x80;
  27          } 
  28          */
  29          /*******************************************************************************/
  30          /*函数说明:定时器2初始化                                                      */
  31          /*******************************************************************************/
  32          void t2_ini()
  33          {
  34   1              
  35   1              SFRPAGE = 0x00;
  36   1              TMR2CF = 0x08;
  37   1              TMR2CN = 0x04;             // T2为16bit定时器模式,并启动定时器运行
  38   1      
  39   1      }
  40          
  41          /*******************************************************************************/
  42          /*函数说明:因为是用定时器2益处,中断来启动adc转换                             */
  43          /*入口参数:                                                                                                                               */
  44          /*         t2reload------------------------------------------------定时脉冲数目*/
  45          /*******************************************************************************/
  46          void t2_baud(uint t2reload)
  47          {                            //每隔t2reload个T2时钟,产生一次定时溢出
  48   1              SFRPAGE = 0x00;
  49   1              RCAP2 =~t2reload+1;      //相当于65536-t2reload
  50   1          TMR2  = RCAP2;
  51   1      
  52   1      }
  53          /*******************************************************************************/
  54          /*函数说明:选择ADC输入的模拟通道                                                      */
  55          /*入口参数:                                                                                                                               */
C51 COMPILER V8.02   ADANDDA_INTIAL                                                        07/16/2008 00:27:28 PAGE 2   

  56          /*            source--------------------------------为ADC0通道选择(共有9个通道)*/
  57          /*            type-------------------------------配置测量方式为差动还是单端输入*/
  58          /*******************************************************************************/
  59          void adc0_mux(uchar type,uchar source)
  60          {
  61   1          SFRPAGE = 0x00;
  62   1              AMX0CF=type;     //AIN67IC,AIN45IC,AIN23IC,AIN01IC,0为单端输入。  
  63   1              AMX0SL=source;   //选择AD输入通道的,有9个,其中第9通道是内部温度输入
  64   1      
  65   1      }
  66          
  67          void adc0_ini()
  68          {
  69   1          SFRPAGE = 0x00;
  70   1              ADC0CF=0x0f;     //ADC0时钟为系统时钟2分频,PGA增益为0.5
  71   1              ADC0CN=0x8c;     //AD0TM=0,ADC0为连续跟踪模式,由T2溢出率启动ADC0
  72   1                           //AD0LJST=0,数据存储格式右对齐,即ADC0H存放12bit高四位
  73   1              REF0CN&=0x0f;    //AD0VRS=0,ADC0参考电压为VREFA
  74   1              REF0CN|=0x07;    //TEMPE=1,内部温度传感器工作   
  75   1              /* 
  76   1                 REFBE=1,内部参考电平工作,电路部分须将VREF参考输出(C8051F40的第12管脚)与     VREF0(C8051F040的16管脚相连,
  77   1                 并最好并联一个4.7uF和0.1uF的旁路电容以电平滤波
  78   1              */
  79   1                      
  80   1              adc0_mux(0x00,0);//PORT3IC=1,ADC0 6、7通道为差动模式
  81   1                               //AIN0.0-AIN0.3均为单端模式
  82   1                               //选择AIN0.3为ADC0转化通道
  83   1              EIE2 |= 0x02;    //开ADC0中断
  84   1              t2_ini();
  85   1              t2_baud(100);   //每隔200个T2时钟产生一次ADC0采样
  86   1              SFRPAGE = 0x00;
  87   1              TR2=1;
  88   1      }
  89          
  90          
  91          void ADC0_ISR() interrupt 15  using 3
  92          {
  93   1          SFRPAGE = 0x00;
  94   1              AD0INT=0;
  95   1              kk=ADC0VAL;
  96   1      //  kk=ADC0H*256+ADC0L;
  97   1              DAC0=kk;  
  98   1      //      ad_value=(long)kk*ADJRATESE;
  99   1      //  temp=(float)ad_value/100000;        
 100   1              isnewdata=1;    
 101   1      }
 102          /*******************************************************************************/
 103          /*函数说明:产生锯齿波形                                                       */
 104          /*******************************************************************************/
 105          
 106          void DAC1_initial()
 107          {
 108   1              
 109   1              SFRPAGE=0x01;
 110   1              DAC1L=DAC0L;
 111   1          DAC1H=DAC0H;
 112   1              REF0CN=0x03;
 113   1              DAC1CN|=0x80;
 114   1      }
 115          void int0_ISR() interrupt 0
 116          {  //外部事件中断处理
 117   1              number++;
C51 COMPILER V8.02   ADANDDA_INTIAL                                                        07/16/2008 00:27:28 PAGE 3   

 118   1              if(number==2)
 119   1              {
 120   2                flag=1;
 121   2              }
 122   1              SFRPAGE=temp_Page;
 123   1      }
 124          
 125          void t0ini(){
 126   1              EA=0;
 127   1              SFRPAGE=0x00;//这条指令很重要,否则以下操作无法写入相应寄存器,与MCS-51略有不同
 128   1              IT0=1;// /INT0中断在电平下降沿触发
 129   1              IE0=0;// 外部中断/INT0中断标志位清零,/INT0中断中可硬件清零
 130   1              EX0=1;//允许/INT0外部事件中断
 131   1              EA=1;//开启全局中断
 132   1      }
 133          
 134          
 135          void DAC0_initial()
 136          {
 137   1              SFRPAGE=0x00;
 138   1          REF0CN=0x03;
 139   1              DAC0CN|=0x80;
 140   1      }
 141           /*************************************************************************************/
 142          
 143           
 144          
 145          void t3_ini()
 146          {
 147   1              SFRPAGE = 0x01;
 148   1              TMR3CF = 0x08;  // T2时钟为系统时钟
 149   1              TMR3CN = 0x04;  // 开启T3定时器
 150   1          EIE2|=0x01;
 151   1          t3_baud(100);   //每隔500 T3时钟更新一次DAC1输出,此时T3尚未启动
 152   1              EA=1;
 153   1      }
 154          void t3_baud(uint t3reload)
 155          {
 156   1              SFRPAGE = 0x01;
 157   1              RCAP3=65536-t3reload;
 158   1              TMR3=RCAP3;
 159   1      
 160   1              
 161   1      }
 162          
 163          
 164          void T3_ISR() interrupt 14
 165          {                   //T3定时中断,更新DAC1输出,DAC1为锯齿波输出
 166   1              TF3=0;
 167   1      
 168   1              SFRPAGE=0x01;
 169   1               da++;
 170   1               DAC1=da; 
 171   1      
 172   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    239    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.02   ADANDDA_INTIAL                                                        07/16/2008 00:27:28 PAGE 4   

   DATA SIZE        =      6    ----
   IDATA SIZE       =      1    ----
   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 + -