⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 通用MSP430—I2C程序(c语言源代码)
💻
字号:
<!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&nbsp;&nbsp;SCL<BR>//P3.3&nbsp;&nbsp;SDA<BR><BR>#define 
        SDA_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3OUT 
        |=&nbsp;&nbsp;BIT3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SDA 
        = 1<BR>#define SDA_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3OUT 
        &amp;=~ 
        BIT3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SDA 
        = 0<BR>#define SCL_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3OUT 
        |=&nbsp;&nbsp;BIT2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SCL 
        = 1<BR>#define SCL_0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3OUT 
        &amp;=~ 
        BIT2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SCL 
        = 0<BR>#define DIR_IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3DIR &amp;=~ 
        BIT3;&nbsp;&nbsp;SDA_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//I/O口为输入<BR>#define 
        DIR_OUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P3DIR 
        |=&nbsp;&nbsp;BIT3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//I/0口为输出<BR>#define 
        SDA_IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((P3IN &gt;&gt; 3) &amp; 
        0x01)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Read 
        SDA<BR><BR>unsigned int a[50];<BR><BR>static void Delay(unsigned int 
        n)<BR>{<BR>&nbsp;&nbsp;&nbsp;unsigned int i;<BR>&nbsp;&nbsp;&nbsp;for 
        (i=0; i&lt;n; i++) {;}<BR>}<BR><BR>void 
        Init(void)<BR>{<BR>&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SDA_1;<BR>&nbsp;&nbsp;Delay(5);<BR>}<BR><BR>void 
        Start(void)<BR>{<BR>&nbsp;&nbsp;SDA_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SDA_0;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;Delay(5);<BR>}<BR><BR>void 
        Stop(void)<BR>{<BR>&nbsp;&nbsp;SDA_0;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SDA_1;<BR>&nbsp;&nbsp;Delay(5);<BR>}<BR><BR>void 
        WriteByte(unsigned char WriteData)<BR>{<BR>&nbsp;&nbsp;unsigned char 
        i;<BR>&nbsp;&nbsp;for (i=0; i&lt;8; 
        i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
        (((WriteData &gt;&gt; 7) &amp; 0x01) == 
        0x01)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDA_1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDA_0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;WriteData 
        = WriteData &lt;&lt; 
        1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;SDA_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;Delay(5);<BR>}<BR><BR>unsigned 
        char ReadByte(void)<BR>{<BR>&nbsp;&nbsp;unsigned char 
        i;<BR>&nbsp;&nbsp;unsigned char TempBit&nbsp;&nbsp;= 
        0;<BR>&nbsp;&nbsp;unsigned char TempData = 
        0;<BR>&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SDA_1;<BR>&nbsp;&nbsp;for 
        (i=0; i&lt;8; 
        i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;&nbsp;&nbsp;DIR_IN;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
        (SDA_IN == 0x01 
        /*sda==1*/)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempBit 
        = 
        1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TempBit 
        = 
        0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;DIR_OUT;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TempData 
        = (TempData &lt;&lt; 1) | 
        TempBit;<BR>&nbsp;&nbsp;&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;return(TempData);<BR>}<BR><BR>void 
        ReceiveAck(void)<BR>{<BR>&nbsp;&nbsp;unsigned char i = 
        0;<BR>&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;DIR_IN;<BR>&nbsp;&nbsp;while 
        ((SDA_IN == 0x01 /*sda==1*/) &amp;&amp; (i &lt; 
        255)/*调试方便,可以不要*/)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;i++;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;DIR_OUT;<BR>&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;Delay(5);<BR>}<BR><BR>void 
        Acknowledge(void)<BR>{<BR>&nbsp;&nbsp;SCL_0;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;DIR_OUT;<BR>&nbsp;&nbsp;SDA_0;<BR>&nbsp;&nbsp;SCL_1;<BR>&nbsp;&nbsp;Delay(5);<BR>&nbsp;&nbsp;SCL_0;<BR>}<BR><BR>unsigned 
        int ReadWord(unsigned char unit/*address*/)<BR>{<BR>&nbsp;&nbsp;unsigned 
        char HighData = 0;<BR>&nbsp;&nbsp;unsigned char LowData&nbsp;&nbsp;= 
        0;<BR>&nbsp;&nbsp;unsigned int&nbsp;&nbsp;TempData = 
        0;<BR>&nbsp;&nbsp;Start();<BR>&nbsp;&nbsp;WriteByte(0xa0);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;WriteByte(unit);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;Start();<BR>&nbsp;&nbsp;WriteByte(0xa1);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;LowData&nbsp;&nbsp;= 
        ReadByte();<BR>&nbsp;&nbsp;Acknowledge();<BR>&nbsp;&nbsp;HighData = 
        ReadByte();<BR>&nbsp;&nbsp;Stop();<BR>&nbsp;&nbsp;TempData = (HighData 
        &lt;&lt; 8) + 
        LowData;<BR>&nbsp;&nbsp;Delay(1000);<BR>&nbsp;&nbsp;return(TempData);<BR>}<BR><BR>void 
        ReadWords(unsigned char unit/*address*/)<BR>{<BR>&nbsp;&nbsp;unsigned 
        char i;<BR>&nbsp;&nbsp;unsigned char HighData = 
        0;<BR>&nbsp;&nbsp;unsigned char LowData&nbsp;&nbsp;= 
        0;<BR>&nbsp;&nbsp;unsigned int&nbsp;&nbsp;TempData = 
        0;<BR>&nbsp;&nbsp;Start();<BR>&nbsp;&nbsp;WriteByte(0xa0);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;WriteByte(unit);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;Start();<BR>&nbsp;&nbsp;WriteByte(0xa1);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;for 
        (i=0; i&lt;49; 
        i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;LowData&nbsp;&nbsp;= 
        ReadByte();<BR>&nbsp;&nbsp;&nbsp;&nbsp;Acknowledge();<BR>&nbsp;&nbsp;&nbsp;&nbsp;HighData 
        = 
        ReadByte();<BR>&nbsp;&nbsp;&nbsp;&nbsp;Acknowledge();<BR>&nbsp;&nbsp;&nbsp;&nbsp;a[i]= 
        (HighData &lt;&lt; 8) + 
        LowData;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;LowData&nbsp;&nbsp;= 
        ReadByte();<BR>&nbsp;&nbsp;Acknowledge();<BR>&nbsp;&nbsp;HighData = 
        ReadByte();<BR>&nbsp;&nbsp;Stop();<BR>&nbsp;&nbsp;a[49] = (HighData 
        &lt;&lt; 8) + LowData;<BR>&nbsp;&nbsp;Delay(1000);<BR>}<BR><BR>void 
        WriteWord(unsigned char unit/*address*/, unsigned int 
        WriteData)<BR>{<BR>&nbsp;&nbsp;unsigned char LowData&nbsp;&nbsp;= 
        0;<BR>&nbsp;&nbsp;unsigned char HighData = 
        0;<BR>&nbsp;&nbsp;LowData&nbsp;&nbsp;= (unsigned 
        char)WriteData;<BR>&nbsp;&nbsp;HighData = (unsigned char)(WriteData 
        &gt;&gt; 
        8);<BR>&nbsp;&nbsp;Start();<BR>&nbsp;&nbsp;WriteByte(0xa0);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;WriteByte(unit);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;WriteByte(LowData);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;WriteByte(HighData);<BR>&nbsp;&nbsp;ReceiveAck();<BR>&nbsp;&nbsp;Stop();<BR>&nbsp;&nbsp;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 + -