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

📄 pcf8591ad.lst

📁 C8051F.rar
💻 LST
字号:
C51 COMPILER V7.05   PCF8591AD                                                             02/16/2006 21:21:51 PAGE 1   


C51 COMPILER V7.05, COMPILATION OF MODULE PCF8591AD
OBJECT MODULE PLACED IN PCF8591AD.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe PCF8591AD.C DB OE

stmt level    source

   1          //参考程序A: PCF8591AD.C  PCF8591的AD转换实验.
   2          /*芯片PCF8951共有四个A/D输入通道:AD0,AD1,AD2,AD3,分别与四个电位器(R1,R2,R3,R4)连接,用以调节电位器的输
             -出电压。其中AD0通道既可测量电位器输出电压,也可用于测量从J1插座输入的外接电压,须用开关J2加以选择。J4插座提供由PCF8591输
             -出的时钟方波信号。SAA1064驱动四个数码管显示一路AD转换后得到的数据。显示格式如下表:
   3          通道号:               AD转换结果(高四位)           AD转换结果(低四位)
   4             3                         E                              7
   5          函数SLA_READ(char chip_select, char channel)中的channel就是通道号选择变量.channel=0到3.本程序选定channel=3
             -(用户可修改),用小改刀调节R4,可观察到数码管上显示的数据的变化.*/
   6          #include <c8051f020.h>                    // SFR declarations
   7          #include <intrins.h>
   8          #define  WRITE       0x00                 // 写位
   9          #define  READ        0x01                 // 读位           
  10          #define  CHIP_B      0x70
  11          #define  SMB_START      0x08  // (MT&MR)主收发器发送起始位成功.再将从机写地址送SMB0DAT
  12          #define  SMB_RP_START   0x10  // (MT & MR)主收发器重复发送起始位成功,再将从机读地址送SMB0DAT
  13          #define  SMB_MTADDACK   0x18  // (MT)主收发器发送从地址+W成功;收到 ACK        
  14          #define  SMB_MTADDNACK  0x20  // (MT) 主收发器发送从地址+W成功;收到 NACK        
  15          #define  SMB_MTDBACK    0x28  //(MT)主收发器发送数据字节成功;收到ACK.           
  16          #define  SMB_MRADDACK   0x40  // (MR)主收发器发送从地址+R成功;收到 ACK.
  17          #define  SMB_MRDBACK    0x50  // (MR)主收发器接收数据成功;主机发送ACK 
  18          #define  SMB_MRDBNACK   0x58  // (MR)主收发器接收数据成功;主机发送NACK 
  19          char COMWRITE;         //保存从地址 + R/W 位,用在 中断服务函数中
  20          char COMREAD;                                         
  21          unsigned char totalnumber,sendnumber,WORD;     
  22          unsigned char  INTERRUPT[20],L;
  23          unsigned char xdata  channel=3;    // channel保存AD通道变量,channel=0--3.
  24          unsigned char xdata SENDMODE;      // SENDMODE=1为写(SLA_SEND),SENDMODE=0为读(SLA_READ)
  25          bit SM_BUSY;                      // 在收/发过程中,SM_BUSY被置1.中断服务完成后被清为另.
  26          unsigned char wr_data[8];         //保存写入从器件的数据
  27          unsigned char rd_data[8];         //保存从从器件中读出的数据
  28          void SYSCLK_Init (void);
  29          void SMBUS_ISR (void);
  30          char SLA_READ(char chip_select, char channel);
  31          //channel就是通道号选择变量.channel=0到3
  32          void SLA_SEND(char chip_select, char *wr_data, char number);
  33          //chip_select为从器件的写地址
  34          char temp;              
  35          char Number[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //LED

⌨️ 快捷键说明

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