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

📄 ad7705 sensor.lst

📁 P89LPC931操作AD7705的程序。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   AD7705_SENSOR                                                         03/13/2007 14:59:24 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AD7705_SENSOR
OBJECT MODULE PLACED IN AD7705 SENSOR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD7705 SENSOR.C OBJECTADVANCED ROM(COMPACT) OPTIMIZE(11,SIZE) BROWSE DEBUG

line level    source

   1          #include <reg931.h>
   2          #include <stdio.h>
   3          #include <flashiap.h>
   4          
   5          #define uchar unsigned char
   6          #define uint  unsigned int
   7          #define CH1 1       /*AD7705输入通道IN1*/ 
   8          #define CH2 2       /*AD7705输入通道IN2*/ 
   9          #define BIPOLAR 0   /*AD7705双极性输入*/ 
  10          #define UNIPOLAR 1  /*AD7705单极性输入*/ 
  11          #define AD_CLK_WIDTH 1 /*AD7705串口时钟脉冲宽度*/ 
  12          sbit AdClk = P2^5;  /*AD7705时钟脉冲*/ 
  13          sbit AdDout = P2^3; /*AD7705数据输出的反相脉冲*/ 
  14          sbit AdDin = P2^2;  /*AD7705数据输入脉冲*/ 
  15          sbit DRDY = P2^7;
  16          sbit REST = P2^6;
  17          sbit ALARM_X = P2^0;
  18          sbit ALARM_Y = P2^1;
  19          uchar code BAUD_Data = 0xfa;  /*存储波特率初值*/ //19200
  20          uchar code ID1 = 0x30,ID0 = 0x31,Update = 1;
  21          uchar code ALARM[8]={0x01,0x00,0xff,0xff,0x01,0x00,0xff,0xff};
  22          uchar code ZERO[4];           //////////////////////
  23          uint idata ZeroPoint_X,ZeroPoint_Y;
  24          uint idata ReceiveData_X[4];   /*存储从AD7705读到的转换结果*/ 
  25          uint idata ReceiveData_Y[4];
  26          uint idata ALARM_X_P,ALARM_Y_P,ALARM_X_N,ALARM_Y_N;
  27          uchar idata RIFlag,SendFlag,ArrangeFlag,InitFlag;
  28          uchar idata BAUD_temp,BAUD_Data_temp,Update_temp = 1,ID0_temp,ID1_temp,ZeroPoint_X_temp,ZeroPoint_Y_temp;
  29          uchar idata CommandData[7];    /*存储从串口接收到的命令数据*/ 
  30          uchar idata i = 6;             /*命令数据字符串的小脚标*/ 
  31          uchar f = 1,ChannelFlag = 2,zerotemp;
  32          float idata LSB = 0.000457764;
  33          //---------------------------------------------------------------------------
  34          //功能:看门狗初始化
  35          //---------------------------------------------------------------------------
  36          void WatchdogInit(void)
  37          {
  38   1        WDL = 0XFF;                           //看门狗复位时间
  39   1        EA =0;
  40   1        WDCON = 0XE6;    //选择看门狗振荡器为看门狗时钟源;//0XE5;选择PCLK为看门狗时钟源
  41   1        WFEED1 = 0XA5;
  42   1        WFEED2 = 0X5A;
  43   1        EA =1;
  44   1      }
  45          ///---------------------------------------------------------------------------
  46          //功能:关看门狗定时器时钟
  47          //---------------------------------------------------------------------------
  48          void WatchdogStop(void)
  49          {
  50   1              EA =0;
  51   1              WDCON =0XE1;
  52   1              WFEED1 =0XA5;
  53   1              WFEED2 =0X5A;
  54   1              EA =1;
  55   1      }
C51 COMPILER V7.50   AD7705_SENSOR                                                         03/13/2007 14:59:24 PAGE 2   

  56          //---------------------------------------------------------------------------
  57          //功能:喂狗程序
  58          //---------------------------------------------------------------------------
  59          void WatchdogFeed(void)
  60          {
  61   1        EA =0;
  62   1        WFEED1 = 0XA5;
  63   1        WFEED2 = 0X5A;
  64   1        EA =1;
  65   1      }
  66          
  67          //---------------------------------------------------------------------------
  68          //功能:初始化单片机接口
  69          //---------------------------------------------------------------------------
  70          /*void UART_Init()
  71          {
  72           P1M1 = 0x00;
  73           P1M2 = 0x00;
  74           SCON = 0x52;
  75           SSTAT = 0x60;
  76           BRGR1 = 0x02;
  77           BRGR0 = 0xf0;
  78           BRGCON = 0x03;
  79          }
  80          */
  81          //---------------------------------------------------------------------------
  82          //功能:串口中断处理
  83          //---------------------------------------------------------------------------
  84          void serial() interrupt 4 using 1
  85          {
  86   1       if(RI)
  87   1           {
  88   2                CommandData[i] = SBUF;
  89   2                if(CommandData[i] == 0x0d)
  90   2                    {
  91   3                         RIFlag = 1;
  92   3                        }
  93   2                i--;
  94   2               }
  95   1       RI = 0;
  96   1      }
  97          //---------------------------------------------------------------------------
  98          //功能:AD7705软件延时d
  99          //---------------------------------------------------------------------------
 100          void Wait7705(unsigned int t) 
 101          {
 102   1          for( ;t>0 ;t-- ); 
 103   1      } 
 104          //---------------------------------------------------------------------------
 105          //功能:向AD7705写入一个字
 106          //---------------------------------------------------------------------------
 107          void WriteByte7705(uchar x) 
 108          {
 109   1          uchar i; 
 110   1          AdClk = 1; 
 111   1          for (i=0; i<8; i++)
 112   1          {
 113   2              AdClk=0; 
 114   2                      Wait7705(AD_CLK_WIDTH);
 115   2              AdDin =(bit) (x & 0x80);
 116   2                  Wait7705(AD_CLK_WIDTH);
 117   2              AdClk=1; 
C51 COMPILER V7.50   AD7705_SENSOR                                                         03/13/2007 14:59:24 PAGE 3   

 118   2                      Wait7705(AD_CLK_WIDTH);
 119   2              x <<=1; 
 120   2          }
 121   1      } 
 122          //---------------------------------------------------------------------------
 123          //功能:从AD7705读一个字
 124          //---------------------------------------------------------------------------
 125          uint ReadWord7705(void) 
 126          {
 127   1          uchar i; 
 128   1          uint x ; 
 129   1          AdClk = 1 ; 
 130   1          for (i = 0,x=0 ; i < 16 ; i++)
 131   1          {
 132   2              AdClk=0; 
 133   2                      Wait7705(AD_CLK_WIDTH);
 134   2              x<<=1; 
 135   2              if (AdDout) /* 光电耦合器反相 */ 
 136   2                  x |= 0x01; 
 137   2              AdClk=1; 
 138   2                      Wait7705(AD_CLK_WIDTH);
 139   2          } 
 140   1          return x;
 141   1      } 

⌨️ 快捷键说明

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