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

📄 tlc0883.lst

📁 TLC0838和tlc5620产生的正弦信号
💻 LST
字号:
C51 COMPILER V8.02   TLC0883                                                               08/21/2007 15:46:03 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TLC0883
OBJECT MODULE PLACED IN tlc0883.OBJ
COMPILER INVOKED BY: D:\SOFTWARE\uv3\C51\BIN\C51.EXE tlc0883.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1                           /////////////////////////////////////////////////////////////////////////////////////////
             -//////
   2          //                                               
   3          
   4          //           TLC0838驱动程序TLC0838_II.c           
   5          //           uchar adc_tlc0838(uchar channel);
   6          //           函数说明:channel为通道的选择:0……CH0   1……CH1  2……CH2  3……CH3 
   7          //                         当error=0时,返回的值为有效值,当error=1时,返回值无效                       
             -        
   8          ///////////////////////////////////////////////////////////////////////////////////////////////
   9          
  10          #include<reg51.h>
  11          #include<intrins.h>
  12          #define uchar unsigned char
  13          #define uint unsigned int
  14          
  15          sbit CS=P2^7;
  16          sbit DI=P2^6;   
  17          sbit CLK=P2^5;     //TLC0838---PIN16
  18          sbit DO=P2^4;                     //TLC0838---PIN17
  19                //TLC0838---PIN14
  20              //TLC0838---PIN18
  21                             //SE接成低电平
  22          sbit sdata=P2^2;
  23          sbit sclk=P2^1;
  24          sbit load=P2^0;
  25          
  26          uint adc_tlc0838(uchar channel)
  27          {
  28   1          uchar t,i;
  29   1          uint Temp1=0,Temp2=0;
  30   1          if (channel==0)     t=0;
  31   1          else if(channel==1) t=1;
  32   1          else if(channel==2) t=4;
  33   1          else if(channel==3) t=5;
  34   1          else if(channel==4) t=2;
  35   1          else if(channel==5) t=3;
  36   1          else if(channel==6) t=6;
  37   1          else if(channel==7) t=7;
  38   1         
  39   1          CS=1;
  40   1         _nop_();_nop_();_nop_();_nop_();
  41   1      
  42   1         
  43   1          CLK=0;
  44   1          CS=0;            //使AD通道打开
  45   1          DI=1;          //Start bit=1
  46   1          CLK = 1;
  47   1          _nop_();
  48   1          _nop_();
  49   1      
  50   1          CLK=0;
  51   1          CS=0;          
  52   1          DI = 0;          
  53   1          CLK = 1;
C51 COMPILER V8.02   TLC0883                                                               08/21/2007 15:46:03 PAGE 2   

  54   1          _nop_();
  55   1          _nop_();
  56   1      
  57   1      
  58   1          for(i=0;i<3;i++)
  59   1          {
  60   2            CLK = 0;
  61   2            _nop_();
  62   2            _nop_();
  63   2            if(t&1)DI=1;
  64   2            else DI=0;
  65   2            t=t>>1;       
  66   2            CLK = 1;
  67   2            _nop_();
  68   2            _nop_();
  69   2          }
  70   1      
  71   1      
  72   1          CLK=0;
  73   1          _nop_();
  74   1          _nop_();
  75   1          CLK=1;
  76   1          _nop_();
  77   1          _nop_();
  78   1      
  79   1      
  80   1           for(i=0;i<=6;i++)
  81   1           {
  82   2               CLK = 0;                  //时钟为低电平
  83   2               if(DO)
  84   2               {                         //如果采集到的位为1
  85   3                 Temp1=Temp1+1;          //给临时存储Temp1加1
  86   3                 Temp1=Temp1<<1;
  87   3               }         //临时存储器左移一位
  88   2               else
  89   2                 Temp1=Temp1<<1;          //如果采集到的数位为0,临时存储器左移一位
  90   2               _nop_();
  91   2               _nop_();
  92   2               _nop_();
  93   2               _nop_();
  94   2               CLK = 1;    
  95   2            }                             //时钟为高电平,完成一个时钟周期数据采集
  96   1             CLK = 0;
  97   1             if(DO)  Temp1=Temp1+1;
  98   1             if(DO)  Temp2=0x80;
  99   1      
 100   1             CLK = 1; 
 101   1                                            //采集数据校验          
 102   1             
 103   1             for(i=0;i<=6;i++)
 104   1               {
 105   2                 CLK=0;
 106   2                 if(DO){
 107   3                   Temp2=Temp2>>1;
 108   3                   Temp2=Temp2+0x80;  }
 109   2                 else
 110   2                   Temp2=Temp2>>1;
 111   2                 CLK = 1; 
 112   2               }
 113   1          CS = 1;
 114   1          
 115   1          return Temp1;
C51 COMPILER V8.02   TLC0883                                                               08/21/2007 15:46:03 PAGE 3   

 116   1          
 117   1          
 118   1            
 119   1      }
 120          
 121          
 122          
 123          dac_tlc5620(uchar send_char)
 124          {
 125   1              uchar i;
 126   1              load=1;
 127   1              sclk=1;sdata=0;sclk=0;
 128   1              sclk=1;sdata=0;sclk=0;
 129   1              sclk=1;sdata=1;sclk=0;
 130   1      
 131   1              for(i=0;i<8;i++)
 132   1              {
 133   2                      sclk=1;
 134   2                      if(send_char&0x80) sdata=1;
 135   2                      else sdata=0;
 136   2                      sclk=0;
 137   2                      send_char=send_char<<1;
 138   2              }
 139   1              load=0;
 140   1              _nop_();
 141   1              load=1;
 142   1      
 143   1      }
 144          //////////////////////////////////////////
 145          delay(int d)
 146          {
 147   1              while(--d);
 148   1      }
 149          
 150          main()
 151          {   uchar  idata s[218];
 152   1        
 153   1          uchar i;
 154   1              
 155   1         while(1)
 156   1      
 157   1         {
 158   2           
 159   2                  
 160   2                              i=adc_tlc0838(0);
 161   2                              dac_tlc5620(i);
 162   2                  
 163   2                
 164   2      
 165   2                      }
 166   1           
 167   1      }
*** WARNING C280 IN LINE 151 OF TLC0883.C: 's': unreferenced local variable
 168          
 169          
 170          
 171          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    290    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V8.02   TLC0883                                                               08/21/2007 15:46:03 PAGE 4   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----     218
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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