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

📄 main.lst

📁 51实例大全
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  06/17/2010 16:07:12 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\main.lst) OBJECT(.\obj\main.ob
                    -j)

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 "1602.h"
  12          #include <stdio.h>
  13          
  14          #define AddWr 0x90   //写数据地址 
  15          #define AddRd 0x91   //读数据地址
  16          
  17          extern bit ack;
  18          unsigned char ReadADC(unsigned char Chl);
  19          bit WriteDAC(unsigned char dat);
  20          /*------------------------------------------------
  21                        主程序
  22          ------------------------------------------------*/
  23          main()
  24          {
  25   1       unsigned char num=0,i;
  26   1       unsigned char temp[7];//定义显示区域临时存储数组
  27   1       float Voltage;        //定义浮点变量
  28   1       LCD_Init();           //初始化液晶
  29   1       DelayMs(20);          //延时有助于稳定
  30   1       LCD_Clear();          //清屏
  31   1      
  32   1      while (1)              //主循环
  33   1        {
  34   2       
  35   2       for(i=0;i<5;i++)//连续读5次,取最后一次,以便读取稳定值
  36   2          num=ReadADC(0);      //读取第1路电压值,范围是0-255
  37   2       Voltage=(float)num*5/256;   //根据参考电源VREF算出时间电压,float是强制转换符号,用于将结果转换成浮点型
  38   2       sprintf(temp,"V0 %3.2f ",Voltage);//格式输出电压值,%3.2f 表示浮点输出,共3位数,小数点后2位
  39   2       LCD_Write_String(0,0,temp);
  40   2      
  41   2       for(i=0;i<5;i++) 
  42   2           num=ReadADC(1);
  43   2       Voltage=(float)num*5/256;   
  44   2       sprintf(temp,"V1 %3.2f ",Voltage);
  45   2       LCD_Write_String(8,0,temp);
  46   2      
  47   2       for(i=0;i<5;i++) 
  48   2           num=ReadADC(2);
  49   2       Voltage=(float)num*5/256;   
  50   2       sprintf(temp,"V2 %3.2f ",Voltage);
  51   2       LCD_Write_String(0,1,temp);
  52   2      
  53   2       for(i=0;i<5;i++) 
  54   2           num=ReadADC(3);
C51 COMPILER V7.06   MAIN                                                                  06/17/2010 16:07:12 PAGE 2   

  55   2       Voltage=(float)num*5/256;   
  56   2       sprintf(temp,"V3 %3.2f ",Voltage);
  57   2       LCD_Write_String(8,1,temp);
  58   2       //主循环中添加其他需要一直工作的程序
  59   2       DelayMs(200);
  60   2      
  61   2        }
  62   1      }
  63          /*------------------------------------------------
  64                       读AD转值程序
  65          输入参数 Chl 表示需要转换的通道,范围从0-3
  66          返回值范围0-255
  67          ------------------------------------------------*/
  68          unsigned char ReadADC(unsigned char Chl)
  69           {
  70   1         unsigned char Val;
  71   1         Start_I2c();               //启动总线
  72   1         SendByte(AddWr);             //发送器件地址
  73   1           if(ack==0)return(0);
  74   1         SendByte(0x40|Chl);            //发送器件子地址
  75   1           if(ack==0)return(0);
  76   1         Start_I2c();
  77   1         SendByte(AddWr+1);
  78   1            if(ack==0)return(0);
  79   1         Val=RcvByte();
  80   1         NoAck_I2c();                 //发送非应位
  81   1         Stop_I2c();                  //结束总线
  82   1        return(Val);
  83   1       }
  84          /*------------------------------------------------
  85                         写入DA转换数值
  86          输入参数:dat 表示需要转换的DA数值,范围是0-255
  87          ------------------------------------------------*/
  88          /*bit WriteDAC(unsigned char dat)
  89          {
  90             Start_I2c();               //启动总线
  91             SendByte(AddWr);             //发送器件地址
  92               if(ack==0)return(0);
  93             SendByte(0x40);            //发送器件子地址
  94               if(ack==0)return(0);
  95             SendByte(dat);             //发送数据
  96               if(ack==0)return(0);
  97             Stop_I2c();  
  98          }*/


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