试用单片机编制程序实现1+2+3+……+100=?

怎么编制啊?我急需要答案,谢谢

第1个回答  2008-11-06
说个大体的思路吧
char i;
int max=0;
for(i=1,i<=100,i++)
{
max +=i;
}
第2个回答  2008-11-07
MOV R0,#01H
MOV R7,#00H
MOV R6,#00H
LOOP:CLR C
MOV A,R0
ADD A,R6
MOV R6,A
CLR A
ADDC A,R7
MOV R7,A
INC R0
CJNE R0,#65H,LOOP
NOP
END
结果放高位放在R7和低位放在R6中,形式为16进制。
第3个回答  2008-11-07
给你一个个人编写的代码(含有汇编编程和C编程)

汇编需要注意:我在汇编的时候没有用到CJNZ的语句,是因为考虑到单片机有可能在比较恶劣的环境下使用,如果PC跑飞了(这里不考虑看门狗),会一直在循环中,我是使用了比较小于,即使PC跑飞,总有个时刻会退出循环.

汇编代码如下:
H_Byte EQU R4 ;保存结果,高8位
L_Byte EQU R5 ;保存结果,低8位
Max_Adder EQU 100 ;最大的加数

ORG 0000H
LJMP MAIN
ORG 0030H

MAIN:
MOV R2,#1 ;加数
MOV R4,#0
MOV R5,#0

START:
MOV A,#Max_Adder
CLR CY
SUBB A,R2
JC RESULT
MOV A,R2
ADD A,L_Byte
MOV L_Byte,A ;保存低位
MOV A,H_Byte
ADDC A,#0
MOV H_Byte,A ;保存高位
INC R2
JMP START

RESULT:
SJMP $ ;只用于调试
END

C语言代码如下:
#include "at89x51.h" //由于你这里只是计算结果,所以这行代码可以去掉
void main(void)
{
unsigned char i=1;
unsigned int result=0;
for(i=1;i<=100;i++)
result+=i;
while(1); //这里用于调试
}

以上程序都调试通过了.
第4个回答  2008-11-06
是不是用C语言编制呀?本回答被网友采纳