<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
		<id>http:///https//wiki.microduino.cn/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LJD</id>
		<title>Microduino Wikipedia - 用户贡献 [zh-cn]</title>
		<link rel="self" type="application/atom+xml" href="http:///https//wiki.microduino.cn/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LJD"/>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/LJD"/>
		<updated>2026-04-20T18:34:44Z</updated>
		<subtitle>用户贡献</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4163</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4163"/>
				<updated>2014-10-03T15:05:44Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset_Modify.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the print testNumber  will be 7 always&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); &lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位（实现该实验时，可不接Microduino-USBTTL)。&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4162</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4162"/>
				<updated>2014-10-03T15:03:39Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset_Modify.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the print testNumber  will be 7 always&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); &lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位（实现该实验时，可不接Microduino-USBTTL。&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4161</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4161"/>
				<updated>2014-10-03T15:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset_Modify.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the print testNumber  will be 7 always&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); &lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位（实现该实验时，可不接Microduino-USBTTL。&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4160</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4160"/>
				<updated>2014-10-03T14:57:27Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset_Modify.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the print testNumber  will be 7 always&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); &lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位。（实现该实验时，可不接Microduino-USBTTL）&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4159</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4159"/>
				<updated>2014-10-03T14:54:58Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset_Modify.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the print testNumber  will be 7 always&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); &lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位。（实现该实验时，可不接Microduino-USBTTL）&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。&lt;br /&gt;
BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的&lt;br /&gt;
闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:IO_Reset_Modify.jpg&amp;diff=4158</id>
		<title>文件:IO Reset Modify.jpg</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:IO_Reset_Modify.jpg&amp;diff=4158"/>
				<updated>2014-10-03T14:51:55Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4157</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4157"/>
				<updated>2014-10-03T14:51:02Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset_Modify.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the testNumber  will be 7 always。 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); 。&lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位。（实现该实验时，可不接Microduino-USBTTL）&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。&lt;br /&gt;
BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的&lt;br /&gt;
闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:Fuse_and_lock_wizard.jpg&amp;diff=4156</id>
		<title>文件:Fuse and lock wizard.jpg</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:Fuse_and_lock_wizard.jpg&amp;diff=4156"/>
				<updated>2014-10-03T14:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:WDT_Reset.jpg&amp;diff=4155</id>
		<title>文件:WDT Reset.jpg</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:WDT_Reset.jpg&amp;diff=4155"/>
				<updated>2014-10-03T14:48:56Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:FunctionPointer_Call.jpg&amp;diff=4154</id>
		<title>文件:FunctionPointer Call.jpg</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:FunctionPointer_Call.jpg&amp;diff=4154"/>
				<updated>2014-10-03T14:48:26Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:PCtoZero_Reset.jpg&amp;diff=4153</id>
		<title>文件:PCtoZero Reset.jpg</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:PCtoZero_Reset.jpg&amp;diff=4153"/>
				<updated>2014-10-03T14:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4152</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4152"/>
				<updated>2014-10-03T14:46:27Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1个||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the testNumber  will be 7 always。 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); 。&lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位。（实现该实验时，可不接Microduino-USBTTL）&lt;br /&gt;
Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极&lt;br /&gt;
接到D13。&lt;br /&gt;
BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的&lt;br /&gt;
闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考[http://www.atmel.com/Images/doc8161.pdf   328 Datasheet]中的46至49页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:IO_Reset.jpg&amp;diff=4151</id>
		<title>文件:IO Reset.jpg</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E6%96%87%E4%BB%B6:IO_Reset.jpg&amp;diff=4151"/>
				<updated>2014-10-03T14:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4150</id>
		<title>第三十三课--Microduino Reset/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%B8%89%E5%8D%81%E4%B8%89%E8%AF%BE--Microduino_Reset/zh&amp;diff=4150"/>
				<updated>2014-10-03T14:16:11Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：Created page with &amp;quot;Microduino Reset  {| style=&amp;quot;width: 800px;&amp;quot; |- | ==目的== 本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。 ==设备== *'''Microd...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Microduino Reset &lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程讲解了Microduino 复位的相关知识，希望对用到的读者有些帮助。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|可调电源||1||0-30V电压可调。&lt;br /&gt;
|-&lt;br /&gt;
|万用表 ||1个||胜利仪表 VC890+。&lt;br /&gt;
|-&lt;br /&gt;
|电阻 100欧姆 ||1个||LED 限流。&lt;br /&gt;
|-&lt;br /&gt;
|LED 白发红 ||1个||指示。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
*实验一：Microduino的D2用导线直连到RST引脚，程序中通过D2口置低电平实现Reset。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: IO_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
*实验二：通过PC（程序计数器）指针定位到地址0处实现重启。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// use  this  method ,when  reset, bootloader area will not be  performed. &lt;br /&gt;
void(* myReset)(void)=0;//myReset 是一个指向函数的指针变量&lt;br /&gt;
int testNumber=9;&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  testNumber=7;&lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
Serial.println(testNumber);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myReset();//if we call setup(); directly , the testNumber  will be 7 always。 &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: PCtoZero_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再扩展一下，其实通过函数指针（函数指针定义时需匹配函数返回值类型，函数参数类型），可以实现任意函数的调用。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void(* myCall)(void)=myTest;//函数指针myCall指向myTest函数&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{  &lt;br /&gt;
  Serial.println(&amp;quot;This is loop function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
  myCall();//the same as direcly call myTest(); 。&lt;br /&gt;
}&lt;br /&gt;
void myTest(void)&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;This is myTest function print&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: functionPointer_Call.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
*实验三：通过看门狗，实现Microduino的复位。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  Serial.println(&amp;quot;This is  setup  function  print&amp;quot;);&lt;br /&gt;
  WDTCSR |= (1&amp;lt;&amp;lt;WDCE) | (1&amp;lt;&amp;lt;WDE);//if we want to modify the WDT time,this line is needed.&lt;br /&gt;
  WDTCSR =(1&amp;lt;&amp;lt;WDE) |(1&amp;lt;&amp;lt;WDP2) |  (1&amp;lt;&amp;lt;WDP1);// please refer the  328 datasheet   (WDP3~0 ) 0 1 1 0 -- cycles 1.0 s&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  //while(1);&lt;br /&gt;
  delay(1200);//change this value (800 for example) to have a  try&lt;br /&gt;
  asm(&amp;quot;wdr&amp;quot;);   //feed&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File: WDT_Reset.jpg|600px|center|thumb]]&lt;br /&gt;
&lt;br /&gt;
*实验四：不使用USB线供电,通过可调电源调低电压使BOD(Brown-out Reset 低压重启)电路动作，实现Microduino的复位。（实现该实验时，可不接Microduino-USBTTL）&lt;br /&gt;
 Microduino-core的5V引脚连接可调电源+，GND连接可调电源的- （请注意：可调电源初始电压不应超过5V）。Microduino-core的D2通过100Ω电阻串接红色led，led的正极接到D13。&lt;br /&gt;
BOD的复位电压由熔丝位决定，程序运行过程中不可更改。下图是笔者用智峰软件配合USBasp读出的Microduino熔丝位，很明显，BOD的复位电压设定为2.7V。通过观察LED的闪烁情况，用胜利VC890C+万用表实测复位电压为2.76V。&lt;br /&gt;
[[File: fuse  and lock  wizard.jpg|600px|center|thumb]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  pinMode(2,OUTPUT);&lt;br /&gt;
  digitalWrite(2,LOW);//D2 connect  the led negative. &lt;br /&gt;
  pinMode(13,OUTPUT);&lt;br /&gt;
  for(int i=0;i&amp;lt;5;i++)&lt;br /&gt;
  {&lt;br /&gt;
	digitalWrite(13,HIGH);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
	digitalWrite(13,LOW);&lt;br /&gt;
	delay(1000);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  digitalWrite(13,HIGH);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  digitalWrite(13,LOW);&lt;br /&gt;
  delay(100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
下载程序，观察不同的输出结果。对比不同实验以加深对Reset理解。&lt;br /&gt;
==结果==&lt;br /&gt;
该示例展示了Microduino的几种不同复位方法，读者可根据需求灵活运用。同时该示例未提及上电复位，实际上328芯片每次得电时都经历了上电复位的过程。Reset引脚上电容电阻二极管以及复位按键的设计读者可参考[http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf  Arduino 官网提供的UNO Rev3原理图] 。读者亦可参考328  Datasheet中的第46页，有上电复位以及其它复位方式的时序图。&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	<entry>
		<id>https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%BA%94%E8%AF%BE--Microduino%E4%B8%8E%E8%BF%90%E7%AE%97%E6%94%BE%E5%A4%A7%E5%99%A8--%E5%8F%8D%E5%90%91%E6%AF%94%E4%BE%8B%E8%BF%90%E7%AE%97/zh&amp;diff=4149</id>
		<title>第二十五课--Microduino与运算放大器--反向比例运算/zh</title>
		<link rel="alternate" type="text/html" href="https//wiki.microduino.cn/index.php?title=%E7%AC%AC%E4%BA%8C%E5%8D%81%E4%BA%94%E8%AF%BE--Microduino%E4%B8%8E%E8%BF%90%E7%AE%97%E6%94%BE%E5%A4%A7%E5%99%A8--%E5%8F%8D%E5%90%91%E6%AF%94%E4%BE%8B%E8%BF%90%E7%AE%97/zh&amp;diff=4149"/>
				<updated>2014-10-03T14:04:52Z</updated>
		
		<summary type="html">&lt;p&gt;LJD：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Language|Lesson_25--Microduino &amp;amp; Operational Amplifier-- Inverting Scaling Operation}}&lt;br /&gt;
Microduino与运算放大器--反向比例运算&lt;br /&gt;
{| style=&amp;quot;width: 800px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
==目的==&lt;br /&gt;
本教程提供了运算放大器的基础知识，该示例为反向比例运算电路。通过更改R1，R2，R3，R4的阻值，观察输出结果，理解方向比例运算电路的使用方法。&lt;br /&gt;
==设备==&lt;br /&gt;
*'''[[Microduino-Core]]'''&lt;br /&gt;
Microduino-Core 是以 Atmel ATmega328P为核心的8位单片机开发核心板，是一个开源的、与 Arduino UNO 兼容的控制器模块。&lt;br /&gt;
&lt;br /&gt;
*'''[[Microduino-USBTTL]]'''&lt;br /&gt;
下载程序模块，可直接与 Microduino-Core 或者Microduino-Core+ 相连，让他们与计算机通讯。它的下载接口用的是MicUSB，这也是Microduino小巧的一部分。Microduino大小与一枚一元硬币差不多大。下载线与绝大多数智能手机usb数据线是一样的，方便实用。&lt;br /&gt;
&lt;br /&gt;
*其他硬件设备&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|相关硬件||数量||功能&lt;br /&gt;
|-&lt;br /&gt;
|LM358||1个||常用双路运算放大器，可方便实现数学运算电路。&lt;br /&gt;
|-&lt;br /&gt;
|ICL7660||1个||负压产生芯片。&lt;br /&gt;
|-&lt;br /&gt;
|10K电阻||2个||更改相关电阻值，可以得到不同的输出电压。&lt;br /&gt;
|-&lt;br /&gt;
|5.1K电阻||1个||更改相关电阻值，可以得到不同的输出电压。&lt;br /&gt;
|-&lt;br /&gt;
|20K电阻||1个||更改相关电阻值，可以得到不同的输出电压。&lt;br /&gt;
|-&lt;br /&gt;
|10uf 16V电容 ||2个||与芯片ICL7660相连，用于产生-5V电压。本示例采用的是钽电容，电解电容也可以的。                 &lt;br /&gt;
|-                 &lt;br /&gt;
|万用表 ||1个||测量输出电压。本示例的Vout-pin1的负压值可由万用表测得。&lt;br /&gt;
|-&lt;br /&gt;
|干电池 ||1节||本示例用作输入电压Vin。&lt;br /&gt;
|-&lt;br /&gt;
|USB数据连接线 ||1条||连通Microduino模块与计算机。&lt;br /&gt;
|-&lt;br /&gt;
|面包板 ||1块 ||各个元器件汇聚于此。&lt;br /&gt;
|-&lt;br /&gt;
|面包板跳线 ||1盒||电气连接线。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ICL7660===&lt;br /&gt;
ICL7660是我们常见的负压产生芯片。工作原理见下图：S1、S3是联动开关，S2、S4是联动开关，联动开关也就是同时开或同时关的开关。半个周期内，S1、S3是闭合的，S2、S4是断开的，这时，Vin的电压给电容C1充电。在另外的半个周期内，S2、S4是闭合的，S1、S3是断开的，这时C1给C2充电。又因为C2充入的电为上正下负，C2的正极端接GND,所以表征在C2的负极端的电位值则为负值。&lt;br /&gt;
[[File: 7660sch.jpg|600px|center|thumb]]&lt;br /&gt;
ICL7660文档下载：'''[[File:ICL7660.pdf]]'''&lt;br /&gt;
&lt;br /&gt;
==实验原理图==&lt;br /&gt;
[[File:358ProtelSchInvert.jpg|600px|center|thumb]]&lt;br /&gt;
[[File:358FritzInvert.jpg|600px|center|thumb]]&lt;br /&gt;
该示例中358为双电源供电(正负5伏)方式。358的1脚输出电压Vout-pin1=-Vin*（R2/R1），如果没有-5V电源的引入，358芯片的1脚是不会有负压输出的。该电压值可由万用表直流电压档测得。Vout-pin7=-Vout-pin1(R4/R3)，7脚输出电压为正值，该电压值由Microduino的A0口识别，arduinoIDE自带的串口监视器可输出。用万用表也可测试7脚的输出电压。该示例中2脚与3脚的对地电压均为0V，对比同向比例运算电路，参考[http://%E7%AC%AC%E4%BA%8C%E5%8D%81%E5%9B%9B%E8%AF%BE--Microduino%E4%B8%8E%E8%BF%90%E7%AE%97%E6%94%BE%E5%A4%A7%E5%99%A8--%E5%90%8C%E5%90%91%E6%AF%94%E4%BE%8B%E8%BF%90%E7%AE%97/zh 同向比例运算]&lt;br /&gt;
2脚与3脚的对地电压并不是0V，使用不同的运算电路时对运放输入脚的电压我们也应有所了解。&lt;br /&gt;
&lt;br /&gt;
==程序==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
///A0  connect  amp358_7  output&lt;br /&gt;
///A1  connect  single battery  output&lt;br /&gt;
int  anaValueSingleBa;  //single battery  value  map(0--1023)&lt;br /&gt;
int  anaValueAmp;  //amp  value   map(0--1023)&lt;br /&gt;
float anaVoltageSingleBa;  //single battery  voltage&lt;br /&gt;
float anaVoltageAmp;  //amp  output  voltage&lt;br /&gt;
void  setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
 anaValueSingleBa=analogRead(A1);&lt;br /&gt;
 anaVoltageSingleBa=anaValueSingleBa/1023.0*5;&lt;br /&gt;
 Serial.print(&amp;quot;Single battery voltage  is  &amp;quot;);&lt;br /&gt;
 Serial.print(anaVoltageSingleBa);&lt;br /&gt;
 Serial.println(&amp;quot;V&amp;quot;);&lt;br /&gt;
 delay(1000);&lt;br /&gt;
 anaValueAmp=analogRead(A0);&lt;br /&gt;
 anaVoltageAmp=anaValueAmp/1023.0*5;&lt;br /&gt;
 Serial.print(&amp;quot;Amp358_7  output  voltage  is  &amp;quot;);&lt;br /&gt;
 Serial.print(anaVoltageAmp);&lt;br /&gt;
 Serial.println(&amp;quot;V&amp;quot;);&lt;br /&gt;
 delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==调试==&lt;br /&gt;
[[File: realConnect358Invert.jpg|600px|center|thumb]]&lt;br /&gt;
*参考上图用导线连接完毕并确认无误。&lt;br /&gt;
*把程序复制到arduinoIDE中。&lt;br /&gt;
*编译程序，选择正确的板卡与相应串口。&lt;br /&gt;
*点击Upload，下载完毕后打开arduinoIDE自带的串口监视器，观察结果。Vout-pin1的输出电压可由万用表测得。&lt;br /&gt;
[[File: 358invertComOutput.jpg|600px|center|thumb]]&lt;br /&gt;
*更改该电路用到电阻值，可观察到串口监视器输出电压值的变化。例如R2=2K,其它电阻值不变，观察输出电压，并与公式比对。&lt;br /&gt;
&lt;br /&gt;
==结果==&lt;br /&gt;
按照原理图连接好电路。程序下载后，可在arduino IDE自带的串口监视器中观察输出电压。分析实验数据。&lt;br /&gt;
&lt;br /&gt;
==视频==&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LJD</name></author>	</entry>

	</feed>