adc0832.lst

来自「STC51系列的源码」· LST 代码 · 共 120 行

LST
120 行
字号
C51 COMPILER V8.02   ADC0832                                                               09/25/2008 20:18:48 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN .\ADC0832.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\ADC0832\ADC0832.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\ADC0832.lst) O
                    -BJECT(.\ADC0832.obj)

line level    source

   1          /********************************************************************************/
   2          /* filename : ADC0832.c                                                         */
   3          /* created  : xillinx                                                           */
   4          /* descript : 处理ADC0832相关的函数                                             */
   5          /********************************************************************************/
   6          #include "../CPU/CPU.h"
   7          #include "../ADC0832/ADC0832.h"
   8          
   9          
  10          /********************************************************************************/
  11          /* function : ADC_set_clk()                                                     */
  12          /* recension: xillinx                                                           */
  13          /* descript : 设置或者清除ADC的CLK引脚                                          */
  14          /********************************************************************************/
  15          void ADC_set_clk(unsigned char clk)
  16          {   if(clk)
  17   1          {  c51_U19_latch|=0x08;
  18   2          }
  19   1          else
  20   1          {  c51_U19_latch&=0xF7;
  21   2          }
  22   1          c51_hc138_cs_io2[0x0]=c51_U19_latch;
  23   1      }
  24          
  25          /********************************************************************************/
  26          /* function : ADC_set_sel()                                                     */
  27          /* recension: xillinx                                                           */
  28          /* descript : 设置或者清除ADC的CS引脚                                           */
  29          /********************************************************************************/
  30          void ADC_set_sel(unsigned char sel)
  31          {   if(sel)
  32   1          {  c51_U19_latch|=0x04;
  33   2          }
  34   1          else
  35   1          {  c51_U19_latch&=0xFB;
  36   2          }
  37   1          c51_hc138_cs_io2[0x0]=c51_U19_latch;
  38   1      }
  39          
  40          /********************************************************************************/
  41          /* function : ADC_set_dat()                                                     */
  42          /* recension: xillinx                                                           */
  43          /* descript : 设置或者清除ADC的DATA引脚                                         */
  44          /********************************************************************************/
  45          void ADC_set_dat(unsigned char dat)
  46          {   ADC_DA=dat;
  47   1      }
  48          
  49          /********************************************************************************/
  50          /* function : ADC_set_dat()                                                     */
  51          /* recension: xillinx                                                           */
  52          /* descript : 设置或者清除ADC的DATA引脚                                         */
  53          /********************************************************************************/
  54          unsigned char ADC_get_dat(void)
C51 COMPILER V8.02   ADC0832                                                               09/25/2008 20:18:48 PAGE 2   

  55          {   return ADC_DA;
  56   1      }
  57          
  58          /********************************************************************************/
  59          /* function : ADC_delay()                                                       */
  60          /* recension: xillinx                                                           */
  61          /* descript : 简单延时处理                                                      */
  62          /********************************************************************************/
  63          void ADC_delay(unsigned char time)
  64          {   unsigned char i; 
  65   1          for(i=0;i<time;i++)
  66   1          {   ;
  67   2          }
  68   1      }
  69          
  70          /********************************************************************************/
  71          /* function : ADC_read_1_channel()                                              */
  72          /* recension: xillinx                                                           */
  73          /* descript : 读取第一通道的数据                                                */
  74          /********************************************************************************/
  75          unsigned char ADC_read_channel(unsigned char channel)
  76          {   unsigned char mdata=0x0;
  77   1          unsigned char i;
  78   1          ADC_set_sel(0x1);           //* CS=1,CK=0,禁止芯片工作,设置初始工作态;
  79   1          ADC_delay(0x2); 
  80   1          ADC_set_clk(0x0); 
  81   1          ADC_delay(0x2);
  82   1          
  83   1          ADC_set_sel(0x0);           //* 启动工作
  84   1          
  85   1          ADC_set_dat(0x1);           //* 第1个时钟,上升沿采样 START位, 此时DATA=1
  86   1          ADC_delay(0x2); 
  87   1          ADC_set_clk(0x1);           
  88   1          ADC_delay(0x2);
  89   1          ADC_set_clk(0x0);
  90   1          
  91   1          ADC_set_dat(0x1);           //* 第2个时钟,上升沿采样 通道/差分 选择(本设计选择通道,所以为1)
  92   1          ADC_delay(0x2); 
  93   1          ADC_set_clk(0x1);           
  94   1          ADC_delay(0x2);
  95   1          ADC_set_clk(0x0);
  96   1          
  97   1          if( channel==0x0)
  98   1          {   ADC_set_dat(0x0);       //* 第3个时钟,上升沿采样 通道编号 0 通道
  99   2          }
 100   1          else
 101   1          {   ADC_set_dat(0x1);       //* 通道编号 1 通道
 102   2          }
 103   1          ADC_delay(0x2); 
 104   1          ADC_set_clk(0x1);           
 105   1          ADC_delay(0x2);
 106   1          ADC_set_clk(0x0);
 107   1          
 108   1          ADC_set_dat(0x1);           //* 第4个时钟之前,需要把ADC_DA设置成为1,作为输入引脚用了,这个时钟周期是空

⌨️ 快捷键说明

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