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

📄 ads8505.lst

📁 ADS8505的驱动程序,利用C8051F020单片机控制,采用C语言编写
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   ADS8505                                                               12/12/2005 22:20:37 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ADS8505
OBJECT MODULE PLACED IN ADS8505.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADS8505.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <c8051f020.h>
   2          #include <absacc.h>
   3          #include <intrins.h>
   4          #include "Def.h"
   5          
   6          #define Read_AD P3
   7          
   8          #define Test_Cs
   9          //#define Test_Count_8
  10          //#define Test_Count_16
  11          //#define Test_Count_32
  12          //#define Test_Count_64
  13          
  14          
  15          
  16          volatile U8 xdata AD8505_Data1[100];
  17          volatile U8 xdata AD8505_Data[3200];
  18          volatile U8 AD_High=0,AD_Low=0;
  19          #define BAUDRATE     115200         
  20          #define SYSCLK       22118400         
  21          sbit BUSY_IO    = P2^1;  //忙状态判断端口,输入
  22          sbit CS_IO              = P2^2;  //片选端口,输出
  23          sbit Read_IO    = P2^3;  //数据读状态端口,输出
  24          sbit BYTE_HL    = P2^4;  //转换数据的高低输出端口选择,输出 
  25          
  26          
  27          void SYSCLK_Init (void)
  28          {
  29   1         U16 i;                  
  30   1         CKCON = 0x00;
  31   1         OSCXCN = 0x67;                                      
  32   1         for (i=0; i < 256; i++) ;          
  33   1         while (!(OSCXCN & 0x80));         
  34   1         OSCICN = 0x88;                    
  35   1         TCON |=0x01;                                 
  36   1      }
  37          void PORT_Init (void)
  38          {
  39   1              XBR0    = 0x05;                     
  40   1          XBR1    = 0x24;     
  41   1          XBR2    = 0x40; 
  42   1              P0MDOUT = 0x1D;
  43   1              P1MDOUT = 0x0E;
  44   1              P1MDIN  = 0xFF; 
  45   1              P2MDOUT = 0x1C;
  46   1              EMI0CF  = 0x20;
  47   1      }
  48          void Delay(U8 Count)
  49          {
  50   1              U8 i;
  51   1              for(i=Count;i>0;i--)
  52   1              {
  53   2                      _nop_();
  54   2                      _nop_();
  55   2              //      _nop_();
C51 COMPILER V8.02   ADS8505                                                               12/12/2005 22:20:37 PAGE 2   

  56   2              //      _nop_();
  57   2              }
  58   1      }
  59          void Read_AD_Data(void)
  60          {
  61   1                      BYTE_HL = 0; /*准备读数据*/
  62   1                      Read_AD = 0xFF;
  63   1                      BUSY_IO = 1;
  64   1      
  65   1                      CS_IO   = 1; /*R/C脚为底,CS为高*/
  66   1                      Read_IO = 0;
  67   1                      __nop_();
  68   1                      __nop_();               
  69   1                      __nop_();
  70   1                      __nop_();
  71   1              //      Read_IO = 1;//          __nop_();       
  72   1                      CS_IO   = 0; /*R/C脚为底,CS出现负跳沿,AD开始转换*/
  73   1                      __nop_();
  74   1                      Read_IO = 1;
  75   1                      while(BUSY_IO==0);  /*等待AD转化出结果*/                
  76   1                      CS_IO   = 1; /*R/C脚为高,CS为高*/      
  77   1                      __nop_();
  78   1                      __nop_();       
  79   1                      CS_IO   = 0;
  80   1                      __nop_();
  81   1                      __nop_();
  82   1                      //Read_IO = 1;
  83   1                      //BYTE_HL = 0; /*准备读数据*/
  84   1                      AD_Low = Read_AD; /*读低八为数*/
  85   1      
  86   1                      BYTE_HL = 1;
  87   1                      Read_AD = 0xFF;
  88   1      //              Delay(20);
  89   1                      AD_High = Read_AD; /*读高八为数*/
  90   1                      CS_IO   = 1;
  91   1      //              Read_IO = 0;
  92   1      //              Delay(40);
  93   1      }
  94          
  95          void Read_AD_Data1(void)
  96          {
  97   1                      BYTE_HL = 0;    /*准备读数据*/
  98   1                      Read_AD = 0xFF; /*读数据前先输出1*/
  99   1      //              Read_IO = 1;
 100   1                      BUSY_IO = 1;   /*读数据前先输出1*/
 101   1                      Read_IO = 0;   /*下降沿触发AD转换*/
 102   1                      __nop_();          /*1/22.1184M=45.2ns*/
 103   1                      __nop_();
 104   1                      Read_IO = 1;   /*下降沿中部至上升沿中部所需时间至少40ns,最大1750ns*/
 105   1                      while(BUSY_IO==0);  /*等待AD转化出结果*/
 106   1                      AD_Low = Read_AD; /*读低八为数*/
 107   1                      BYTE_HL = 1;      /*准备读数据*/
 108   1                      Read_AD = 0xFF;
 109   1                      AD_High = Read_AD; /*读高八为数*/
 110   1                      //Read_IO = 0;
 111   1                      Delay(5);                  /*保证转换之间间隔4us*/
 112   1      }
 113          
 114          void Init_Data(void)
 115          {
 116   1              U16 i=0;
 117   1              for(i=3200;i>0;i--)
C51 COMPILER V8.02   ADS8505                                                               12/12/2005 22:20:37 PAGE 3   

 118   1              {
 119   2                      AD8505_Data[i]=0;       
 120   2              }
 121   1      }
 122          void UART0_Init (void)
 123          {
 124   1         SCON0   = 0x50;                    
 125   1                                            
 126   1         TMOD    = 0x21;                    
 127   1                                            
 128   1         T2CON &= 0x0cf;                    
 129   1         TH1    = -(SYSCLK/BAUDRATE/16);    
 130   1         TR1    = 1;                        
 131   1         CKCON |= 0x10;                     
 132   1         PCON  |= 0x80;                     
 133   1      }
 134          void main(void)
 135          {
 136   1              U16 i=0;
 137   1              U32     Temp=0; 
 138   1              WDTCN = 0xde;
 139   1              WDTCN = 0xad;   //关看门狗
 140   1              SYSCLK_Init();

⌨️ 快捷键说明

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