• 大小: 1.64MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-07
  • 语言: 其他
  • 标签: 8563proteus  

资源简介

本程序是在keil软件下编写,然后通过Proteus软件仿真完成的。其功能是读取PCF8563的数据,实现时钟的设计。

资源截图

代码片段和文件信息

/*************************此部分为I2C总线的驱动程序*************************************/

#include
#include 
#include 

#define  NOP()   _nop_()   /* 定义空指令 */
#define  _Nop()  _nop_()   /*定义空指令*/
 
sbit     SCL=P3^5;       //I2C  时钟 
sbit     SDA=P3^4;       //I2C  数据 
bit ack;                 /*应答标志位*/
   
/*******************************************************************
                     起动总线函数               
函数原型: void  Start_I2c();  
功能:     启动I2C总线即发送I2C起始条件.  
********************************************************************/
void Start_I2c()
{
  SDA=1;         /*发送起始条件的数据信号*/
  _Nop();
  SCL=1;
  _Nop();        /*起始条件建立时间大于4.7us延时*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();    
  SDA=0;         /*发送起始信号*/
  _Nop();        /* 起始条件锁定时间大于4μs*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();       
  SCL=0;       /*钳住I2C总线,准备发送或接收数据 */
  _Nop();
  _Nop();
}

/*******************************************************************
                      结束总线函数               
函数原型: void  Stop_I2c();  
功能:     结束I2C总线即发送I2C结束条件.  
********************************************************************/
void Stop_I2c()
{
  SDA=0;      /*发送结束条件的数据信号*/
  _Nop();       /*发送结束条件的时钟信号*/
  SCL=1;      /*结束条件建立时间大于4μs*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();
  _Nop();
  SDA=1;      /*发送I2C总线结束信号*/
  _Nop();
  _Nop();
  _Nop();
  _Nop();
}

/*******************************************************************
                 字节数据发送函数               
函数原型: void  SendByte(UCHAR c);
功能:     将数据c发送出去可以是地址也可以是数据发完后等待应答并对
          此状态位进行操作.(不应答或非应答都使ack=0)     
           发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
void  SendByte(unsigned char  c)
{
 unsigned char  BitCnt;
 
 for(BitCnt=0;BitCnt<8;BitCnt++)  /*要传送的数据长度为8位*/
    {
     if((c<       else  SDA=0;                
     _Nop();
     SCL=1;               /*置时钟线为高,通知被控器开始接收数据位*/
      _Nop(); 
      _Nop();             /*保证时钟高电平周期大于4μs*/
      _Nop();
      _Nop();
      _Nop();         
     SCL=0; 
    }
    
    _Nop();
    _Nop();
    SDA=1;                /*8位发送完后释放数据线,准备接收应答位*/
    _Nop();
    _Nop();   
    SCL=1;
    _Nop();
    _Nop();
    _Nop();
    if(SDA==1)ack=0;     
       else ack=1;        /*判断是否接收到应答信号*/
    SCL=0;
    _Nop();
    _Nop();
}

/*******************************************************************
                 字节数据接收函数               
函数原型: UCHAR  RcvByte();
功能:        用来接收从器件传来的数据并判断总线错误(不发应答信号),
          发完后请用应答函数应答从机。  
********************************************************************/    
unsigned char   RcvByte()
{
  unsigned char  retc;
  unsigned char  BitCnt;
  
  retc=0; 
  SDA=1;                     /*置数据线为输入方式*/
  for(BitCnt=0;BitCnt<8;BitCnt++)
      {
        _Nop();           
        SCL=0;                  /*置时钟线为低,准备接收数据位*/
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-09-11 17:45  PCF8563\
     文件       23925  2014-09-05 15:00  PCF8563\1234
     文件       25901  2014-09-05 15:00  PCF8563\1234.M51
     文件        1705  2014-09-05 15:05  PCF8563\1234.Opt
     文件        2221  2014-09-04 10:48  PCF8563\1234.Uv2
     文件        3203  2014-09-05 15:00  PCF8563\1234.hex
     文件          84  2014-09-05 15:00  PCF8563\1234.lnp
     文件       12583  2014-09-05 15:05  PCF8563\1234.plg
     文件        1709  2014-09-05 14:44  PCF8563\1234_Opt.Bak
     文件        2181  2014-09-03 17:43  PCF8563\1234_Uv2.Bak
     文件         139  2014-08-28 17:57  PCF8563\DATATYPE.h
     文件       13314  2014-09-05 15:00  PCF8563\I2C.LST
     文件       12160  2014-09-05 15:00  PCF8563\I2C.OBJ
     文件        8352  2014-09-04 09:24  PCF8563\I2C.c
     文件         463  2012-12-03 13:23  PCF8563\I2C.h
     文件      161956  2014-09-05 15:05  PCF8563\LCD1602.DSN
     文件         909  2014-09-10 17:53  PCF8563\LCD1602.PWI
     文件     5603328  2014-09-03 17:38  PCF8563\PCF8563T.ddb
     文件      709608  2012-10-10 09:07  PCF8563\PCF8563_www.ic37.com.pdf
     文件      102233  2012-10-25 09:50  PCF8563\PCF8563实时时钟精度的调整方法.pdf
     文件      237462  2012-10-25 09:50  PCF8563\PCF8563日历时钟芯片原理及应用设计.pdf
     文件      320148  2012-10-25 09:53  PCF8563\PCF8563的中断输出功能.pdf
     文件        6376  2005-03-22 15:22  PCF8563\STARTUP.A51
     文件       14048  2014-09-05 15:00  PCF8563\STARTUP.LST
     文件         749  2014-09-05 15:00  PCF8563\STARTUP.OBJ
     文件        5876  2014-09-05 15:00  PCF8563\lcd1602.LST
     文件        6896  2014-09-05 15:00  PCF8563\lcd1602.OBJ
     文件        2740  2014-09-05 14:47  PCF8563\lcd1602.c
     文件         497  2014-08-29 15:24  PCF8563\lcd1602.h
     文件        8057  2014-09-05 15:00  PCF8563\main.LST
     文件        7149  2014-09-05 15:00  PCF8563\main.OBJ
............此处省略2个文件信息

评论

共有 条评论

相关资源