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

📄 wadc0.lst

📁 c8051f020 内部12位的ADC0 效果比较啊好,调通了 如果不行 我还有其他人写的一个程序.我传的代码都有比较爱完整的注释啊
💻 LST
字号:
C51 COMPILER V7.05   WADC0                                                                 02/14/2006 08:37:38 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE WADC0
OBJECT MODULE PLACED IN WADC0.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe WADC0.c DB OE

stmt level    source

   1          //参考程序B.WADC0.c程序模/数转化通道AIN0.0的输入值,数码管显示两位16进制数.
   2          //测试前将S6的第一拨码开关拨到ON
   3          #include <c8051f020.h>                  
   4          sfr16 TMR3RL  = 0x92;     
   5          sfr16 TMR3     = 0x94;              
   6          sfr16 ADC0     = 0xbe;        
   7          #define SYSCLK 2000000         
   8          bit LCDBit;
   9          unsigned long x;
  10          void PORT_Init (void);
  11          void Timer3_Init (int counts);
  12          void ADC_Init(void);
  13          void ADC_ISR (void);
  14          void LCD_Init(void);
  15          void main (void) {
  16   1              unsigned char data1,i;
  17   1              unsigned char *lcdpoint;        //指向 lcddata数组的指针
  18   1              unsigned char ADC0Data[10]={0x0a,0x0d,0x0c,0x00,0x68,0x68};
  19   1         WDTCN = 0xde;
  20   1         WDTCN = 0xad;        //禁止看门狗定时器
  21   1              LCDBit=0;
  22   1        // PORT_Init();
  23   1         LCD_Init();
  24   1         Timer3_Init (SYSCLK / 12 /5 );  
  25   1         ADC_Init();                                     
  26   1         EA = 1;                                                                      
  27   1           AMX0SL =0x00;              //选择通道0
  28   1           for(x=0;x<=50000;x++); 
  29   1               /*
  30   1               AMX0SL =0x01;                                  //选择通道1
  31   1               for(i=0;i<=50000;i++); 
  32   1               AMX0SL =0x02;                                  //选择通道2
  33   1               for(i=0;i<=50000;i++); 
  34   1               AMX0SL =0x03;                                  //选择通道3
  35   1               */
  36   1         while (1)
  37   1          {
  38   2                      if(LCDBit==1){
  39   3                              TMR3CN &= 0xfb;                                 //关定时器3                  
  40   3                              LCDBit=0;                                               //清LCD显示位
  41   3                              P7 = 0x02;                                              //LCD指针返回初始位置
  42   3                              P6 = 0x0;
  43   3                              P6 = 0x1; 
  44   3                              ADC0Data[9]=ADC0&0x0f;                  //将A/D转化值存到显示数组
  45   3                              ADC0Data[8]=(ADC0>>4)&0x0f;
  46   3                              ADC0Data[7]=(ADC0>>8)&0x0f;
  47   3                              ADC0Data[6]=(ADC0>>12)&0x0f;
  48   3                      P6  = 0x05;                     //准备送数据
  49   3                      for(x=0;x<5000;x++);
  50   3                      lcdpoint = &ADC0Data;
  51   3                      for(i=10;i>0;i--)                       //显示第一行字符
  52   3                      { 
  53   4                              data1=*lcdpoint;
  54   4                      if(data1>=0x0a) data1 += 0x37;  //将显示数据转化为液晶的显示字符码
  55   4                                      else data1 += 0x30;
C51 COMPILER V7.05   WADC0                                                                 02/14/2006 08:37:38 PAGE 2   

  56   4                              P7 = data1; 
  57   4                                      P6 = 0x04;
  58   4                              P6 = 0x05;
  59   4                              lcdpoint++;
  60   4                                      for(x=0;x<100;x++);
  61   4                              }
  62   3                         TMR3CN |= 0x04;                                      //使能定时器3                   
  63   3                      }                  
  64   2              }
  65   1      }
  66          void LCD_Init(void)
  67          {
  68   1         P6 = 0x01;
  69   1         for(x=0;x<50000;x++);
  70   1         //P7 = 0x30;                         /*一行显示*/
  71   1         P7 = 0x38;                           /*两行显示*/
  72   1         P6 = 0x0;
  73   1         P6 = 0x1; 
  74   1         for(x=0;x<1000;x++);
  75   1         P7 = 0x0e;                           //开显示,开光标,字符不闪烁
  76   1         P6 = 0x0;
  77   1         P6 = 0x1;
  78   1         for(x=0;x<1000;x++);         
  79   1         P7= 0x016;                           //AC自动增1,整体显示不移动
  80   1         P6 = 0x1;
  81   1         P6 = 0x01;
  82   1         for(x=0;x<5000;x++);         
  83   1         P7 = 0x01;                           //清除DDRAM,置AC=0
  84   1         P6 = 0x00;
  85   1         P6 = 0x01; 
  86   1         for(x=0;x<5000;x++);
  87   1      }
  88          void PORT_Init (void)
  89          {
  90   1         XBR2    = 0x40;              //使能交叉开关                   
  91   1         P74OUT |= 0x0ff;             //推挽输出
  92   1      }
  93          void Timer3_Init (int counts)
  94          {
  95   1         TMR3CN = 0x00;           //定时器T3使用系统时钟的12分频.禁止T3           
  96   1         TMR3RLL  = -counts;                  //初始化重载值           
  97   1         TMR3L    = 0xffff;           //设置自动重载值                 
  98   1         TMR3CN |= 0x04;          //允许定时器T3         
  99   1      }
 100          void ADC_Init(void)
 101          {
 102   1       ADC0CN  |=0x84;        /*ADC0使能,定时器T3溢出使能模/数转换*/
 103   1       REF0CN |=0x03;         /*内部电压基准提供从VREF脚输出,ADC0电压基准取自VREF0*/
 104   1       ADC0CF |=0x50;         /*转换周期为一个时间系统,增益为1*/
 105   1       AMX0CF |=0x00;         /*单端输入*/
 106   1       EIE2   |=0x02;         /*ADC0转换结束中断*/
 107   1      }
 108          void ADC_ISR (void) interrupt 15
 109          {
 110   1        AD0INT=0;                     //清A/D中断标志
 111   1        LCDBit=1;                     //置LCD显示位
 112   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    666    ----
   CONSTANT SIZE    =     10    ----
C51 COMPILER V7.05   WADC0                                                                 02/14/2006 08:37:38 PAGE 3   

   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 + -