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

📄 c51循环语句.htm

📁 单片机教程 用c语言实现编程 可以大大缩短我们的开发周期
💻 HTM
📖 第 1 页 / 共 3 页
字号:
{
	try{
		clipboardData.setData('Text',url);
		showAlert('已经把该社团网址复制到系统剪贴板,您可以使用(Ctrl+V或鼠标右键)粘贴功能,通过其他软件记录或发送给您的朋友。')
	}
	catch(e){}
}
function add_favorite(uid, url, name)
{
	window.open("/personal/favorite/add.php?member_id="+uid+"&url="+url+"&name="+name,'_blank','width=400,height=220,toolbar=0,locationbar=0,menubar=0,statbar=0'); 
	return false;
}

// 提示登录
function alertlert_login()
{
	showAlert('对不起,您目前没有权限,请先登录!');
	document.login_form1.account.focus();
}


//申请加入社团
function con_join(con_gid)
{
	showConfirm("您确认加入本社团吗?","window.location.href='/league/apply.php?g_id="+con_gid+"';","");
}


//退出本社团
function con_quiet(con_gid,con_uid)
{
	showConfirm("您确认退出本社团吗?","window.location.href='/league/member/quiet_member.php?g_id="+con_gid+"&q_uid="+con_uid+"';","");
}

</SCRIPT>
<!-- 回复框 -->
<DIV id=background style="DISPLAY: none"></DIV>
<DIV id=postbox 
style="DISPLAY: none; Z-INDEX: 50; LEFT: 769px; WIDTH: 600px; POSITION: absolute; TOP: 271px">
<FORM name=reply_comment action=/league/comment/index.php?gid=514465 method=post 
target=hidden_frame><INPUT id=act type=hidden value=add name=act> <INPUT id=r_id 
type=hidden name=r_id> <INPUT id=t_id type=hidden name=t_id> <INPUT id=f_uid 
type=hidden name=f_uid> 
<TABLE cellSpacing=0 cellPadding=0 width="70%" border=0>
  <TBODY>
  <TR>
    <TD height=13>&nbsp;</TD></TR>
  <TR>
    <TD class=box_common height=26>&nbsp;<SPAN 
      class=font_common_title>回复评论</SPAN></TD></TR></TBODY></TABLE>
<TABLE class=box_common01 cellSpacing=0 cellPadding=0 width="70%">
  <TBODY>
  <TR>
    <TD>
      <TABLE cellSpacing=8 cellPadding=0 width="100%" bgColor=#ffffff 
        border=0><TBODY>
        <TR>
          <TD class=font_common vAlign=top align=right height=63>内容:</TD>
          <TD class=font_common vAlign=top><TEXTAREA class=input_box01 id=input_area name=input_area rows=6 cols=48></TEXTAREA></TD></TR>
        <TR>
          <TD class=font_common vAlign=top align=right width="15%">原文:</TD>
          <TD class=font_common style="LINE-HEIGHT: 18px" vAlign=top 
            width="85%"><SPAN class=gray id=past_type></SPAN></TD></TR>
        <TR>
          <TD class=font_common vAlign=top align=middle colSpan=2><INPUT class=btn01 onclick=javascript:hidden_reply();submit_post(document.reply_comment); type=button value=发表 name=queding> 
            &nbsp;&nbsp; <INPUT class=btn01 onclick=hidden_reply(); type=reset value=取消> 
        </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM></DIV><!-- 回复框 -->
<DIV id=mainBox>
<DIV id=mainBoxBg>
<TABLE class=module_title cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD class=corner_left></TD>
    <TD class=corner_center><A 
      href="http://www.5jia1.com/league/?gid=514465">首页</A>&nbsp;&gt;&nbsp;<A 
      href="http://www.5jia1.com/league/blog/blog_index.php?gid=514465">社团文集</A>&nbsp;&gt;&nbsp;<A 
      href="http://www.5jia1.com/league/blog/show_comm.php?bid=361540">第十三课 
      C51循环语句</A></TD>
    <TD class=corner_right></TD></TR></TBODY></TABLE>
<DIV class=module_content>
<DIV class=module_content_line>
<DIV class=bg>
<TABLE cellSpacing=10 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD align=middle>
      <TABLE class=box_common cellSpacing=1 cellPadding=5 width="100%" 
        border=0><TBODY>
        <TR class=box_common_title>
          <TD colSpan=2>
            <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
              <TBODY>
              <TR>
                <TD width="35%"><B>第十三课 C51循环语句</B></TD>
                <TD align=right width="65%">作者: <A 
                  href="http://www.5jia1.com/personal/?member_id=505887" 
                  target=_blank>张文俊</A> &nbsp;&nbsp;2007-08-15 
                  09:09:08&nbsp;&nbsp; </TD></TR></TBODY></TABLE></TD></TR>
        <TR class=box_content>
          <TD vAlign=top align=middle width="10%"><A 
            href="http://www.5jia1.com/personal/?member_id=505887" 
            target=_blank><IMG class=box01 height=98 
            src="13.files/s_0_personal_photo_505887.jpg" width=98 vspace=5 
            border=0></A><BR><IMG height=14 src="13.files/icon_boy.gif" width=14 
            border=0>&nbsp; <A 
            href="http://www.5jia1.com/personal/?member_id=505887" 
            target=_blank>张文俊</A> </TD>
          <TD>
            <TABLE class="font_content  autowrap" cellSpacing=12 cellPadding=0 
            width="100%" border=0>
              <TBODY>
              <TR>
                <TD class=line_h20 style="WIDTH: 790px">
                  <DIV style="OVERFLOW-X: auto; WIDTH: 100%">
                  <TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" 
                  cellSpacing=0 cellPadding=0 width="100%" border=0>
                    <TBODY>
                    <TR>
                      <TH vAlign=center align=middle height=32>
                        <H1>第十三课 C51循环语句</H1></TH></TR>
                    <TR>
                      <TD align=middle bgColor=#f7f7f7 
                        height=25>作者:佚名&nbsp;&nbsp;&nbsp;&nbsp;来源:本站原创&nbsp;&nbsp;&nbsp;&nbsp;点击数: 
                        108&nbsp;&nbsp;&nbsp;更新时间:2007年07月14日&nbsp;</TD></TR></TBODY></TABLE>
                  <P align=left>循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作。如一个 12M 
                  的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 1000 次空语句 
                  才能达到延时的目的(当然能使用定时器来做,这里就不讨论),如果是写 1000 条空语 
                  句那是多么麻烦的事情,再者就是要占用很多的存储空间。我们能知道这 1000 条空语句, 无非就是一条空语句重复执行 1000 
                  次,因此我们就能用循环语句去写,这样不但使程序</P>
                  <P>结构清晰明了,而且使其编译的效率大大的提高。在&nbsp; C &nbsp;语言中构成循环控制的语句有 
                  while,do-while,for 和 goto 语句。同样都是起到循环作用,但具体的作用和使用方法又大不一 
                  样。我们具体来看看。</P>
                  <P>goto 语句</P>
                  <P>这个语句在很多高级语言中都会有,记得小时候用 BASIC 时就很喜欢用这个语句。它是 
                  一个无条件的转向语句,只要执行到这个语句,程序指针就会跳转到 goto 后的标号所在的 程序段。它的语法如下:</P>
                  <P>goto &nbsp;语句标号; 其中的语句标号为一个带冒号的标识符。示例如下</P>
                  <P>void &nbsp;main(void)</P>
                  <P>{</P>
                  <P>unsigned &nbsp;char &nbsp;a;</P>
                  <P>start: &nbsp;a++;</P>
                  <P>if &nbsp;(a==10) &nbsp;goto &nbsp;end;</P>
                  <P>goto &nbsp;start;</P>
                  <P>end:;</P>
                  <P>}</P>
                  <P>上面一段程序只是说明一下 goto 的使用方法,实际编写很少使用这样的手法。这段程序的意思</P>
                  <P>是在程序开始处用标识符“start:”标识,表示程序这是程序的开始,“end:”标识程序的 
                  结束,标识符的定义应遵循前面所讲的标识符定义原则,不能用 C 的关键字也不能和其它变 
                  量和函数名相同,不然就会出错了。程序执行 a++,a 的值加 1,当 a 等于 10 时程序会跳到 end 
                  标识处结束程序,不然跳回到 start 标识处继续 a++,直到 a 等于 10。上面的示例说明 goto 
                  不但能无条件的转向,而且能和 if 语句构成一个循环结构,这些在 C 程序员的程 序中都不太常见,常见的 goto 
                  语句使用方法是用它来跳出多重循环,不过它只能从内层循环 跳到外层循环,不能从外层循环跳到内层循环。在下面说到 for 
                  循环语句时再略为提一提。 为何大多数 C 程序员都不喜欢用 goto 语句?那是因为过多的使用它时会程序结构不清晰,</P>
                  <P>过多的跳转就使程序又回到了汇编的编程风格,使程序失去了 C 的模块化的优点。</P>
                  <P>while 语句</P>
                  <P>while &nbsp;语句的意思很不难理解,在英语中它的意思是“当…的时候…”,在这里我们可 
                  以理解为“当条件为真的时候就执行后面的语句”,它的语法如下:</P>
                  <P>while &nbsp;(条件表达式) &nbsp;语句;</P>
                  <P>使用 while 语句时要注意当条件表达式为真时,它才执行后面的语句,执行完后再次回</P>
                  <P>到 while 执行条件判断,为真时重复执行语句,为假时退出循环体。当条件一开始就为假时, 那么 while 
                  后面的循环体(语句或复合语句)将一次都不执行就退出循环。在调试程序时要</P>
                  <P align=left><BR style="PAGE-BREAK-BEFORE: auto" 
                  clear=all>&nbsp;</P>
                  <DIV class=Section54>
                  <P>注意 while 的判断条件不能为假而造成的死循环,调试时适当的在 while 处加入断点,也许 
                  会使你的调试工作更加顺利。当然有时会使用到死循环来等待中断或 IO 信号等,如在第一 篇时我们就用了 
                  while(1)来不停的输出“Hello&nbsp; World!”。下面的例子是显示从 1 到 10 的累 
                  加和,读者能修改一下 while 中的条件看看结果会如果,从而体会一下 while 的使用方法。</P>
                  <P>#include &lt;AT89X51.H&gt;</P>
                  <P>#include &lt;stdio.h&gt;</P>
                  <P>void main(void)</P>
                  <P>{</P>
                  <P>unsigned int I = 1;</P>
                  <P>unsigned int SUM = 0; //设初值</P>
                  <P>SCON = 0x50; //串行口方式 1,允许接收</P>
                  <P>TMOD = 0x20; //定时器 1 定时方式 2</P>
                  <P>TCON = 0x40; //设定时器 1 开始计数</P>
                  <P>TH1 = 0xE8;&nbsp; &nbsp;//11.0592MHz 1200 波特率</P>
                  <P>TL1 = 0xE8; TI = 1;</P>
                  <P>TR1 = 1; //启动定时器</P>
                  <P>while(I&lt;=10)</P>
                  <P>{</P>
                  <P>SUM = I + SUM; //累加</P>
                  <P>printf ("%d SUM=%d\n",I,SUM); //显示</P>
                  <P>I++;</P>
                  <P>}</P>
                  <P>while(1); //这句是为了不让程序完后,程序指针继续向下造成程序“跑飞”</P>
                  <P>}</P>
                  <P>//最后运行结果是 SUM=55;</P>
                  <P>do &nbsp;while 语句</P>
                  <P>do while 语句能说是 while 语句的补充,while 是先判断条件是否成立再执行循环体,</P>
                  <P>而 do &nbsp;while 则是先执行循环体,再根据条件判断是否要退出循环。这样就决定了循环体无 
                  论在任何条件下都会至少被执行一次。它的语法如下:</P>
                  <P>do &nbsp;语句 &nbsp;while &nbsp;(条件表达式)</P>
                  <P>用 do &nbsp;while 怎么写上面那个例程呢?先想一想,再参考下面的程序。</P>
                  <P>#include &nbsp;&lt;AT89X51.H&gt;</P>
                  <P>#include &nbsp;&lt;stdio.h&gt;</P>
                  <P>void &nbsp;main(void)</P>
                  <P>{</P></DIV>
                  <P align=left><BR style="PAGE-BREAK-BEFORE: auto" 
                  clear=all>&nbsp;</P>
                  <DIV class=Section55>
                  <P>unsigned &nbsp;int &nbsp;I &nbsp;= &nbsp;1;</P>
                  <P>unsigned &nbsp;int &nbsp;SUM &nbsp;= &nbsp;0; 
                  &nbsp;//设初值</P>
                  <P>SCON &nbsp;= &nbsp;0x50; &nbsp;//串行口方式 1,允许接收 TMOD &nbsp;= 
                  &nbsp;0x20; &nbsp;//定时器 1 定时方式 2</P>
                  <P>TCON &nbsp;= &nbsp;0x40; &nbsp;//设定时器 1 开始计数</P>
                  <P>TH1 &nbsp;= &nbsp;0xE8; &nbsp;//11.0592MHz &nbsp;1200 波特率 
                  TL1 &nbsp;= &nbsp;0xE8;</P>
                  <P>TI &nbsp;= &nbsp;1;</P>
                  <P>TR1 &nbsp;= &nbsp;1; &nbsp;//启动定时器</P>
                  <P>do</P>
                  <P>{</P>
                  <P>SUM &nbsp;= &nbsp;I &nbsp;+ &nbsp;SUM; &nbsp;//累加</P>
                  <P>printf &nbsp;("%d &nbsp;SUM=%d\n",I,SUM); &nbsp;//显示 
                  I++;</P>
                  <P>}</P>
                  <P>while(I&lt;=10);</P>
                  <P>while(1);</P>
                  <P>}</P>
                  <P>在上面的程序看来 do &nbsp;while 语句和 while 语句似乎没有什么两样,但在实际的应用中要注</P>
                  <P>意任何 do while 的循环体一定会被执行一次。如把上面两个程序中 I 的初值设为 11,那么 
                  前一个程序不会得到显示结果,而后一个程序则会得到 SUM=11。</P>
                  <P>for &nbsp;语句</P>
                  <P>在明确循环次数的情况下,for 语句比以上说的循环语句都要方便简单。它的语法如下: for 
                  &nbsp;([初值设定表达式];[循环条件表达式];[条件更新表达式]) &nbsp;语句 中括号中的表达式是可选的,这样 
                  for 语句的变化就会很多样了。for 语句的执行:先</P>
                  <P>代入初值,再判断条件是否为真,条件满足时执行循环体并更新条件,再判断条件是否为 
                  真……直到条件为假时,退出循环。下面的例子所要实现的是和上二个例子一样的,对照着 看不难理解几个循环语句的差异。</P>
                  <P>#include &nbsp;&lt;AT89X51.H&gt;</P>
                  <P>#include &nbsp;&lt;stdio.h&gt;</P>
                  <P>void &nbsp;main(void)</P>
                  <P>{</P>
                  <P>unsigned &nbsp;int &nbsp;I;</P>
                  <P>unsigned &nbsp;int &nbsp;SUM &nbsp;= &nbsp;0; 
                  &nbsp;//设初值</P>
                  <P>SCON &nbsp;= &nbsp;0x50; &nbsp;//串行口方式 1,允许接收 TMOD &nbsp;= 
                  &nbsp;0x20; &nbsp;//定时器 1 定时方式 2</P>
                  <P>TCON &nbsp;= &nbsp;0x40; &nbsp;//设定时器 1 开始计数</P></DIV>
                  <P align=left><BR style="PAGE-BREAK-BEFORE: auto" 
                  clear=all>&nbsp;</P>
                  <DIV class=Section56>
                  <P>TH1 &nbsp;= &nbsp;0xE8; &nbsp;//11.0592MHz &nbsp;1200 波特率 
                  TL1 &nbsp;= &nbsp;0xE8;</P>
                  <P>TI &nbsp;= &nbsp;1;</P>
                  <P>TR1 &nbsp;= &nbsp;1; &nbsp;//启动定时器</P>
                  <P>for &nbsp;(I=1; &nbsp;I&lt;=10; &nbsp;I++) 
                  &nbsp;//这里能设初始值,所以变量定义时能不设</P>
                  <P>{</P>
                  <P>SUM &nbsp;= &nbsp;I &nbsp;+ &nbsp;SUM; &nbsp;//累加</P>
                  <P>printf &nbsp;("%d &nbsp;SUM=%d\n",I,SUM); &nbsp;//显示</P>
                  <P>}</P>
                  <P>while(1);</P>
                  <P>}</P>
                  <P>如果我们把程序中的 for 改成 for(; I&lt;=10; I++)这样条件的初值会变成当前 I 变量的</P>
                  <P>值。如果改成 for(;;)会怎么样呢?试试看。</P>
                  <P>continue &nbsp;语句</P>
                  <P>continue &nbsp;语句是用于中断的语句,通常使用在循环中,它的作用是结束本次循环,跳 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -