C语言循环加法,使用Embest IDE 编写简单的C语言程序,嵌入式系统
1、 实验内容或题目
利用命令脚本初始化栈指针,并使用c 语言完成延时函数。
(1) 执行实验指导书3.5工程程序,写出程序实现的功能,程序变量i,j的变化过程
(2) 写出一个C程序,实现循环加法的功能。
定义整型数组S[8]={1,2,3,4,5,6,7,8},执行8次循环加法运算,结果存放回s[8]数组。
2、实验目的与要求
学会使用Embest IDE 编写简单的C 语言程序并进行调试;
学会编写和使用命令脚本文件;
掌握通过memory/register/watch/variable 窗口分析判断运行结果。
3、 实验步骤与源程序
⑴ 实验步骤
1) 参考前面实验创建新的工程(工程名为C1);
2) 按照参考程序,编写源文件C1.c 和C1.cs,并把它们加入工程里面。C1.cs 加在工程根目录即可。
3) 参考前面例子进行标准的设置,其中需要注意的是,在调试Debug 对话框设置的时候,增加连接后自动执行脚本文件:
4) 参考前面实验步骤进行编译;
5) 下载,打开Memory/Register/Watch/Variable 窗口,单步执行,通过memory/register/watch/variable
窗口分析判断结果,在watch 框中输入要观察变量I 和变量J 的值,并记录下来。特别注意在
variable 窗口观察变量I 的变化并记录下来;
6) 结合实验内容和相关资料,观察程序运行,通过实验;
7) 理解和掌握实验后,完成实验练习题。
⑵ 源代码
题目一:
0x00008000 mov ip, sp
0x00008004 stmdb sp!, {fp, ip, lr, pc}
0x00008008 sub fp, ip, #4
0x0000800c sub sp, sp, #4
0x00008010 mov r3, #5
0x00008014 str r3, [fp, -#16]
0x00008018 ldr r0, [fp, -#16]
0x0000801c bl 0x8024
0x00008020 b 0x8018
delay :
题目二:
_main()
{int s[8]={1,2,3,4,5,6,7,8};
int i,j;
int sum=0;
for(i=0;i<8;i++)
{for(j=0;j<8;j++)
{sum+=s[j];
}
s[i]=sum;
//printf("%d",s[i]);
}
}
4、 测试数据与实验结果(可以抓图粘贴)
1.CPU临时停止,完成延时
nTime 0x5 0x5 0x5 0x5……0x5 0x5 0x5……0x5 ………
i 0x8034 0x5 0x5 0x0……0x0 0x1 0x1……0x1 ………
j 0x8020 0xa 0x0 0x1……0x9 0xa 0x0……0x9 ………
2.实现循环加法
s 0xfd0
s[0] 0x24
s[1] 0x6b
s[2] 0x11b
s[3] 0x2e3
s[4] 0x78a
s[5] 0x13b6
s[6] 0x3392
s[7] 0x86f9
i 0x8
j 0x8
sum 0x86f9
5、 结果分析与实验体会
此次是第二次嵌入式系统上机实验,主要的做的是C程序实验。第一题是实现CPU临时停止,完成延时。第一题并不难,将原程序打开运行下,便能得出结果。其中,我们观察i,j的变化,当在程序运行到循环中时,需要按step into进入后续程序,刚开始并不了解,后来再老师的指导下完成了验证。第二题是编写一个简单的C程序,实现循环加法功能,程序还算简单,但有许多细小之处值得注意。如首先main前需加个下划线之类的。
总之,本次实验完成并不困难。学校为我们提供了实验仪器,我们需充分利用。当然,我们还需在以后的实验中更加努力。219