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

📄 dac.lst

📁 含20个经典例程
💻 LST
字号:
C51 COMPILER V7.01  DAC                                                                    05/04/2004 13:35:14 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE DAC
OBJECT MODULE PLACED IN DAC.OBJ
COMPILER INVOKED BY: C:\keil7\C51\BIN\C51.EXE DAC.c DB OE

stmt level    source

   1          /////////DAC调试程序/////////////////
   2          /////////T2定时更新DAC1输出/////////////////////
   3          ////////DAC0为直接更新///////////////////////////
   4          /////////DAC.c////////////////////////////////////////
   5          #include "c8051F040.h"
   6          typedef unsigned char uchar;
   7          typedef unsigned int uint;
   8          typedef unsigned long ulong;
   9          sfr16 RCAP2=0xca;
  10          sfr16 RCAP3=0xca;
  11          sfr16 RCAP4=0xca;
  12          sfr16 TMR4=0xcc;
  13          sfr16 TMR3=0xcc;
  14          sfr16 TMR2=0xcc;
  15          sfr16 PCA0CP0=0xfb;
  16          sfr16 PCA0CP1=0xfd;
  17          sfr16 PCA0CP2=0xe9;
  18          sfr16 PCA0CP3=0xeb;
  19          sfr16 PCA0CP4=0xed;
  20          sfr16 PCA0CP5=0xe1;
  21          sfr16 ADC0VAL=0xbe;
  22          sfr16 ADC0GT=0xc4;
  23          sfr16 ADC0LT=0xc6;
  24          sfr16 DAC1VAL=0xD2;
  25          sfr16 DAC0VAL=0xD2;
  26          union tcfint16{ 
  27                  uint myword;
  28                  struct{uchar hi;uchar low;}bytes;
  29          }myint16;//用联合体定义16位操作
  30          void dac0_cfg(uchar cfg);
  31          void dac1_cfg(uchar cfg);
  32          void dac0_updata(uint val);
  33          void dac1_updata(uint val);
  34          void config();
  35          void t2_ini();
  36          void t2_baud(uint t2reload);
  37          void t2_ini(){
  38   1              SFRPAGE = 0x00;
  39   1              TMR2CF = 0x08;  // T2时钟为系统时钟
  40   1              TMR2CN = 0x00;  // 开启T2定时器
  41   1              ET2=1;//开启T2定时器中断
  42   1      }
  43          void t2_baud(uint t2reload){
  44   1              SFRPAGE = 0x00;
  45   1              RCAP2=65536-t2reload;
  46   1              TMR2=RCAP2;
  47   1      }
  48          void dac0_cfg(uchar cfg){
  49   1              SFRPAGE=0x00;
  50   1              DAC0CN=cfg;
  51   1              REF0CN|=0x03;//DAC参考电平只能由VREFD输入
  52   1      }
  53          void dac1_cfg(uchar cfg){
  54   1              SFRPAGE=0x01;
  55   1              DAC0CN=cfg;
C51 COMPILER V7.01  DAC                                                                    05/04/2004 13:35:14 PAGE 2   

  56   1              SFRPAGE=0x00;
  57   1              REF0CN|=0x03;
  58   1      }
  59          void dac0_updata(uint val){
  60   1              SFRPAGE=0x00;
  61   1              myint16.myword=val;//利用联合体进行快速uint型数据操作
  62   1              DAC0L=myint16.bytes.low;
  63   1              DAC0H=myint16.bytes.hi;//在直接更新模式下,此时开始更新DAC0输出
  64   1      }
  65          void dac1_updata(uint val){
  66   1              SFRPAGE=0x01;
  67   1              myint16.myword=val;//利用联合体进行快速uint型数据操作
  68   1              DAC1L=myint16.bytes.low;
  69   1              DAC1H=myint16.bytes.hi;//在直接更新模式下,此时开始更新DAC1输出
  70   1      }       
  71          void config (void) {
  72   1          WDTCN = 0x07;       // Watchdog Timer Control Register
  73   1          WDTCN = 0xDE;   // Disable WDT    
  74   1          WDTCN = 0xAD;
  75   1          SFRPAGE = 0x0F;
  76   1          XBR0 = 0x00;        // XBAR0: Initial Reset Value
  77   1          XBR1 = 0x00;        // XBAR1: Initial Reset Value
  78   1          XBR2 = 0x40;        // XBAR2: Initial Reset Value
  79   1          XBR3 = 0x00;    // XBAR3: Initial Reset Value
  80   1          SFRPAGE = 0x0F;
  81   1          P0MDOUT = 0x00; // Output configuration for P0 
  82   1          P1MDOUT = 0x00; // Output configuration for P1 
  83   1          P2MDOUT = 0x00; // Output configuration for P2 
  84   1          P3MDOUT = 0x00; // Output configuration for P3 
  85   1          P4MDOUT = 0xff; // Output configuration for P4
  86   1          P5MDOUT = 0x07; // Output configuration for P5
  87   1          P6MDOUT = 0x00; // Output configuration for P6
  88   1          P7MDOUT = 0x00; // Output configuration for P7
  89   1          P1MDIN = 0xFF;  // Input configuration for P1
  90   1          P2MDIN = 0xFF;  // Input configuration for P2
  91   1          P3MDIN = 0xFF;  // Input configuration for P3
  92   1          SFRPAGE = 0x0F;
  93   1          CLKSEL = 0x00;  // Oscillator Clock Selector
  94   1          OSCXCN = 0x00;      // EXTERNAL Oscillator Control Register 
  95   1          OSCICN = 0x84;      // Internal Oscillator Control Register
  96   1          //采用内部晶振,为24.5MHZ8分频
  97   1      }   //End of config
  98          void main(){
  99   1              uchar i;
 100   1              config();
 101   1              dac0_cfg(0x80);//dac0使能,且为立即更新方式
 102   1              dac1_cfg(0x98);//dac1使能,且为t2溢出更新方式
 103   1              i=0;
 104   1              t2_ini();
 105   1              t2_baud(500);//每隔500 T2时钟更新一次DAC1输出,此时T2尚未启动
 106   1              EA=1;
 107   1              dac0_updata(0x0800);
 108   1              
 109   1              /*
 110   1              DAC0输出为0.5VREFD,若VREFD与ADC0参考电压相同,则可作为HVREF参考电压输入,使得HVDA差动检测负压
 111   1              */
 112   1              
 113   1              SFRPAGE=0x00;
 114   1              TR2=1;//启动定时器T2
 115   1              while(1);
 116   1      }
 117          void T2_ISR() interrupt 5{//T2定时中断,更新DAC1输出,DAC1为锯齿波输出
C51 COMPILER V7.01  DAC                                                                    05/04/2004 13:35:14 PAGE 3   

 118   1              TF2=0;
 119   1              SFRPAGE=0x01;
 120   1              DAC1VAL++;//因为是T2溢出更新DAC1输出,所以可以sfr16操作,因为此时并不立即更新
 121   1              if(DAC1VAL>=0x1000)
 122   1                      DAC1VAL=0;
 123   1      }
 124          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    218    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       1
   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 + -