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

📄 adc0808.lst

📁 基于51单片机adc0808模数转换源码加仿真
💻 LST
字号:
C51 COMPILER V8.05a   ADC0808                                                              08/04/2008 21:44:04 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE ADC0808
OBJECT MODULE PLACED IN adc0808.OBJ
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE adc0808.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <at89x51.h>
   2          char code str[] = "welcome! Designer:SHN \n\r";
   3          unsigned char x[]={'0','1','2','3','4','5','6','7','8','9','.','\n','V'};
   4          unsigned char y=0,z=0,w=0,m=0;
   5          float re1,result=0,q;
   6          
   7          int ner=0;
   8          //unsigned int tem=0;
   9          sbit sda=P1^5;
  10          sbit scl=P1^4;
  11          sbit add_a=P1^0;
  12          sbit add_b=P1^1;
  13          sbit add_c=P1^2;
  14          sbit ale=P1^3;
  15          sbit open=P3^6;
  16          sbit oe=P3^4;
  17          sbit eoc=P3^5;
  18          sbit clock=P3^3;
  19          void delay_50us(unsigned int t)
  20          {
  21   1               unsigned char j;
  22   1               for(;t>0;t--)
  23   1               for(j=19;j>0;j--);
  24   1      }
  25          /*
  26          bit errorbit;
  27          unsigned char dat[3]={0x30,0x20,0x10};
  28          unsigned char receive[3]={0x00,0x00,0x00};
  29          void start(void)
  30          {
  31                   sda=1;                         //SCL
  32                   delay_50us(20);
  33                   scl=1;
  34                   delay_50us(20);
  35                   sda=0;
  36                   delay_50us(20);
  37                   scl=0;
  38                   delay_50us(20);
  39          }
  40          void stop(void)
  41          {
  42                   sda=0;
  43                   delay_50us(20);
  44                   scl=1;
  45                   delay_50us(20);
  46                   sda=1;
  47                   delay_50us(20);
  48          }
  49          void test_report(void)
  50          {
  51                   sda=1;
  52                   delay_50us(20);
  53                   scl=1;
  54                   delay_50us(20);
  55                   errorbit=0;
C51 COMPILER V8.05a   ADC0808                                                              08/04/2008 21:44:04 PAGE 2   

  56                   if (sda==0) errorbit=0;
  57                   scl=0;
  58                   delay_50us(20);
  59          }
  60          void no_report(void)
  61          {
  62                   scl=0;
  63                   delay_50us(20);
  64                   sda=1;
  65                   delay_50us(20);
  66                   scl=1;
  67                   delay_50us(20);
  68                   scl=0;
  69                   delay_50us(20);
  70          }
  71          void write_8bit(unsigned char input)
  72          {
  73                  unsigned char i;
  74                  for (i=0;i<8;i++)
  75                  {
  76                          if ((input&0x80)!=0x00) sda=1;
  77                          else sda=0;
  78                          delay_50us(20);
  79                          scl=1;
  80                          delay_50us(20);
  81                          scl=0;
  82                          delay_50us(20);
  83                          input=input<<1;
  84                   }
  85          }
  86          unsigned char read_8bit(void)
  87          {
  88                   unsigned char i,temp=0x00;
  89                   for (i=0;i<8;i++)
  90                   {
  91                           temp=temp<<1;
  92                           scl=1;
  93                           delay_50us(20);
  94                           if (sda==1) temp=temp|0x01;
  95                           scl=0;
  96                           delay_50us(20);
  97                   }
  98                   return (temp);
  99          }               
 100          void send(unsigned char *pp,unsigned char address)
 101          {
 102                   do
 103                   {
 104                          start();
 105                          write_8bit(0xa0);
 106                          test_report();
 107                          write_8bit(address);
 108                          test_report();
 109                          write_8bit(*pp);
 110                          test_report();
 111                          delay_50us(20);
 112                          address++;
 113                          pp++;
 114                          stop();
 115                   }while(*pp!='\0');
 116          }
 117          unsigned char read(unsigned char address)
C51 COMPILER V8.05a   ADC0808                                                              08/04/2008 21:44:04 PAGE 3   

 118          {
 119                          unsigned temp1=0x00;
 120                          start();
 121                          write_8bit(0xa0);
 122                          test_report();
 123                          write_8bit(address);
 124                          test_report();
 125                          start();
 126                          write_8bit(0xa1);
 127                          test_report();
 128                          temp1=read_8bit();
 129                          no_report();
 130                          delay_50us(20);
 131                          stop();
 132                          return (temp1);
 133          }*/
 134          void timer0_stop(void) interrupt 1 using 1
 135          {
 136   1               clock=~clock;
 137   1      }
 138          void read_ad0808(void)
 139          {
 140   1               
 141   1               ale=1;
 142   1               open=1;
 143   1               ale=0;
 144   1               open=0;
 145   1               
 146   1               while(!eoc);
 147   1      
 148   1      }
 149          void send_str()
 150          {
 151   1              unsigned char i = 0;
 152   1              while(str[i] != '\0')
 153   1              {
 154   2                      SBUF = str[i];
 155   2                      while(!TI);                             
 156   2                      TI = 0;                                 
 157   2                      i++;                                    
 158   2              }       
 159   1      }
 160          void send_char(unsigned char *p)
 161          
 162          {
 163   1                      SBUF = *p;
 164   1                      while(!TI);                                     
 165   1                      TI = 0;                                                                                         
 166   1      }
 167          void main(void)
 168          {
 169   1               TH1 = 0xF3;                            // 波特率9600
 170   1                              TL1 = 0xF3;
 171   1               SCON = 0x50;                   // 设定串行口工作方式  
 172   1                              PCON = 0x00;                    // 波特率不倍增
 173   1      
 174   1               open=0;
 175   1               oe=0; 
 176   1               ale=0;
 177   1               add_a=0;
 178   1               add_b=0;
 179   1               add_c=0;
C51 COMPILER V8.05a   ADC0808                                                              08/04/2008 21:44:04 PAGE 4   

 180   1               TMOD=0x12;
 181   1               TH0=255;
 182   1               TL0=255;
 183   1               ET0=1;
 184   1               EA=1;
 185   1               TR0=1;
 186   1      
 187   1               
 188   1               do
 189   1               {
 190   2                      
 191   2                      read_ad0808();
 192   2                      if (eoc==1)
 193   2                      {
 194   3                              oe=1;
 195   3                              q=P2;
 196   3                              oe=0;
 197   3                              P3_7=0;
 198   3                              P0=q;
 199   3                              ner=150;                        
 200   3                              TR0=0;
 201   3                              TMOD = 0x20;                    // 定时器1工作于8位自动重载模式, 用于产生波特率
 202   3                              
 203   3                              result=q/256*5*100;
 204   3      
 205   3                              y=result/100;
 206   3                              z=(result-y*100)/10;
 207   3                              w=result-y*100-z*10;
 208   3                              TR1 = 1;
 209   3                      
 210   3                              send_char(&x[y]);                       // 回传接收到的数据
 211   3                              send_char(&x[10]);
 212   3                              send_char(&x[z]);
 213   3                              send_char(&x[w]);
 214   3                              send_char(&x[12]);
 215   3                              send_char(&x[11]);
 216   3      
 217   3                              TR1=0;
 218   3                              TR0=1;
 219   3                              delay_50us(200);
 220   3                      }
 221   2                      
 222   2                      /*if (P3_7==0)
 223   2                      {
 224   2                              send(&y,0x00);
 225   2                              while(!P3_7);
 226   2                      } */
 227   2               }while(1);
 228   1      }


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