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

📄 adc.lst

📁 C8051F
💻 LST
字号:
C51 COMPILER V7.20   ADC                                                                   10/18/2005 11:11:22 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: c:\KEIL\C51\BIN\C51.exe ADC.c DB OE

line level    source

   1          
   2          //-----------------------------------------------------------------------------
   3          // 版权归新华龙电子公司所有
   4          //-----------------------------------------------------------------------------
   5          //
   6          // 文件名:ADC.c
   7          //
   8          // 编写人:LC 
   9          //
  10          // 编写时间:2005/2/25
  11          //
  12          // 目标器件: C8051F02x
  13          //
  14          // 编译工具: Silicon Laboratories IDE
  15          //
  16          // 程序说明:    此程序模/数转化通道AIN0.0的输入值,测试前将S6的第一拨码开关拨到ON
  17          
  18          //------------------------------------------------------------------------------------
  19          // // 头文件包含
  20          //------------------------------------------------------------------------------------
  21          #include <c8051f020.h>                  
  22          
  23          //------------------------------------------------------------------------------------
  24          // 特殊功能寄存器定义
  25          //------------------------------------------------------------------------------------
  26          sfr16 TMR3RL   = 0x92;     
  27          sfr16 TMR3     = 0x94;              
  28          sfr16 ADC0     = 0xbe;        
  29          //------------------------------------------------------------------------------------
  30          // 常量定义
  31          //------------------------------------------------------------------------------------
  32          #define SYSCLK 2000000         
  33          
  34          bit LCDBit;
  35          unsigned long x;
  36          //-----------------------------------------------------------------------------------         
  37          // 函数定义
  38          //------------------------------------------------------------------------------------
  39          void PORT_Init (void);
  40          void Timer3_Init (int counts);
  41          void ADC_Init(void);
  42          void ADC_ISR (void);
  43          void LCD_Init(void);
  44          //------------------------------------------------------------------------------------
  45          //主程序
  46          //------------------------------------------------------------------------------------
  47          void main (void) {
  48   1              unsigned char data1,i;
  49   1              unsigned char *lcdpoint;                        //指向 lcddata数组的指针
  50   1              unsigned char ADC0Data[10]={0x0a,0x0d,0x0c,0x00,0x68,0x68};
  51   1         WDTCN = 0xde;
  52   1         WDTCN = 0xad;                                                        //禁止看门狗定时器
  53   1              LCDBit=0;
  54   1         PORT_Init();
  55   1         LCD_Init();
C51 COMPILER V7.20   ADC                                                                   10/18/2005 11:11:22 PAGE 2   

  56   1         Timer3_Init (SYSCLK / 12 /5 );  
  57   1         ADC_Init();                                     
  58   1         EA = 1;                                                                      
  59   1      
  60   1           AMX0SL |=0x00;                                     //通道0
  61   1           for(x=0;x<=50000;x++); 
  62   1               
  63   1               //AMX0SL |=0x01;                                       //通道1
  64   1               //for(i=0;i<=50000;i++); 
  65   1               //AMX0SL |=0x02;                                       //通道2
  66   1               //for(i=0;i<=50000;i++); 
  67   1               //AMX0SL |=0x03;                                       //通道3
  68   1               //for(i=0;i<=50000;i++); 
  69   1           //AMX0SL |=0x04;                                   //通道4
  70   1               //for(i=0;i<=50000;i++);  
  71   1               //AMX0SL |=0x05;                                       //通道5
  72   1               //for(i=0;i<=50000;i++); 
  73   1               //AMX0SL |=0x06;                                       //通道6
  74   1               //for(i=0;i<=50000;i++); 
  75   1               //AMX0SL |=0x07;                                       //通道7
  76   1               
  77   1         while (1)
  78   1          {
  79   2                      if(LCDBit==1){
  80   3                              TMR3CN &= 0xfb;                                 //关定时器3                  
  81   3                              LCDBit=0;                                               //清LCD显示位
  82   3                              P7 = 0x02;                                              //返回初始位置
  83   3                              P6 = 0x08;
  84   3                              P6 = 0x09; 
  85   3                              ADC0Data[9]=ADC0&0x0f;                  //将A/D转化值存到显示数组
  86   3                              ADC0Data[8]=(ADC0>>4)&0x0f;
  87   3                              ADC0Data[7]=(ADC0>>8)&0x0f;
  88   3                              ADC0Data[6]=(ADC0>>12)&0x0f;
  89   3                      P6  = 0x0d;                     //准备送数据
  90   3                      for(x=0;x<5000;x++);
  91   3                      lcdpoint = &ADC0Data;
  92   3                      for(i=10;i>0;i--)                       //显示第一行字符
  93   3                      { 
  94   4                              data1=*lcdpoint;
  95   4                                      if(data1>=0x0a) data1 += 0x37;  //将显示数据转化为液晶的显示字符码
  96   4                                      else data1 += 0x30;
  97   4                              P7 = data1; 
  98   4                                      P6 = 0x0c;
  99   4                              P6 = 0x0d;
 100   4                              lcdpoint++;
 101   4                                      for(x=0;x<100;x++);
 102   4                              }
 103   3                         TMR3CN |= 0x04;                                      //使能定时器3                   
 104   3                      }                  
 105   2              }
 106   1      
 107   1      }
 108          
 109          //-----------------------------------------------------------------------------
 110          // //函数名称:   LCD_Init ()
 111          //函数功能:      LCD初始化
 112          //入口参数:      无
 113          //出口参数:      无
 114          //全局变量引用:  无
 115          //调用模块:      无  
 116          //-----------------------------------------------------------------------------
 117          void LCD_Init(void)
C51 COMPILER V7.20   ADC                                                                   10/18/2005 11:11:22 PAGE 3   

 118          {
 119   1         P6 = 0x09;
 120   1         for(x=0;x<50000;x++);
 121   1         //P7 = 0x30;                         /*一行显示*/
 122   1         P7 = 0x38;                           /*两行显示*/
 123   1         P6 = 0x08;
 124   1         P6 = 0x09; 
 125   1         for(x=0;x<1000;x++);
 126   1         P7 = 0x0e;                           //开显示,开光标,字符不闪烁
 127   1         P6 = 0x08;
 128   1         P6 = 0x09;
 129   1         for(x=0;x<1000;x++);         
 130   1         P7= 0x06;                            //AC自动增1,整体显示不移动
 131   1         P6 = 0x08;
 132   1         P6 = 0x09;
 133   1         for(x=0;x<5000;x++);         
 134   1         P7 = 0x01;                           //清除DDRAM,置AC=0
 135   1         P6 = 0x08;
 136   1         P6 = 0x09; 
 137   1         for(x=0;x<5000;x++);
 138   1      
 139   1      }
 140          //------------------------------------------------------------------------------------
 141          //函数名称:      PORT_Init ()
 142          //函数功能:      通用I/O口及交叉开关初始化
 143          //入口参数:      无
 144          //出口参数:      无
 145          //全局变量引用:  无
 146          //调用模块:      无  
 147          //------------------------------------------------------------------------------------
 148          //
 149          void PORT_Init (void)
 150          {
 151   1         XBR2    = 0x40;              //使能交叉开关                   
 152   1         P74OUT |= 0x0ff;             //推挽输出
 153   1      }
 154          
 155          //------------------------------------------------------------------------------------
 156          //函数名称:    Timer3_Init ()
 157          //函数功能:      定时器3初始化
 158          //入口参数:      int counts
 159          //出口参数:      无
 160          //全局变量引用:  无
 161          //调用模块:      无 
 162          //------------------------------------------------------------------------------------
 163          void Timer3_Init (int counts)
 164          {
 165   1         TMR3CN = 0x00;                      
 166   1                                          
 167   1         TMR3RL  = -counts;           //初始化重载值           
 168   1         TMR3    = 0xffff;            //设置自动重载值                 
 169   1         TMR3CN |= 0x04;                   
 170   1      }
 171          //--------------------------------------------------------------------------
 172          //函数名称:    ADC_Init ()
 173          //函数功能:      ADC0初始化
 174          //入口参数:      int counts
 175          //出口参数:      无
 176          //全局变量引用:  无
 177          //调用模块:      无 
 178          //--------------------------------------------------------------------------
 179          void ADC_Init(void)
C51 COMPILER V7.20   ADC                                                                   10/18/2005 11:11:22 PAGE 4   

 180          {
 181   1       ADC0CN  |=0x84;        /*ADC0使能,定时器3溢出使能模/数转换*/
 182   1       REF0CN |=0x03;         /*内部电压基准提供从VREF脚输出,ADC0电压基准取自VREF0*/
 183   1       ADC0CF |=0x50;         /*转换周期和增益为1*/
 184   1       AMX0CF |=0x00;         /*单端输入*/
 185   1       EIE2   |=0x02;         /*ADC0转换结束中断*/
 186   1      }
 187          //------------------------------------------------------------------------------------
 188          //函数名称:       ADC_ISR ()
 189          //函数功能:      定时器3中断服务程序
 190          //入口参数:      无
 191          //出口参数:      无
 192          //全局变量引用:  无
 193          //调用模块:      无 
 194          //------------------------------------------------------------------------------------
 195          void ADC_ISR (void) interrupt 15
 196          {
 197   1        AD0INT=0;                     //清A/D中断标志
 198   1        LCDBit=1;                     //置LCD显示位
 199   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    677    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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