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

📄 ad977.lst

📁 51单片机及其C语言程序开发实例第8章节
💻 LST
字号:
C51 COMPILER V7.09   AD977                                                                 08/24/2007 09:31:39 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE AD977
OBJECT MODULE PLACED IN AD977.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE AD977.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include "AD977.h"
   3          
   4          //短延时函数:nNop()
   5          void nNop(uchar x)
   6          {
   7   1              for(;x>0;x--);
   8   1              }
   9          
  10          //长延时函数:LongDelay()
  11          void LongDelay(uint i)
  12          {
  13   1              uint j;
  14   1              for(;i>0;i--)
  15   1                      { for(j=4000;j>0;j--);}
  16   1              }
  17                  
  18          //从SPI总线读2字节(16bits)数据函数:
  19          //     SPI_Read_Two()   
  20          int SPI_Read_Two(void)
  21          {
  22   1              int temp;
  23   1              uchar i;
  24   1              SetSCLK(0);
  25   1              for(i=0;i<16;i++)
  26   1              {
  27   2                      SetSCLK(1);
  28   2                      nNop(2);
  29   2                      temp <<= 1;
  30   2                      if(PinDATA) temp++;
  31   2                      SetSCLK(0);
  32   2                      nNop(2);
  33   2                      }
  34   1              return(temp);
  35   1              }
  36          
  37          //外部非连续数据时钟,读取上一次转换数据且无同步信号模式函数:
  38          //     EXCLKSample_Pre()
  39          int EXCLKSample_Pre(void)
  40          {
  41   1              int temp;
  42   1              SetEXINT(1);
  43   1              SetRC(1);
  44   1              SetRC(0);
  45   1              while(PinBUSY);
  46   1              nNop(2);
  47   1              SetRC(1);
  48   1              temp = SPI_Read_Two();
  49   1              return(temp);
  50   1              }
  51          
  52          //外部非连续数据时钟,读取当前次转换数据且无同步信号模式函数:
  53          //     EXCLKSample_Now()
  54          int EXCLKSample_Now(void)
  55          {
C51 COMPILER V7.09   AD977                                                                 08/24/2007 09:31:39 PAGE 2   

  56   1              int temp;
  57   1              SetEXINT(1);
  58   1              SetRC(1);
  59   1              SetRC(0);
  60   1              while(PinBUSY);
  61   1              nNop(1);
  62   1              SetRC(1);
  63   1              while(!PinBUSY);
  64   1              temp = SPI_Read_Two();
  65   1              return(temp);
  66   1              }
  67          
  68          //外部非连续数据时钟,读取上一次转换数据且有同步信号模式函数:
  69          //     EXCLKSample_Pre_Syn()
  70          int EXCLKSample_Pre_Syn(void)
  71          {
  72   1              int temp;
  73   1              SetEXINT(1);
  74   1              SetSCLK(0);
  75   1              SetRC(1);
  76   1              SetRC(0);
  77   1              SetSCLK(1);
  78   1              while(PinBUSY);
  79   1              SetSCLK(0);
  80   1              nNop(1);
  81   1              SetRC(1);
  82   1              SetSCLK(1);
  83   1              while(!PinSYN);
  84   1              SetSCLK(0);
  85   1              temp = SPI_Read_Two();
  86   1              return(temp);
  87   1              }
  88          
  89          //外部非连续数据时钟,读取当前次转换数据且有同步信号模式函数:
  90          //     EXCLKSample_Now_Syn()
  91          int EXCLKSample_Now_Syn(void)
  92          {
  93   1              int temp;
  94   1              SetEXINT(1);
  95   1              SetSCLK(0);
  96   1              SetRC(1);
  97   1              SetRC(0);
  98   1              SetSCLK(1);
  99   1              while(PinBUSY);
 100   1              SetSCLK(0);
 101   1              nNop(1);
 102   1              SetRC(1);
 103   1              while(!PinBUSY);
 104   1              SetSCLK(1);
 105   1              while(!PinSYN);
 106   1              SetSCLK(0);
 107   1              temp = SPI_Read_Two();
 108   1              return(temp);
 109   1              }
 110          
 111          //指定方式采样以及读取数据函数:nSample()
 112          int nSample(uchar smode, uchar sbtc)
 113          {
 114   1              int temp;
 115   1              SetPWRD(PWOP);
 116   1              switch(sbtc)
 117   1              {
C51 COMPILER V7.09   AD977                                                                 08/24/2007 09:31:39 PAGE 3   

 118   2                      case  BTC  :  SetSBTC(BTC);  break;
 119   2                      case  SBIN :  SetSBTC(SBIN); break;
 120   2                      default    :  break;
 121   2                      }
 122   1              switch(smode)
 123   1              {
 124   2                      case  EXDCLK_RDPRE      :  temp = EXCLKSample_Pre();            break;
 125   2                      case  EXDCLK_RDNOW      :  temp = EXCLKSample_Now();            break;
 126   2                      case  EXDCLK_RDPRE_SYN  :  temp = EXCLKSample_Pre_Syn();        break;
 127   2                      case  EXDCLK_RDNOW_SYN  :  temp = EXCLKSample_Now_Syn();        break;
 128   2                      default                         :  break;
 129   2                      }
 130   1              return(temp);
 131   1              }


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