• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: cc2530  

资源简介

cc2530编写ZigBee无线传输时需要采用AD测出电压

资源截图

代码片段和文件信息

#ifdef  _ADXL345_
#include “ADXL345.h“
#include    
#include “OnBoard.h“
#ifdef ZDEBUG
#include “MyDebug.h“
#endif

//使用的端口,请按照以下接线
#define SCL   P1_3                  //IIC时钟引脚定义
#define SDA   P1_2                  //IIC数据引脚定义
#define SDADirOut {P1SEL&=~0x04;P1DIR|=0x04;}//通用IO输出
#define SDADirIn  {P1SEL&=~0x04;P1DIR&=~0x04;}
#define SCLDirOut {P1SEL&=~0x08;P1DIR|=0x08;}
#define SlaveAddress   0xA6   //定义器件在IIC总线中的从地址(读)

uint8 BUF[8]; 

/*add by wb -2.22*/
#define Register_ID 0
#define Register_2D 0x2D
#define Register_X0 0x32
#define Register_X1 0x33
#define Register_Y0 0x34
#define Register_Y1 0x35
#define Register_Z0 0x36
#define Register_Z1 0x37
int X0X1X_out;
int Y0Y1Y_out;
int Z1Z0Z_out;
double XgYgZg;
/*add by wb*/

uint8 geshibaiqianwan;
int  dis_data;

void WriteSDA1(void)//SDA 输出1   
{
     SDADirOut;
     SDA=1;
}
void WriteSDA0(void)//SDA 输出0  
{
     SDADirOut;
     SDA=0;
}
void WriteSCL1(void)//SCL 输出1  
{
     SCLDirOut;
     SCL=1;
}
void WriteSCL0(void)//SCL 输出1  
{
     SCLDirOut;
     SCL=0;
}

/**************************************
延时1微秒
不同的工作环境需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时请调整此延时函数
**************************************/
#pragma optimize=none
void Delayus(uint16 usec)
{
    usec >>= 1;
    while(usec--)
    {
        asm(“nop“);asm(“nop“);asm(“nop“);asm(“nop“);
        asm(“nop“);asm(“nop“);asm(“nop“);asm(“nop“);
        asm(“nop“);asm(“nop“);asm(“nop“);asm(“nop“);
        asm(“nop“);asm(“nop“);asm(“nop“);asm(“nop“);
        asm(“nop“);
    } 
}

/**************************************
起始信号
**************************************/
void ADXL345_Start(void)

    WriteSDA1();                //拉高数据线
    WriteSCL1();                //拉高时钟线
    Delayus(5);                 //延时
    WriteSDA0();                //产生下降沿
    Delayus(5);                 //延时
    WriteSCL0();                //拉低时钟线
    Delayus(5);  
}

/**************************************
停止信号
**************************************/
void ADXL345_Stop(void)
{   
    WriteSDA0();
    Delayus(5);  
    WriteSCL1();                       
    Delayus(5);  
    WriteSDA1();                    
    Delayus(5); 
    WriteSDA0();                    
    Delayus(5);    
}

/**************************************
发送应答信号
入口参数:ack (0:ACK 1:NAK)
**************************************/
void ADXL345_SendACK(char ack)
{   
    WriteSCL0();
    Delayus(5);
    SDADirOut;      
    SDA = ack;                  //写应答信号
    Delayus(5); //add by wb
    WriteSCL1();                //拉高时钟线
    Delayus(5);                 //延时
    WriteSCL0();                //拉低时钟线
    Delayus(5);                 //延时
}

/**************************************
接收应答信号
**************************************/
uint8 ADXL345_RecvACK(void)
{
    WriteSDA1();
    SDADirIn;
    Delayus(5);          
    WriteSCL1();
    Delayus(5);
    if(SDA)
    {
     

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

     文件        939  2014-02-22 15:52  ADXL345.h

     文件       8746  2014-02-22 15:54  ADXL345.c

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

                 9685                    2


评论

共有 条评论