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

📄 pcf8563.lst

📁 stc15单片机测试程序V1.0版
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.01   PCF8563                                                               07/28/2012 10:12:55 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE PCF8563
OBJECT MODULE PLACED IN PCF8563.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PCF8563.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "STC15F2K.h"
   2          #include <intrins.H>
   3          
   4          
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          
   8          sbit scl=P1^6;
   9          sbit sda=P1^7;
  10          
  11          
  12          
  13          /*----------------------------------------------------------------------------&
  14                                                     I2C程序
  15          ----------------------------------------------------------------------------&&*/
  16          
  17          
  18          void delay_()   //2us
  19          {       
  20   1        unsigned char i;
  21   1      
  22   1              i = 3;
  23   1              while (--i);
  24   1      }
  25          
  26          void start()//IIC启动
  27          {
  28   1              sda=1;
  29   1              delay_();
  30   1              scl=1;
  31   1              delay_();
  32   1              sda=0;                                  
  33   1              delay_();
  34   1              scl=0;  //可以尝试屏蔽scl=0; 
  35   1              delay_();
  36   1      }
  37          void stop() //IIC结束    
  38          {
  39   1              sda=0;
  40   1              delay_();
  41   1              scl=1;
  42   1              delay_();
  43   1              sda=1;
  44   1              delay_();
  45   1              scl=0;  //可以尝试屏蔽scl=0; 
  46   1              delay_();
  47   1      }
  48          /******************************************************************************* 
  49          功能描述:主机应答
  50          注:主设备(比如单片机),从 从设备(比如PCF8563)读取字节后,如果 
  51              要继续读取,就要给从设备一个ACK(即所谓的”应答“,数据位SDA为0) 
  52          *******************************************************************************/
  53          void ack()     
  54          {       uchar i;
  55   1              sda=0;
C51 COMPILER V9.01   PCF8563                                                               07/28/2012 10:12:55 PAGE 2   

  56   1              delay_();
  57   1              scl=1; //在时钟线为高电平的情况下,数据线上的值(SDA=0)被写入到从机中
  58   1              delay_();
  59   1              while((sda==1)&&(i<250))i++;
  60   1              scl=0;
  61   1              delay_();
  62   1      }
  63          /******************************************************************************* 
  64          功能描述:主机无应答
  65          注:主设备(比如单片机),从 从设备(比如PCF8563)读取字节后,如果不再 
  66              进行读取,就要给从设备一个NACK(即所谓的”无应答“,数据位SDA为1) 
  67          *******************************************************************************/
  68          void nack()
  69          {       uchar i;
  70   1              sda=1;
  71   1              delay_();
  72   1              scl=1;     //在时钟线为高电平的情况下,数据线上的值被写入到从机中
  73   1              while((sda==0)&&(i<250))i++;
  74   1              delay_();
  75   1              scl=0;
  76   1              delay_();
  77   1      }
  78          /*******************************************************************************
  79          功能描述:主设备检测从设备应答
  80          返回说明:从设备的应答值
  81          注:主设备向从设备写入字节后,要检测从设备发出的应答,
  82              如果数据位SDA为0,说明向从设备成功写入了字节。1写入失败 
  83          *******************************************************************************/ 
  84          uchar getack() //从机应答
  85          {
  86   1              uchar error;
  87   1              sda=1;        //为了后面能对数据线上的状态进行读取,51中要将IO 
  88   1              delay_();     //当做输入时,必须置为高电平
  89   1              scl=1;        //时钟为高时,从机发出应答信号
  90   1              delay_();
  91   1              error=sda;    //对数据线上的状态进行读取并赋值给Error
  92   1              delay_();
  93   1              scl=0;
  94   1              delay_();
  95   1              return error;
  96   1      }
  97          /******************************************************************************* 
  98          功能描述:主设备向从设备写入一字节
  99          参数说明:dat:将要写入的字节
 100          返回说明:从设备的应答值
 101          注:向从设备写入一个字节,并返回从设备的应答值 
 102          *******************************************************************************/
 103          uchar writebyte(uchar dat)              
 104          {
 105   1              uchar i;
 106   1              
 107   1              for(i=0;i<8;i++)
 108   1              {
 109   2                      sda=((dat<<i)&0x80);//先写字节的高位,赋值给数据线
 110   2                      scl=1;              //SCL高电平时,数据线上的数据有效,被写入到从机中  
 111   2                      delay_();
 112   2                      scl=0;
 113   2                      delay_();
 114   2              }
 115   1              return getack();//返回从机应答
 116   1      }
 117          /******************************************************************************* 
C51 COMPILER V9.01   PCF8563                                                               07/28/2012 10:12:55 PAGE 3   

 118          功能描述:主设备从从设备读取一字节
 119          返回说明:读到的字节 
 120          *******************************************************************************/
 121          uchar readbyte()                                 
 122          {
 123   1              uchar i,rbyte=0;
 124   1              scl=0;
 125   1              delay_();
 126   1              sda=1;                 //为了后面能对数据线上的状态进行读取
 127   1              delay_();
 128   1              for(i=0;i<8;i++)
 129   1              {
 130   2                      scl=1;             //在时钟线为高的情况下,从机在数据线上输出相应的位
 131   2                      delay_();       
 132   2                      rbyte=(rbyte<<1)|sda;

⌨️ 快捷键说明

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