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

📄 da.lst

📁 C8051F020单片机的DA,AD例程
💻 LST
字号:
C51 COMPILER V8.12   DA                                                                    04/09/2009 16:11:43 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE DA
OBJECT MODULE PLACED IN DA.OBJ
COMPILER INVOKED BY: d:\KeilC51\C51\BIN\C51.EXE DA.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /***************************************************************
   2          功能:实现DAC模拟信号输出,由T4定时控制DAC0输出DTMF信号
   3          作者:ZDP
   4          时间:2005-11-30
   5          版本:V1.0
   6          ***************************************************************/
   7          
   8          #include <c8051f020.h>              // SFR declarations
   9          //-----------------------------------------------------------------------------
  10          // Global CONSTANTS
  11          //-----------------------------------------------------------------------------
  12          #define SYSCLK 22118400             // SYSCLK frequency in Hz
  13          //-----------------------------------------------------------------------------
  14          // 函数定义
  15          //-----------------------------------------------------------------------------
  16          sbit DAC0=P1^1;
  17          sbit DAC1=P1^2;
  18          sbit DACS=P1^3;
  19          sbit EMC1=P1^7;
  20          sbit EMC2=P1^6;
  21          sbit EMC3=P1^5;
  22          sbit EMC4=P1^4;
  23          unsigned char Work_fre=1;
  24          unsigned char status=1;
  25          void main (void);
  26          void SYSCLK_Init (void);
  27          void PORT_Init (void);
  28          unsigned long count=0; 
  29          unsigned long time_count=0;
  30          
  31          //-----------------------------------------------------------------------------
  32          // 全局变量
  33          //-----------------------------------------------------------------------------
  34          //-----------------------------------------------------------------------------
  35          // 主函数
  36          //-----------------------------------------------------------------------------
  37          void ADC0_Init (void)
  38          {
  39   1         ADC0CN = 0x80;                      // 软件启动转换
  40   1      //   REF0CN = 0x07;                      // 启用内部基准源
  41   1         AMX0SL = 0        ;                // 选择采样输入源
  42   1         ADC0CF = (SYSCLK/2500000) << 3;     // ADC conversion clock = 2.5MHz
  43   1      //   ADC0CF |= 0x01;                     // PGA gain = 2
  44   1      
  45   1      //   EIE2 |= 0x02;                       // 启用 ADC 中断
  46   1      }
  47          void TIM0_Init(void)
  48          {
  49   1              CKCON=0x00;
  50   1              TMOD=0x01;
  51   1              TH0               = 0X00;
  52   1              TL0               = 0X00;
  53   1      }
  54          void main (void) {
  55   1      
C51 COMPILER V8.12   DA                                                                    04/09/2009 16:11:43 PAGE 2   

  56   1         unsigned int i=0;
  57   1         WDTCN = 0xde;                    // 关闭WDT
  58   1         WDTCN = 0xad;
  59   1         
  60   1         SYSCLK_Init ();
  61   1         IE=0X81;                         //开总中断和INT0中断
  62   1         PORT_Init ();
  63   1         ADC0_Init();
  64   1         TIM0_Init();
  65   1         REF0CN = 0x03;                   // 启用内部的电压基准源   
  66   1         DAC0CN = 0x80;                   // 启用 DAC0
  67   1         DAC1CN = 0x80;
  68   1         DAC0L=0X00;
  69   1         DAC0H=0X0f;
  70   1         DAC1L=0X00;
  71   1         DAC1H=0X0f;
  72   1         IT0=1;
  73   1         IE        = 0x97;
  74   1         TR0=1;
  75   1         DACS=1;
  76   1         while (1)
  77   1         {
  78   2                      DAC0=1;
  79   2                      DAC1=0;
  80   2                      for(i=0;i<1000;i++)
  81   2                      {
  82   3                      };
  83   2                      DAC0=0;
  84   2                      DAC1=0;
  85   2                      DAC0=0;
  86   2                      DAC1=1;
  87   2                      for(i=0;i<1000;i++)
  88   2                      {
  89   3                      };
  90   2                      DAC0=0;
  91   2                      DAC1=0;
  92   2       /*             while(AD0BUSY ==0)
  93   2                      {
  94   2                              AD0BUSY=1;
  95   2                              count++;
  96   2                      }         */
  97   2         }
  98   1      
  99   1      }
 100          
 101          //-----------------------------------------------------------------------------
 102          // SYSCLK_Init
 103          //-----------------------------------------------------------------------------
 104          
 105          void SYSCLK_Init (void)
 106          {
 107   1         int i;                           // delay counter
 108   1      
 109   1         OSCXCN = 0x67;                   // start external oscillator with
 110   1                                          // 22.1184MHz crystal
 111   1      
 112   1         for (i=0; i < 256; i++) ;        // Wait for osc. to start up
 113   1         
 114   1         while (!(OSCXCN & 0x80)) ;       // Wait for crystal osc. to settle
 115   1      
 116   1         OSCICN = 0x88;                   // select external oscillator as SYSCLK
 117   1                                          // source and enable missing clock
C51 COMPILER V8.12   DA                                                                    04/09/2009 16:11:43 PAGE 3   

 118   1                                          // detector
 119   1      
 120   1      }
 121          
 122          //-----------------------------------------------------------------------------
 123          // PORT_Init
 124          //-----------------------------------------------------------------------------
 125          void PORT_Init (void)
 126          {
 127   1          XBR0      = 0x04;
 128   1          XBR1      = 0x0E;
 129   1          XBR2      = 0x40;
 130   1      }
 131          
 132          void timer0_ISR(void) interrupt 1          
 133          //运行屏幕自动更新以及按键延时中断
 134          {
 135   1              if(time_count==28)                                  //当屏幕处在运行屏幕状态,则启动更新计数器计数
 136   1              {
 137   2                      time_count=0;
 138   2              }
 139   1              TH0=0X00;
 140   1              TL0=0X00;
 141   1              TF0=0;                                              //中断标志复位    
 142   1              time_count++;   
 143   1                       
 144   1      }
 145          void Int0_ISR(void) interrupt 0
 146          {
 147   1              status=0;
 148   1              if(Work_fre==1&&status==0)
 149   1              {
 150   2                      EMC2=0;
 151   2                      EMC1=1;
 152   2                      EMC3=0;
 153   2                      EMC4=1;
 154   2                      Work_fre=2;
 155   2                      status=1;
 156   2              }       
 157   1              if(Work_fre==2&&status==0)
 158   1              {
 159   2                      EMC4=0;
 160   2                      EMC3=1;
 161   2                      EMC1=0;
 162   2                      EMC2=1;
 163   2                      Work_fre=1;
 164   2                      status=1;
 165   2              }
 166   1              
 167   1      }


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