专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
求个msp430f5529的与光敏或雨水传感器传感器相关的程序啊
2019-07-15 15:36
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
6855
1
1280
rt
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
奇怪的S
2019-07-15 18:31
本帖最后由 Stark扬 于 2018-10-11 15:30 编辑
/******************************************************************************************************
文件名:iic.c
编写者:czhang
描述:iic总线的子程序。
版本:2003年10月11日 1.0
*****************************************************************************************************/
#include <msp430f6638.h>
#include "BH1750.h"
#include "iic.h"
#include "general.h"
/***************************************************************************
初始化IIC
***************************************************************************/
void InitIIC()
{
IIC_DIR |= IIC_SCL; //SCL管脚为输出
IIC_DIR &= ~IIC_SDA; //SDA管脚为输入
C_SCL;
Stop();
}
/***************************************************************************
进行短暂的延时,原因是MSP430的速度比较快。使用者可以根据时钟频率自行调节延时长短
***************************************************************************/
void delay()
{
unsigned char q0;
for(q0=0;q0<20;q0++)
{
_NOP();
}
}
/***************************************************************************
启动IIC总线
***************************************************************************/
void Start()
{
SDA_OUT;
S_SDA;
delay();
S_SCL;
delay();
C_SDA;
delay();
C_SCL;
delay();
}
/***************************************************************************
停止操作,释放IIC总线
***************************************************************************/
void Stop()
{
SDA_OUT;
C_SCL;
delay();
C_SDA;
delay();
S_SCL;
delay();
S_SDA;
delay();
}
/***************************************************************************
IIC总线应答
***************************************************************************/
void Ack()
{
SDA_OUT;
C_SDA;
delay();
S_SCL;
delay();
C_SCL;
delay();
S_SDA;
}
/***************************************************************************
IIC总线无应答
***************************************************************************/
void NoAck()
{
SDA_OUT;
S_SDA;
delay();
S_SCL;
delay();
C_SCL;
delay();
}
/***************************************************************************
IIC总线检验应答
返回值:IIC应答位的值0:应答 1:无应答
***************************************************************************/
unsigned char TestAck()
{
unsigned char ack;
S_SCL;
delay();
SDA_IN;
delay();
ack=READ_SDA;
delay();
C_SCL;
delay();
return(ack);
}
/***************************************************************************
IIC总线写8位数据
input:要写的8位数据
***************************************************************************/
void Write8Bit(unsigned int input)
{
unsigned char temp,q0;
SDA_OUT;
for(temp=8;temp!=0;temp--)
{
q0=input&0x80;
if(q0==0x80)
S_SDA;
else
C_SDA;
delay();
S_SCL;
delay();
C_SCL;
delay();
input=input<<1;
}
}
/***************************************************************************
IIC总线读8位数据
返回值:读出的8位数据
***************************************************************************/
unsigned char Read8Bit()
{
unsigned char temp,q0,rbyte=0;
SDA_IN;
for(temp=8;temp!=0;temp--)
{
S_SCL;
delay();
rbyte=rbyte<<1;
SDA_IN;
q0=READ_SDA;
if(q0==IIC_SDA)
rbyte=rbyte|0x1;
delay();
C_SCL;
delay();
}
return(rbyte);
}
以前用过的,感受一下~?
加载中...
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
/******************************************************************************************************
文件名:iic.c
编写者:czhang
描述:iic总线的子程序。
版本:2003年10月11日 1.0
*****************************************************************************************************/
#include <msp430f6638.h>
#include "BH1750.h"
#include "iic.h"
#include "general.h"
/***************************************************************************
初始化IIC
***************************************************************************/
void InitIIC()
{
IIC_DIR |= IIC_SCL; //SCL管脚为输出
IIC_DIR &= ~IIC_SDA; //SDA管脚为输入
C_SCL;
Stop();
}
/***************************************************************************
进行短暂的延时,原因是MSP430的速度比较快。使用者可以根据时钟频率自行调节延时长短
***************************************************************************/
void delay()
{
unsigned char q0;
for(q0=0;q0<20;q0++)
{
_NOP();
}
}
/***************************************************************************
启动IIC总线
***************************************************************************/
void Start()
{
SDA_OUT;
S_SDA;
delay();
S_SCL;
delay();
C_SDA;
delay();
C_SCL;
delay();
}
/***************************************************************************
停止操作,释放IIC总线
***************************************************************************/
void Stop()
{
SDA_OUT;
C_SCL;
delay();
C_SDA;
delay();
S_SCL;
delay();
S_SDA;
delay();
}
/***************************************************************************
IIC总线应答
***************************************************************************/
void Ack()
{
SDA_OUT;
C_SDA;
delay();
S_SCL;
delay();
C_SCL;
delay();
S_SDA;
}
/***************************************************************************
IIC总线无应答
***************************************************************************/
void NoAck()
{
SDA_OUT;
S_SDA;
delay();
S_SCL;
delay();
C_SCL;
delay();
}
/***************************************************************************
IIC总线检验应答
返回值:IIC应答位的值0:应答 1:无应答
***************************************************************************/
unsigned char TestAck()
{
unsigned char ack;
S_SCL;
delay();
SDA_IN;
delay();
ack=READ_SDA;
delay();
C_SCL;
delay();
return(ack);
}
/***************************************************************************
IIC总线写8位数据
input:要写的8位数据
***************************************************************************/
void Write8Bit(unsigned int input)
{
unsigned char temp,q0;
SDA_OUT;
for(temp=8;temp!=0;temp--)
{
q0=input&0x80;
if(q0==0x80)
S_SDA;
else
C_SDA;
delay();
S_SCL;
delay();
C_SCL;
delay();
input=input<<1;
}
}
/***************************************************************************
IIC总线读8位数据
返回值:读出的8位数据
***************************************************************************/
unsigned char Read8Bit()
{
unsigned char temp,q0,rbyte=0;
SDA_IN;
for(temp=8;temp!=0;temp--)
{
S_SCL;
delay();
rbyte=rbyte<<1;
SDA_IN;
q0=READ_SDA;
if(q0==IIC_SDA)
rbyte=rbyte|0x1;
delay();
C_SCL;
delay();
}
return(rbyte);
}
以前用过的,感受一下~?
一周热门 更多>