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

📄 ad.lst

📁 320*240点阵液晶(sed1335)驱动程序,keil c调试通过,io连接方式
💻 LST
字号:
C51 COMPILER V7.50   AD                                                                    11/08/2005 00:06:18 PAGE 1   


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

line level    source

   1          /*------------------------------------------------------------------------------
   2          AD8Input.C:  MSC 1210 A/D Conversion for 8 single ended channels.
   3                       Uses 0-5V on inputs AIN0 to AIN7 and AINCOM = 2.5V.
   4          
   5          Copyright 2003 Keil Software, Inc.
   6          ------------------------------------------------------------------------------*/
   7          
   8          #include <REG1210.H>
   9          #include <stdio.h>
  10          #include "bin.h"
  11          #include "ad.h"
  12          #include "comm.h"
  13          
  14          
  15          #define LSB             298.0232e-9             /* LSB=5.0/2^24 */
  16          #define ALPHA           2664.7                  /* derived for some devices */
  17          #define alf             117.4532
  18          
  19          #define XTAL            18432000      //6000000         XTAL frequency  
  20          
  21          // defines for A/D Converter setup
  22          #define A_CLK      ((XTAL/1000000)-1)       // about 1MHz Analog Clock
  23          #define ANA_CLK    (XTAL/(A_CLK+1))         // precise Analog Clock
  24          #define DECIMATION (ANA_CLK/64/10)          // 10 Hz Decimation
  25          #define CONV_FREQ  (ANA_CLK/64/DECIMATION)  // Conversion Frequency
  26          
  27          // defines for conversion to Volts
  28          #define fV    (0xFFFFFF00UL/5)      // Factor for Volts caluculation
  29          #define fmV   ((fV << 2) / 1000)    // Factor for mVolts
  30          #define fuV   ((fmV << 10) / 1000)  // Factor for uVolts
  31          
  32          // Helper structure to read in ADC values
  33          union  
  34          {
  35            unsigned char  c[4];              // bytes
  36            unsigned long  l;                 // unsigned long
  37          } res;
  38          
  39          
  40          unsigned char ad_chan=0;
  41          
  42          float AD8Input(void)
  43          {
  44   1              unsigned char k, V;
  45   1              unsigned int  mV, uV;
  46   1              // Repeat Conversions Forever
  47   1      
  48   1                              // Read Input Volatage
  49   1                      for (k=0; k<5; k++) // ignore 4 conversions for filter to settle after calibration
  50   1                              {         
  51   2                              while (!(AIE & 0x20));      // Wait for data ready
  52   2                                              res.c[0] = ADRESH ^ 0x80;   // Invert the Most significant bit (only positiv inputs)
  53   2                                      res.c[1] = ADRESM;
  54   2                                      res.c[2] = ADRESL;
  55   2                                      res.c[3] = 0;
C51 COMPILER V7.50   AD                                                                    11/08/2005 00:06:18 PAGE 2   

  56   2                      }
  57   1      
  58   1      //                      printf ("%3bd %7d %3dHz   ", chan, (int) DECIMATION, (int) CONV_FREQ);
  59   1      //              printf ("0x%06lX    ", (res2.l >> 8));
  60   1      
  61   1                              // Convert Result to Volts 
  62   1                      V = res.l / fV;               // Volts part
  63   1                      res.l %= fV;
  64   1                      res.l <<= 2;
  65   1      
  66   1                      mV = res.l / fmV;             // Millivolts part
  67   1                      res.l %= fmV;
  68   1                      res.l <<= 10;
  69   1            
  70   1                      uV = res.l / fuV;             // Microvolts part
  71   1       //                     printf ("%bd.%03d%03d\n", V, mV, uV);
  72   1       //                     printf ("V= %f \n",V + (float)mV/1000 + (float)uV/1000000);
  73   1      
  74   1      //                      ADMUX = (chan<<4) | 8;        // AINP = chan, AINN = AINCOM
  75   1                              return (V + (float)mV/1000 + (float)uV/1000000);
  76   1      }
  77          
  78          
  79          
  80          
  81          
  82          void AD_INIT(void)
  83          {
  84   1              CKCON = 0;                        // 0 MOVX cycle stretch  CKCON        时钟控制
  85   1              PDCON = 0x14;                     // PDCON MSC1210 外围模块控制寄存器
  86   1      
  87   1              // Setup ADC
  88   1      //      ADMUX  = 0x08;                    // (AIN+ = AIN0), (AIN- = AINCOM) Voltage from DAC
  89   1              ACLK   = A_CLK;                   // set ACLK factor for about 1MHz
  90   1              ADCON0 = 0x30;          //B0011_0000;                    // Vref On, Vref Hi, Buff off, BOD off, PGA
  91   1      
  92   1              ADCON2 = DECIMATION & 0xFF;       // LSB of decimation
  93   1              ADCON3 =(DECIMATION>>8) & 0x07;   // MSB of decimation
  94   1              ADCON1 = 0x01;                    // bipolar, auto, self calibration (offset, gain)
  95   1              ADMUX = (ad_chan<<4) | 8;        // AINP = chan, AINN = AINCOM
  96   1      }
  97          
  98          


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