下载此文档

基于STC12C5A60S2的ADXL345程序 电子电路 工程科技 专业资料.doc


文档分类:资格/认证考试 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
基于STC12C5A60S2的ADXL345程序_电子电路_工程科技_专业资料.doc基于STC12C5A60S2的ADXL345Z程序(12T单片机未测试)

#ifndef_I2C_H_
#define _I2C_H_
include <>
//…重定义关键词--//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
〃-定义使用的IO □-//
sbit I2C_SCL = P0A2;
sbit I2C_SDA = P0Al;
〃-声明全局变量-//
void I2C_Delayl0us();
void I2C_Start();
void I2C_Stop();
uchar I2C_SendByte(uchar dat, uchar ack);
// uchar I2C_ReadByte();
uchar I2C_ReadByte(uchar ack);
void I2C_Ack(void);
void I2C_NAck(void);
#endif

#include ""
void I2C_Delayl0us() //@
{
unsigned char i;
i= 12;
while (—i);
}
void I2C_Start()
{
I2C_SDA= 1;
I2C_Delayl0us();
I2C_SCL= 1;
I2C_Delayl0us();〃建立时间是 保持时间>
I2C_SDA=0;
I2C_Delayl0us();〃 保持时间是 >4us
I2C_SCL = 0;
I2C_Delay 1 Ous();
void I2C_Stop()
{
I2C_SDA=0;
I2C_Delay 1 Ous();
I2C_SCL 二 1;
I2C_Delayl0us();//M立时间大于
I2C_SDA 二 1;
I2C_Delayl0us();
}
uchar I2C_SendByte(uchar dat, uchar ack)
{
uchar a = 0,b = 0;//最大255, 一个机器周期为lus,最大延时255us。
for(a=0; a<8; a++)//要发送8位,从最高位开始
{
I2C_SDA = dat »7; 〃起始信号之后I2C_SCL=0,所以可以直接改变I2C_SDA
信号
dat = dat« 1;
I2C_Delayl0us();
I2C_SCL= 1;
I2C_Delay 10us();〃建立时间 >
I2C_SCL = 0;
I2C_Delayl0us();//时间大于 4us
}
I2C_SDA= 1;
I2C_Delay 10us();
I2C_SCL= 1;
while(I2C_SDA && (ack = 1))//等待应答,也就是等待从设备把I2C_SDA拉低
{
b++;
if(b > 200) 〃如果超过200us没有应答发送失败,或者为非应答,表示接收结束
{
I2C_SCL = 0;
I2C_Delayl0us();
return 0;
}
}
I2C_SCL = 0;
I2C_Delay 1 Ous(); return 1;
uchar I2C_ReadByte(unsigned char ack)
{
uchar a = O,dat = 0;
= 1; 〃起始和发送一个字节之后I2C_SCL都是0
I2C_Delay 10us();
for(a=0; a<8; a++)〃接收 8 个字节
{
I2C_SCL= 1;
I2C_Delay 10us();
dat «= 1;
dat 1= I2C_SDA;
I2C_Delayl0us();
I2C_SCL = 0;
I2C_Delayl0us();
}
if(!ack)
I2C_NAck();
else
I2C_Ack();
return dat;
}
void I2C_Ack(void)
{
I2C_SCL=0;
I2C_SDA=0;
I2C_Delayl0us();
I2C_SCL=1;
I2C_Delayl0us();
I2C_SCL=0;
}
〃不产生ACK应答
void I2C_NAck(void)
{
I2C_SCL=0;
I2C_SDA=1;
I2C_Delayl0

基于STC12C5A60S2的ADXL345程序 电子电路 工程科技 专业资料 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小雄
  • 文件大小127 KB
  • 时间2021-02-19