adcc.lst

来自「郑州远博公司生产的单片机A型实验板原理图及配套试验源程序」· LST 代码 · 共 170 行

LST
170
字号
C51 COMPILER V7.20   ADCC                                                                  02/20/2005 17:55:37 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE ADCC
OBJECT MODULE PLACED IN adcc.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE adcc.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**************************************************************************
   2          A/D转换模块演示程序
   3          来源: 郑州远博科技   王兴民
   4          0371-6949037  0371-7256036 13949105551
   5          实验本程序,需要把转换模块上的J2短路
   6          阅读本程序,需要参照AD0832的使用说明及时序图进行
   7          ***************************************************************************/
   8          #include <at89x51.h>
   9          #include <Delay.h>
  10          #define CS    P0_0    //ADC0832 的CS端
  11          #define CLK   P0_1    //ADC0832 的CLK端
  12          #define DO    P0_2    //ADC0832 的DO端
  13          #define DI    P0_3    //ADC0832 的DI端
  14          #define SDA    P2_7    //74LS164 SAD
  15          #define SCK    P2_6    //74LS164 SCK
  16          #define BIT5   P2_5    //数码管位1
  17          #define BIT4   P2_4    //数码管位2
  18          #define BIT3   P2_3    //数码管位3
  19          #define BIT2   P2_2    //数码管位4
  20          #define BIT1   P2_1    //数码管位5
  21          #define BIT0   P2_0    //数码管位6
  22          #define uchar unsigned char
  23          #define uint  unsigned int
  24          code uchar szdm[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff}; //共阳数码管的显示字模数据
  25          data uchar displaybuff[6];   //定义显示缓冲区
  26          uchar CH0=0X10;              //通道0转换数据
  27          void display();
  28          uchar adconvert(sign);
  29          
  30          
  31          void main()  {
  32   1      uchar temp;
  33   1      DelayMs(2000);                     //延时使芯片复位完成
  34   1      CS=1;
  35   1      DI=1;
  36   1      DO=1;
  37   1      CLK=0;
  38   1      while(1)  {
  39   2        
  40   2      temp=adconvert(CH0);
  41   2      displaybuff[2]=temp/100;
  42   2      displaybuff[1]=(temp-displaybuff[2]*100)/10;
  43   2      displaybuff[0]=temp-(displaybuff[2]*100+displaybuff[1]*10);
  44   2      display();
  45   2      
  46   2      
  47   2                 }
  48   1                                 }
  49          
  50          
  51          
  52          void adstart(void) {    //开始条件
  53   1      CLK=0;
  54   1      CS=0;
  55   1      DI=1;
C51 COMPILER V7.20   ADCC                                                                  02/20/2005 17:55:37 PAGE 2   

  56   1      CLK=1; 
  57   1      CLK=0;             }
  58          
  59          
  60          
  61          void adsendsign(uchar signifi) {  //发送信号
  62   1      uchar temp;
  63   1      temp=signifi&0x03;
  64   1      DI=(signifi>>1)&0x01;
  65   1      CLK=1;
  66   1      CLK=0;
  67   1      DI=temp&0x01;
  68   1      CLK=1;
  69   1      CLK=0; 
  70   1                                     }
  71          
  72          
  73          uchar adoutdata(void)        {    //数据输出
  74   1      uchar mfdata,i,j;
  75   1      bit D;
  76   1      while(DO);
  77   1      CLK=1;
  78   1      for(i=0;i<8;i++)
  79   1                      { CLK=0;
  80   2                                      D=DO;
  81   2                                      mfdata=mfdata|D;
  82   2                                      CLK=1;
  83   2                                      mfdata=mfdata<<1;
  84   2                                      }
  85   1      for(j=0;j<7;j++)
  86   1                      {
  87   2                      CLK=0;CLK=1;
  88   2                                      }
  89   1      CS=1;
  90   1      DO=1;
  91   1      return(mfdata);
  92   1                                  }
  93          
  94          
  95          
  96          uchar adconvert(sign)         {      //开始转换
  97   1       uchar addata;
  98   1                     adstart();
  99   1                                 adsendsign(sign);
 100   1                                 addata=adoutdata();
 101   1                                 return(addata);
 102   1                                                     
 103   1                                                 }
 104          
 105                                        
 106                                
 107          void senddata(uchar dd) {          //74HC164移入显示数据
 108   1      uchar j;
 109   1      for (j=0;j<8;j++) {
 110   2                         SDA=(bit)(dd&0x01);
 111   2                                         SCK=1;  SCK=0;
 112   2                                         dd=dd>>1;
 113   2                                         }
 114   1                                               }
 115          
 116          
 117          void display()           {           //在实验板的6位数码管上动态显示缓冲区中的数据
C51 COMPILER V7.20   ADCC                                                                  02/20/2005 17:55:37 PAGE 3   

 118   1           senddata(szdm[displaybuff[0]]);
 119   1           BIT0=0;
 120   1           Delay_ms(10);
 121   1           BIT0=1;
 122   1           senddata(szdm[displaybuff[1]]);
 123   1               BIT1=0;
 124   1           Delay_ms(10);
 125   1           BIT1=1;
 126   1           senddata(szdm[displaybuff[2]]);
 127   1               BIT2=0;
 128   1           Delay_ms(10);
 129   1           BIT2=1;
 130   1           senddata(szdm[displaybuff[3]]);
 131   1               BIT3=0;
 132   1           Delay_ms(10);
 133   1           BIT3=1;
 134   1           senddata(szdm[displaybuff[4]]);
 135   1               BIT4=0;
 136   1           Delay_ms(10);
 137   1           BIT4=1;
 138   1           senddata(szdm[displaybuff[5]]);
 139   1               BIT5=0;
 140   1           Delay_ms(10);
 141   1           BIT5=1;
 142   1                                }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    337    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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