【例5-10】 试求:sum=1+2+…+100。
【例 5-10】 试求:sum=
=1+2+…+100。
解:C51编程如下:
void main( ) //无类型主函数
{unsigned char n=1; //定义无符号字符型变量n,并赋初值
unsigned int sum=0; //定义无符号整型变量sum,并赋初值
while (n<=100) //循环条件判断:当n≤100时循环,否则跳出循环
{sum=sum+n; //循环体语句:累加求和(本语句也可写成:sum+=n;)
n++;} //修正循环变量,n=n+1,并返回循环条件判断
while(1);} //原地等待
Keil C51软件调试见例9-2。
上例语句中,有一条while (1),括号内的值为1,表示始终是真。因此,该语句为无限循环。若while (1)后面有循环体语句,则反复无限执行循环体语句;若while (1)后面无实体循环语句,则表示程序在原地踏步。while (1)是C51中一种常用的一种无限循环形式。
需要说明的是,while (1)语句并非本题程序需要,而是为了便于程序调试。若程序中没有该语句,则主程序运行结束后,临时开辟的局部变量存储单元将被释放,系统无法读到n和sum存储单元,因而无法显示。而有了while (1)语句,主程序运行尚未结束,仅在while (1)语句行无限循环、原地踏步,局部变量存储单元未被释放,因此能读到并显示n和sum的值。
以上摘自张志良编著《单片机原理与控制技术——双解汇编和C51》第3版ISBN 978-7-111-42393-5机械工业出版社
书中电路和程序设计有详细说明,程序语句条条有注解。
|