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;
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)问题?的主要内容,如果未能解决你的问题,请参考以下文章
单片机简易计算器的设计要求用2*8矩阵键盘,程序如下,求大神把下面4*4键盘程序改成2*8的,可追加分数
89c51单片机延时问题,怎么求出延时是100ms,求详细回答。