51单片机for循环(计算1加到10)问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机for循环(计算1加到10)问题?相关的知识,希望对你有一定的参考价值。

计算从1加到10,用for(i=0;i<=10;i++) sum=sum+i
循环(i、sum均为无符号char类型),用开发板(STC89C52,开发板为天津锐志)演示,P0口外接8个发光二极管,P0口输出低电平为1。
灯亮,输出高电平时为0,灯不亮。
编译好后烧入单片机,所有灯不亮,或者说亮一点点,逐渐减少i的值,i<=7时正常,i<=8、9、10时不正常。为什么?
用别的循环没有问题,如while循环等。
#include<reg51.h>
void main(void)

unsigned char sum,i;
for(i=0;i<=7;i++)
sum=i+sum;
P0=sum;

先试试显示固定数据是否正常,看电路有没有问题。另外显示时要有足够的延时,以免LED点亮时间过短,引起亮度降低。 参考技术A sun的初始值是多少,sun=sun+i之后把值赋给P0了吗。问题说清楚啊。或者把代码贴上来。追问

sum初值为0,写不写都不正常。代码已经贴上了。

追答

从你这代码来看,sum必须初始化给一个0,因为你在for循环内使用了sum的值;c语言在给变量分配内存的时候是不会清零的;

如果sum初始化清0:
没有延时函数,循环的过程中发光二极管只是一闪而过,最后p0的值定格在0x1C; 二进制中3个1;
sum初始化不清0,结果就不可而知了,说不定早就溢出了。

追问

谢谢您的 回答,请问为什么是定格在1C呢?

参考技术B 关于5G5G单机片的一些介绍,你多查查这方面的专业解释,或者找找这方面的一些情况。

python实现1加到100

‘‘‘
python实现任意数到任意数相加,如:1加到100
‘‘‘

#第一种是for循环
# def sum(start, end):
# sum = 0
# for one in range(start, end+1):
# sum = one + sum
# one += 1
# return sum
#
# result = sum(1, 100)
# print(result)

#第二种是while循环
def sum2(start,end):
i = start
sum = 0
while i <= end:
sum += i
i += 1
return sum

result = sum2(-0.01,100.0009)
print(result)

#第三种,导入模块的内建函数reduce,只能整数?
# from functools import reduce
# def sum(x, y):
# return x + y
# result = reduce(sum, range(1,101))
# print(result)

以上是关于51单片机for循环(计算1加到10)问题?的主要内容,如果未能解决你的问题,请参考以下文章

51单片机C语言程序中延时函数delay的原理是啥?

51单片机的初了解

单片机简易计算器的设计要求用2*8矩阵键盘,程序如下,求大神把下面4*4键盘程序改成2*8的,可追加分数

89c51单片机延时问题,怎么求出延时是100ms,求详细回答。

51单片机C程序怎样把LED灯从左到右点亮然后又从右到左点亮然后循环

51单片机+Proteus仿真运行不循环执行的bug