资源简介

基于IIC总线PCF8591AD转换的仿真测试有仿真图有代码,测试已经通过,自己下载后可修改代码

资源截图

代码片段和文件信息


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

#include
#include 


#define  NOP()   _nop_()   /* 定义空指令 */
#define  _Nop()  _nop_()   /*定义空指令*/
#define  PCF8591 0x90    //PCF8591 地址


//else IO
sbit    LS138A=P2^2;  
sbit    LS138B=P2^3;
sbit    LS138C=P2^4;  

//此表为 LED 的字模 共阴数码管 0-9  - 
unsigned char code Disp_Tab[] = {0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f}; 

unsigned char AD_CHANNEL;
unsigned int LedOut[8];
unsigned int  D[32];

 
sbit     SCL=P2^5;       //I2C  时钟 
sbit     SDA=P2^6;       //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();
功能:        用来接收从器件传来的数据并判断总线错误(不发应答信号),
          发完后请用应答函数应答从机。  
*******************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      14300  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\i2c.LST

     文件      13442  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\i2c.OBJ

     文件      11848  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\I2C

     文件       1015  2012-03-15 17:40  基于IIC总线PCF8591AD转换的使用\代码\I2C.Opt

     文件      13379  2012-03-15 17:40  基于IIC总线PCF8591AD转换的使用\代码\I2C.plg

     文件       8135  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\i2c.c

     文件         38  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\I2C.lnp

     文件      13539  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\I2C.M51

     文件       2485  2012-03-15 17:39  基于IIC总线PCF8591AD转换的使用\代码\I2C.hex

    .......         0  2012-03-15 00:03  基于IIC总线PCF8591AD转换的使用\代码\I2C_Uv2.Bak

     文件       1984  2012-03-15 00:15  基于IIC总线PCF8591AD转换的使用\代码\I2C.Uv2

    .......      1011  2012-03-15 00:15  基于IIC总线PCF8591AD转换的使用\代码\I2C_Opt.Bak

     文件        278  2012-03-14 20:27  基于IIC总线PCF8591AD转换的使用\8591控制字节定义.txt

     文件       1026  2012-03-15 17:40  基于IIC总线PCF8591AD转换的使用\仿真\I2C仿真.PWI

     文件     112062  2012-03-15 00:15  基于IIC总线PCF8591AD转换的使用\仿真\Last Loaded I2C仿真.DBK

     文件     112060  2012-03-15 17:40  基于IIC总线PCF8591AD转换的使用\仿真\I2C仿真.DSN

     目录          0  2012-03-14 16:40  基于IIC总线PCF8591AD转换的使用\代码

     目录          0  2012-03-14 22:44  基于IIC总线PCF8591AD转换的使用\仿真

     目录          0  2012-03-14 16:39  基于IIC总线PCF8591AD转换的使用

----------- ---------  ---------- -----  ----

               306602                    19


评论

共有 条评论