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

📄 ad转换.lst

📁 基于8位并行AD和12位串行AD的数字直流电压表
💻 LST
字号:
C51 COMPILER V8.08   AD转换                                                                06/07/2008 16:51:07 PAGE 1   


C51 COMPILER V8.08, 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          #include "reg51.h"
   2          #include "intrins.h"
   3          #include "absacc.h"
   4          #define ADC_ch XBYTE[0x7ff8]
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          
   8          sbit ADC_busy= P3^2;
   9          idata unsigned char Rec_data=0xde;
  10          code unsigned char display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  11          unsigned char count[4]={0,0,0,0};
  12          char  str1[]="  Voltage meter";
  13          uchar  str2[16]="Vol:       D:";
  14          sbit RS=P3^0;
  15          sbit RW=P3^1;
  16          sbit EN=P3^3;
  17          
  18          void delayl();//LCD驱动函数
  19          void delays();  
  20          void writecota(uchar c);
  21          void shotchar(uchar pos,uchar c);
  22          void showstring(uchar line,char *ptr);
  23          void initlcd();
  24          
  25          /*void REC(void)interrupt 0
  26          {
  27                          Rec_data= ADC_ch;        //存放结果
  28          }  */
  29          void START(void)
  30          {
  31   1                      ADC_ch = 0;                  /*启动A/D转换*/
  32   1                      _nop_();                             /*插入空操作等待EOC信号变低*/
  33   1                      _nop_();
  34   1               _nop_();
  35   1                       _nop_();
  36   1               _nop_();
  37   1                       _nop_();
  38   1               _nop_();
  39   1                       _nop_();
  40   1               _nop_();
  41   1               while(ADC_busy ==1); /*查询转换状态*/
  42   1               Rec_data= ADC_ch;
  43   1      }
  44          void Process(void)
  45          {
  46   1              float temp;
  47   1              unsigned int Data_temp;
  48   1              temp=(Rec_data*5.0/255.0);
  49   1              temp*=1000;
  50   1              Data_temp=(int)temp;
  51   1              count[0]=Data_temp/1000;
  52   1              count[1]=Data_temp%1000/100;
  53   1              count[2]=Data_temp%1000%100/10;
  54   1              count[3]=Data_temp%10;
  55   1      
C51 COMPILER V8.08   AD转换                                                                06/07/2008 16:51:07 PAGE 2   

  56   1              str2[4]=count[0]|0x30;
  57   1              str2[5]='.';
  58   1              str2[6]=count[1]|0x30;
  59   1              str2[7]=count[2]|0x30;
  60   1              str2[8]=count[3]|0x30;
  61   1              str2[9]='V';
  62   1              str2[15]='H';
  63   1              if((Rec_data/16)<=9&&(Rec_data/16)>=0)str2[13]=(Rec_data/16)|0x30;
  64   1              else str2[13]=(Rec_data/16)+0x37;
  65   1              if((Rec_data%16)<=9&&(Rec_data%16)>=0)str2[14]=(Rec_data%16)|0x30;
  66   1              else str2[14]=(Rec_data%16)+0x37;
  67   1      }
  68          void delay(uchar x)
  69          {
  70   1              while(x--)
  71   1              {
  72   2                 delays();
  73   2              }
  74   1      }
  75          void delays()
  76          {
  77   1              uchar i;
  78   1              for(i=0;i<250;i++)
  79   1              {;}
  80   1      }
  81          void writecom(uchar c)
  82          { 
  83   1        delayl();
  84   1        EN=0;
  85   1        RS=0;
  86   1        RW=0;
  87   1        _nop_();
  88   1        _nop_();
  89   1        P1=c;
  90   1        EN=1;
  91   1        _nop_();
  92   1        EN=0;
  93   1      }
  94          //*************************
  95          void writedata(uchar c)
  96          { 
  97   1        delayl();
  98   1        EN=0;
  99   1        RS=1;
 100   1        RW=0;
 101   1        _nop_();
 102   1        _nop_();
 103   1        P1=c;
 104   1        EN=1;
 105   1        _nop_();
 106   1        EN=0;
 107   1        RS=1;
 108   1      }
 109          //*****************
 110          void showchar(uchar pos,uchar c)
 111          { uchar p;
 112   1        if(pos>=0x10)
 113   1           p=pos+0xb0;
 114   1        else
 115   1           p=pos+0x80;
 116   1        writecom(p);
 117   1        writedata(c);
C51 COMPILER V8.08   AD转换                                                                06/07/2008 16:51:07 PAGE 3   

 118   1       }
 119          //****************************
 120          void showstring(uchar line,char *ptr)
 121          { uchar l,i;
 122   1        l=line<<4;
 123   1        for(i=0;i<16;i++)
 124   1            {showchar(l++,*(ptr+i));}
 125   1      }
 126          //***************************
 127          void initlcd()
 128          { 
 129   1        delayl();
 130   1        writecom(0x38);
 131   1        writecom(0x38);
 132   1        writecom(0x06);
 133   1        writecom(0x0c);
 134   1        writecom(0x01);
 135   1        writecom(0x80);
 136   1      }
 137          void delayl()
 138          { uchar j;
 139   1        for(j=0;j<100;j++)
 140   1        {;}
 141   1      }
 142          //**************************
 143          void main(void)
 144          {       uchar i;
 145   1              i='A';
 146   1              EX0=1;
 147   1              IT0=1;
 148   1              EA=1;
 149   1              initlcd();
 150   1              delays();
 151   1              showstring(0,str1);
 152   1              showstring(1,str2);
 153   1              while(1)
 154   1              {
 155   2                      START();
 156   2                      Process();
 157   2                      showstring(1,str2);
 158   2                      delay(3);
 159   2              }
 160   1        }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    503    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36      15
   IDATA SIZE       =      1    ----
   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 + -