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

📄 ad.lst

📁 数字电压表 利用单片机AT89S51与ADC0809设计一个数字电压表
💻 LST
字号:
C51 COMPILER V8.02   AD                                                                    06/28/2007 16:35:03 PAGE 1   


C51 COMPILER V8.02, 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<reg52.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int 
   4          #define ulong unsigned long
   5          #define _rrca_()          CY   = ACC & 0x01           //产生RRC A指令
   6          #define _rlca_()          CY   = ACC & 0x80           //产生RLC A指令
   7          sbit bADcs=P1^4;
   8          sbit bADcl=P1^5;
   9          sbit bADda=P1^6;
  10          sbit flag=P1^7;
  11          sbit str=P2^7;
  12          sbit d=P2^6;
  13          sbit clk=P2^5;
  14          bit choose=0;
  15          unsigned char data1;
  16          unsigned char count;
  17          unsigned char cycle;
  18          uint ge,xiao1,xiao2;
  19          unsigned long data2;
  20          //无小数点
  21          const uchar table1[17]={0x81,0xed,0x43,0x49,0x2d,0x19,0x11,0xcd,0x01,0x09,0x71,0x31,0x93,0x61,0x13,0x17,0x
             -ff};
  22          
  23          
  24          //有小数点
  25          const uchar table2[17]={0x80,0xec,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08,0x70,0x30,0x92,0x60,0x12,0x16,0x
             -ff};
  26          uchar buffer[4]={0x00,0x00,0x00,0x00};
  27          
  28          
  29          void Delayus(uchar i)
  30           {
  31   1        while(--i);
  32   1       }
  33          
  34          void display(void)
  35          {
  36   1      
  37   1      uchar bit_count=0;
  38   1      uchar table_counter=0;
  39   1      uchar byte_counter=0;
  40   1      uchar temp_i=0;
  41   1      buffer[0]=xiao2;
  42   1      buffer[1]=xiao1;
  43   1      buffer[2]=ge;
  44   1      buffer[3]=0x00;
  45   1      
  46   1      
  47   1      //led_str_off;//先清零
  48   1      str=0;
  49   1      //led_clk_off;
  50   1      clk=0;
  51   1      for(byte_counter=0;byte_counter<4;byte_counter++)
  52   1              {
  53   2              bit_count=8;
C51 COMPILER V8.02   AD                                                                    06/28/2007 16:35:03 PAGE 2   

  54   2         if(byte_counter==2)temp_i=table2[buffer[byte_counter]];
  55   2          else
  56   2              temp_i=table1[buffer[byte_counter]];
  57   2      //      nop;
  58   2              while(bit_count>0)
  59   2                      {
  60   3                      if((temp_i&0x80)==0)
  61   3                              {
  62   4                              //led_d_off;
  63   4                              d=0;
  64   4                              }
  65   3                      else
  66   3                              {
  67   4                              //led_d_on;
  68   4                              d=1;
  69   4                              }
  70   3                      temp_i=(temp_i<<1);
  71   3                      
  72   3      //              nop;
  73   3                      //led_clk_on;
  74   3                      clk=1;
  75   3      //              nop;
  76   3                      //led_clk_off;
  77   3                      clk=0;
  78   3      //              nop;
  79   3                      
  80   3                      bit_count--;                    
  81   3                      
  82   3                      }
  83   2              
  84   2              }
  85   1      
  86   1              //led_str_on;
  87   1              str=1;
  88   1      }
  89          
  90          /*
  91          void ad()
  92          {
  93                  choose=0;
  94                   count = 0;
  95                   bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
  96                   bADcl = 0;
  97                   bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.
  98                   bADcl = 1; 
  99                   bADcl = 0;//pulse 1 down
 100                   bADda = 1;
 101                   bADcl = 1; bADcl = 0;//pulse 2 down
 102                   if(choose == 0)
 103                           bADda = 0;
 104                  else
 105                           bADda = 1;      
 106                    bADcl = 1; bADcl = 0;//pulse 3 down
 107                    bADcl = 1; bADcl = 0;//pulse 4 down
 108                  //bADcl = 1;
 109          
 110          
 111                for(cycle = 8; cycle > 0; cycle-- )
 112                           {
 113                           bADda = 1;
 114          
 115                          //bADcl = 0;//pulse 
C51 COMPILER V8.02   AD                                                                    06/28/2007 16:35:03 PAGE 3   

 116                          bADcl = 1;
 117                           CY = bADda;
 118                           _rlca_();      //RRC A
 119                           bADcl = 0;//pulse
 120                           }
 121                   data1= ACC;
 122          
 123               
 124                   for(cycle = 8; cycle > 0; cycle-- )
 125                           {
 126                           bADda = 1;
 127                            
 128                            bADcl = 1;
 129                           CY = bADda;
 130                           _rrca_();      //RLC A
 131                           bADcl = 0;//pulse 
 132                                   }
 133          
 134                           //bADcl = 0;//pulse
 135           
 136          } */
 137          void ad(void)
 138          {        uchar i;
 139   1           //data1=0;
 140   1           bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
 141   1               bADcl=0;
 142   1               bADda=1;
 143   1               bADcl=1;
 144   1               bADcl=0;//i down
 145   1               bADda=1;
 146   1               bADcl=1;
 147   1               bADcl=0;       //   2 down
 148   1               bADda=0;
 149   1               bADcl=1;
 150   1               bADcl=0;       //   3 down
 151   1               bADda=1;
 152   1               bADcl=1;
 153   1               bADcl=0;       //   4 down
 154   1      
 155   1               for(i=8;i>0;i--)
 156   1                      {
 157   2                      
 158   2                      data1<<=1;
 159   2                      bADcl=0;
 160   2                      bADcl=1;
 161   2                      if(bADda==1) data1|=0x01;
 162   2                              bADda=1;
 163   2                      }
 164   1              /* for(i=8;i>0;i--)
 165   1                      {
 166   1                      bADcl=0;
 167   1                      bADcl=1;
 168   1                      }       */
 169   1                       bADcs=1;
 170   1               
 171   1      }
 172          void cal()
 173          {
 174   1      data2=((ulong)data1*493)/256;
 175   1      ge=data2/100;
 176   1      xiao1=(data2%100)/10;
 177   1      xiao2=data2%10;
C51 COMPILER V8.02   AD                                                                    06/28/2007 16:35:03 PAGE 4   

 178   1      }
 179          
 180          main()
 181          {
 182   1      flag=1;         
 183   1        while(1){
 184   2                    ad();
 185   2                cal();
 186   2                display();
 187   2        }
 188   1      }
 189          


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