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

📄 1543.lst

📁 单片机AD转化 功能较简单实用 对初学者有一定帮助
💻 LST
字号:
C51 COMPILER V7.01  1543                                                                   08/06/2007 14:38:53 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE 1543
OBJECT MODULE PLACED IN 1543.OBJ
COMPILER INVOKED BY: D:\keil安装包\安装处\C51\BIN\C51.EXE 1543.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          extern void inttilcs(void);
   2          extern void WriteLcdData(unsigned char a);
   3          
   4          #include<reg51.h>
   5          #include<intrins.h>
   6          
   7          sbit CLOCK=P1^0;
   8          sbit AD_IN=P1^1;
   9          sbit D_OUT=P1^2;
  10          sbit CS   =P1^3;
  11          //sbit EOC  =P3^2;
  12          
  13          /*--------------------------------------------------------
  14          调用方式:uint read1543(uchar port)  晶振是11.0592MHz
  15          函数说明:read1543()返回10位AD芯片TLC1543的port通道采样值。
  16          ---------------------------------------------------------*/
  17          unsigned int read1543(unsigned char port) //从TLC1543读取采样值,形参port是采样的通道号
  18          {
  19   1              unsigned int   ad;
  20   1          unsigned char  i;
  21   1              unsigned char  al=0,ah=0;
  22   1              CLOCK=0;
  23   1              CS=0;
  24   1              port<<=4;          //先高位后低位
  25   1              for (i=0;i<4;i++)  //把通道号打入1543
  26   1              {
  27   2                      AD_IN=(bit)(port&0x80);
  28   2              CLOCK=1;
  29   2              CLOCK=0;
  30   2                      port<<=1;
  31   2              }
  32   1              
  33   1              for (i=0;i<6;i++)  //填充6个CLOCK
  34   1              {
  35   2                      CLOCK=1;
  36   2                  CLOCK=0;
  37   2              }       
  38   1              CS=1;
  39   1          //等待AD转换,可加延时等待
  40   1      
  41   1          CS=0; 
  42   1              
  43   1              for (i=0;i<2;i++) //取D9,D8
  44   1              {
  45   2              D_OUT=1;
  46   2                      CLOCK=1;
  47   2                      ah<<=1;
  48   2                      if (D_OUT) ah|=0x01;
  49   2                      CLOCK=0;
  50   2              } 
  51   1              
  52   1              for (i=0;i<8;i++) //取D7--D0
  53   1              {
  54   2              D_OUT=1;
  55   2                      CLOCK=1;
C51 COMPILER V7.01  1543                                                                   08/06/2007 14:38:53 PAGE 2   

  56   2                      al<<=1;
  57   2                      if (D_OUT) al|=0x01;
  58   2                      CLOCK=0;
  59   2              } 
  60   1              
  61   1              CS=1;
  62   1              ad=(unsigned int)ah;
  63   1          ad<<=8;
  64   1          ad|=(unsigned int)al; //得到AD值
  65   1              return (ad);
  66   1      } 
  67           
  68          //===========================
  69          void main()
  70          {   
  71   1          unsigned char DASC[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x339};
  72   1          unsigned char fenwei[3];
  73   1          unsigned char i,j;
  74   1          float daicedianyazhi;
  75   1          unsigned int ADzhi;
  76   1      inttilcs();
  77   1              for(j=0;j<2;j++)
  78   1              {
  79   2                  
  80   2                  ADzhi=read1543(0);
  81   2              }
  82   1          daicedianyazhi=(ADzhi*2.5)/1024;
  83   1          ADzhi=daicedianyazhi*100;
  84   1          fenwei[2]=ADzhi/100;
  85   1          ADzhi=ADzhi%100;
  86   1          fenwei[1]=ADzhi/10;
  87   1          fenwei[0]=ADzhi%10;
  88   1          for(i=0;i<5;i++)
  89   1          {
  90   2           switch(i)
  91   2           {
  92   3                      case 0:WriteLcdData(DASC[fenwei[2]]);break;
  93   3                      case 1:WriteLcdData(0x2e);break;//.
  94   3                      case 2:WriteLcdData(DASC[fenwei[1]]);break;
  95   3                      case 3:WriteLcdData(DASC[fenwei[0]]);break;
  96   3              case 4:WriteLcdData(0x56);break;//v
  97   3               }
  98   2          }
  99   1          while(1);
 100   1      } 
 101           


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