📄
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0036)http://www.daxia.com/list_1094.shtml -->
<HTML><HEAD><TITLE>大虾电子-通用MSP430—I2C程序(清风徐徐)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="大虾电子-通用MSP430—I2C程序(清风徐徐).files/style.css" rel=stylesheet>
<META content="MSHTML 6.00.2900.2912" name=GENERATOR></HEAD>
<BODY>
<DIV align=center>
<CENTER>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-1260019700816245";
google_alternate_ad_url = "http://www.daxia.com/product/dx58";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_color_bg = "efefef";
google_ad_type = "text";
google_ad_channel ="";
//--></SCRIPT>
<SCRIPT src="大虾电子-通用MSP430—I2C程序(清风徐徐).files/show_ads.js" type=text/javascript>
</SCRIPT>
</CENTER></DIV>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width="97%"
borderColorLight=#000000 border=1>
<TBODY>
<TR>
<TD width="100%" bgColor=#d0d0d0>
<P align=center>文章编号:1094----加入日期:2004-2-4 </P></TD></TR>
<TR>
<TD width="100%">
<P align=right><A href="javascript:self.close()">『关闭窗口』</A></P></TD></TR>
<TR>
<TD width="100%">
<P align=center><B>通用MSP430—I2C程序(清风徐徐)</B></P></TD></TR>
<TR>
<TD width="100%">
<BLOCKQUOTE><BR>//==================================//<BR>//通用MSP430—I2C程序<BR>//收藏:清风徐徐<BR>//QQ:78779514<BR>//EMAIL:XSL88888@TOM.com<BR>//2004.2.4<BR>//===================================//<BR>#include
"MSP430x14x.h"<BR>//P3.2 SCL<BR>//P3.3 SDA<BR><BR>#define
SDA_1 P3OUT
|= BIT3 //SDA
= 1<BR>#define SDA_0 P3OUT
&=~
BIT3 //SDA
= 0<BR>#define SCL_1 P3OUT
|= BIT2 //SCL
= 1<BR>#define SCL_0 P3OUT
&=~
BIT2 //SCL
= 0<BR>#define DIR_IN P3DIR &=~
BIT3; SDA_1 //I/O口为输入<BR>#define
DIR_OUT P3DIR
|= BIT3 //I/0口为输出<BR>#define
SDA_IN ((P3IN >> 3) &
0x01) //Read
SDA<BR><BR>unsigned int a[50];<BR><BR>static void Delay(unsigned int
n)<BR>{<BR> unsigned int i;<BR> for
(i=0; i<n; i++) {;}<BR>}<BR><BR>void
Init(void)<BR>{<BR> SCL_1;<BR> Delay(5);<BR> SDA_1;<BR> Delay(5);<BR>}<BR><BR>void
Start(void)<BR>{<BR> SDA_1;<BR> Delay(5);<BR> SCL_1;<BR> Delay(5);<BR> SDA_0;<BR> Delay(5);<BR> SCL_0;<BR> Delay(5);<BR>}<BR><BR>void
Stop(void)<BR>{<BR> SDA_0;<BR> Delay(5);<BR> SCL_1;<BR> Delay(5);<BR> SDA_1;<BR> Delay(5);<BR>}<BR><BR>void
WriteByte(unsigned char WriteData)<BR>{<BR> unsigned char
i;<BR> for (i=0; i<8;
i++)<BR> {<BR> SCL_0;<BR> Delay(5);<BR> if
(((WriteData >> 7) & 0x01) ==
0x01)<BR> {<BR> SDA_1;<BR> }<BR> else<BR> {<BR> SDA_0;<BR> }<BR> Delay(5);<BR> SCL_1;<BR> WriteData
= WriteData <<
1;<BR> Delay(5);<BR> }<BR> SCL_0;<BR> SDA_1;<BR> Delay(5);<BR> Delay(5);<BR>}<BR><BR>unsigned
char ReadByte(void)<BR>{<BR> unsigned char
i;<BR> unsigned char TempBit =
0;<BR> unsigned char TempData =
0;<BR> SCL_0;<BR> Delay(5);<BR> SDA_1;<BR> for
(i=0; i<8;
i++)<BR> {<BR> Delay(5);<BR> SCL_1;<BR> Delay(5);<BR> DIR_IN;<BR> if
(SDA_IN == 0x01
/*sda==1*/)<BR> {<BR> TempBit
=
1;<BR> }<BR> else<BR> {<BR> TempBit
=
0;<BR> }<BR> DIR_OUT;<BR> TempData
= (TempData << 1) |
TempBit;<BR> SCL_0;<BR> }<BR> Delay(5);<BR> return(TempData);<BR>}<BR><BR>void
ReceiveAck(void)<BR>{<BR> unsigned char i =
0;<BR> SCL_1;<BR> Delay(5);<BR> DIR_IN;<BR> while
((SDA_IN == 0x01 /*sda==1*/) && (i <
255)/*调试方便,可以不要*/)<BR> {<BR> i++;<BR> }<BR> DIR_OUT;<BR> SCL_0;<BR> Delay(5);<BR>}<BR><BR>void
Acknowledge(void)<BR>{<BR> SCL_0;<BR> Delay(5);<BR> DIR_OUT;<BR> SDA_0;<BR> SCL_1;<BR> Delay(5);<BR> SCL_0;<BR>}<BR><BR>unsigned
int ReadWord(unsigned char unit/*address*/)<BR>{<BR> unsigned
char HighData = 0;<BR> unsigned char LowData =
0;<BR> unsigned int TempData =
0;<BR> Start();<BR> WriteByte(0xa0);<BR> ReceiveAck();<BR> WriteByte(unit);<BR> ReceiveAck();<BR> Start();<BR> WriteByte(0xa1);<BR> ReceiveAck();<BR> LowData =
ReadByte();<BR> Acknowledge();<BR> HighData =
ReadByte();<BR> Stop();<BR> TempData = (HighData
<< 8) +
LowData;<BR> Delay(1000);<BR> return(TempData);<BR>}<BR><BR>void
ReadWords(unsigned char unit/*address*/)<BR>{<BR> unsigned
char i;<BR> unsigned char HighData =
0;<BR> unsigned char LowData =
0;<BR> unsigned int TempData =
0;<BR> Start();<BR> WriteByte(0xa0);<BR> ReceiveAck();<BR> WriteByte(unit);<BR> ReceiveAck();<BR> Start();<BR> WriteByte(0xa1);<BR> ReceiveAck();<BR> for
(i=0; i<49;
i++)<BR> {<BR> LowData =
ReadByte();<BR> Acknowledge();<BR> HighData
=
ReadByte();<BR> Acknowledge();<BR> a[i]=
(HighData << 8) +
LowData;<BR> }<BR> LowData =
ReadByte();<BR> Acknowledge();<BR> HighData =
ReadByte();<BR> Stop();<BR> a[49] = (HighData
<< 8) + LowData;<BR> Delay(1000);<BR>}<BR><BR>void
WriteWord(unsigned char unit/*address*/, unsigned int
WriteData)<BR>{<BR> unsigned char LowData =
0;<BR> unsigned char HighData =
0;<BR> LowData = (unsigned
char)WriteData;<BR> HighData = (unsigned char)(WriteData
>>
8);<BR> Start();<BR> WriteByte(0xa0);<BR> ReceiveAck();<BR> WriteByte(unit);<BR> ReceiveAck();<BR> WriteByte(LowData);<BR> ReceiveAck();<BR> WriteByte(HighData);<BR> ReceiveAck();<BR> Stop();<BR> Delay(2000);<BR>}<BR><BR><BR>(文章推荐人:老五)
<BR><BR></BLOCKQUOTE></TD></TR>
<TR>
<TD width="100%">
<P align=center> </P></TD></TR></TBODY></TABLE><A
href="http://www.daxia.com/bbs" target=_blank>返回大虾论坛</A> <A
href="http://www.daxia.com/" target=_blank>返回首页</A>
<SCRIPT language=JavaScript src="大虾电子-通用MSP430—I2C程序(清风徐徐).files/stat.htm"
charset=gb2312></SCRIPT>
</CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -