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

📄 pcf8591.lst

📁 51单片机实例
💻 LST
字号:
C51 COMPILER V7.06   PCF8591                                                               07/19/2010 11:10:51 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PCF8591
OBJECT MODULE PLACED IN .\obj\pcf8591.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE pcf8591.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\pcf8591.lst) OBJECT(.\obj\p
                    -cf8591.obj)

stmt level    source

   1          /*-----------------------------------------------
   2            名称:IIC协议 PCF8591 AD/DA转换
   3            论坛:www.doflye.net
   4            编写:shifang
   5            修改:无
   6            内容:使用4路AD中的4路检测外部模拟量输入
   7          ------------------------------------------------*/  
   8          #include <reg52.h>                
   9          #include "i2c.h"
  10          #include "delay.h"
  11          #include "pcf8591.h"
  12          
  13          #define AddWr 0x90   //写数据地址 
  14          #define AddRd 0x91   //读数据地址
  15          
  16          extern bit ack;
  17          
  18          
  19          /*------------------------------------------------
  20                             AD处理函数
  21          ------------------------------------------------*/
  22          unsigned char  ADCheck(void)
  23          {
  24   1       unsigned char num=0,i;
  25   1       unsigned char Val=0;
  26   1       for(i=0;i<5;i++)
  27   1           WriteDAC(0);//写入固定值到DA输出,用于检测
  28   1       for(i=0;i<5;i++)//连续读5次,输入通道后多读几次,去最后一次值,以便读出稳定值
  29   1           num=ReadADC(0);
  30   1       if((num>100)&&(num<150)) // 2.5V
  31   1          Val++;
  32   1      
  33   1       for(i=0;i<5;i++)
  34   1         num=ReadADC(1);
  35   1      if((num>100)&&(num<150)) // 2.5V
  36   1          Val++;  
  37   1      
  38   1       for(i=0;i<5;i++)
  39   1          num=ReadADC(2);
  40   1      if((num>100)&&(num<150)) // 2.5V
  41   1          Val++;
  42   1      
  43   1       for(i=0;i<5;i++)
  44   1           num=ReadADC(3);
  45   1      if((num>100)&&(num<150)) // 2.5V
  46   1          Val++;
  47   1      return Val;
  48   1      }
  49          /*------------------------------------------------
  50                       读AD转值程序
  51          输入参数 Chl 表示需要转换的通道,范围从0-3
  52          返回值范围0-255
  53          ------------------------------------------------*/
  54          unsigned char ReadADC(unsigned char Chl)
C51 COMPILER V7.06   PCF8591                                                               07/19/2010 11:10:51 PAGE 2   

  55           {
  56   1        unsigned char Val;
  57   1         Start_I2c();               //启动总线
  58   1         SendByte(AddWr);             //发送器件地址
  59   1           if(ack==0)return(0);
  60   1         SendByte(0x40|Chl);            //发送器件子地址
  61   1           if(ack==0)return(0);
  62   1         Start_I2c();
  63   1         SendByte(AddRd);
  64   1            if(ack==0)return(0);
  65   1         Val=RcvByte();
  66   1         NoAck_I2c();                 //发送非应位
  67   1         Stop_I2c();                  //结束总线
  68   1        return(Val);
  69   1       }
  70          /*------------------------------------------------
  71                         写入DA转换数值
  72          输入参数:dat 表示需要转换的DA数值,范围是0-255
  73          ------------------------------------------------*/
  74          bit WriteDAC(unsigned char dat)
  75          {
  76   1         Start_I2c();               //启动总线
  77   1         SendByte(AddWr);             //发送器件地址
  78   1           if(ack==0)return(0);
  79   1         SendByte(0x40);            //发送器件子地址
  80   1           if(ack==0)return(0);
  81   1         SendByte(dat);             //发送数据
  82   1           if(ack==0)return(0);
  83   1         Stop_I2c();  
  84   1      }
  85          
  86          


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