2.1
实验目的:了解ADS 1.2集成开发环境的使用方法
实验要求:
1)建立一个新
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
2)建立一个c源文件,并添加到工程中
3)设置文本编辑器支持中文
4)设置编译链接控制选项
5)编译链接工程
6)调试工程
实验步骤:
1)启动ADS,选择file new,建立一个新工程
2)建立一个新文件
3)在debugrel setting 调试入口地址
4)编译整个工程
5)调试软件
实验结果与分析
可记录R0,R1,PC,CPSR和Memory中0x40003100的变化情况
R0=0x0000 000F R1=0X0000 0000 PC=0X4000 0000
R0=0x0000 000F R1=0X0000 0000 PC=0X4000 0004
R0=0x0000 000F R1=0X0000 0008 PC=0X4000 0008
R0=0x0000 0017 R1=0X0000 0008 PC=0X4000 000C
R0=0x0000 0017 R1=0X0000 0008 PC=0X4000 0000
R0=0x0000 000F R1=0X0000 0008 PC=0X4000 0004
2.2
实验目的:
1)了解ADS1.2集成开发环境及ARMulator软件仿真
2)掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序
3)掌握指令的条件执行和使用LDR/STR指令完成存储器的访问
实验内容:
1)使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指令
吧结果写回原地址,若结果大于10,则把0写回原地址。
2)使用ADS 1.2软件仿真,单步,全速运行程序,设置断点,打开寄存器窗口监视R0,R1
的值,打开存储器观察窗口监视0x40003100的值。
实验步骤:
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址
0x4000 0000
4)编译工程,启动仿真
5)打开寄存器窗口,监视R1,R0,打开寄存器观察窗口,设置观察地址0x40003100,显示
32bit
2.3
实验目的:
1)掌握ARM数据处理指令的使用方法
2)了解ARM指令灵活的第二个操作数
实验内容:
1)使用MOV和MVN指令访问ARM通用寄存器
2)使用ADD SUB AND ORR CMP TST 等指令完成数据加减运算及逻辑运算
实验步骤
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址0x4000 0000
4)编译工程,启动仿真
5)单步运行程序,观察寄存器值的变换
4. 实验结果和分析
可单步或者设置断点记录各变化寄存器(包括PC,CPSR)的变化情况
1)
PC=0X4000 0004 R0=0X0000 000B
PC=0X0000 0008 R1=0X0000 0008
PC=0X4000 000C
PC=0X4000 0010
PC=0X4000 0014 R0=0X5FFF FFF8
PC=0X4000 0018 R5=0X5FFF FF60
PC=0X4000 001C R0=0X0000 0008
PC=0X4000 0020 R0=0X0000 0028
PC=0X4000 0024 R0=0X0000 0014
PC=0X4000 0028 R1=0X0000 000B
PC=0X4000 002C R1=0X0000 0016
PC=0X4000 0030 cpsr=Nzcr
PC=0X4000 0034
PC=0X4000 0038
PC=0X4000 003C R5=0X5FFF FFFF
PC=0X4000 0040 cpsr=nzcr
PC=0X4000 0044 R5=0X5FFF FFBF
2)
Pc=0x4000 0000
Pc=0x4000 0004 R0=0x000 00c8
Pc=0x4000 0008 R1=0x0000 00A3
Pc=0x4000 000c
Pc=0x4000 0010
Pc=0x4000 0014 R0=0X5FFF FFF8
Pc=0x4000 0018 R5=OX5FFF F4A0
Pc=0x4000 001C R0=0X0000 00A3
Pc=0x4000 0020 R0=0X0000 032F
Pc=0x4000 0024 R0=0X0000 0197
Pc=0x4000 0028 R1=0X0000 00C8
Pc=0x4000 002C R1=0X0000 0190
Pc=0x4000 0030 cpsr=ncvq
Pc=0x4000 0034
Pc=0x4000 0038 R5=0X5FFF 0000
Pc=0x4000 003C
Pc=0x4000 0040 cpsr=ncvq
Pc=0x4000 0044
2.3
实验目的:
3)掌握ARM乘法指令的使用方法
4)了解A子程序编写及调用
实验内容:
使用STMFD/LDMFD MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算X^n的值
实验步骤
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址0x4000 0000
4)编译工程,启动仿真,设置观察地址为0x40003EA0,显示size32bit,监视从
0x40003EC0起始的满递减堆栈区。
5)单步运行程序,观察寄存器值的变换
6)调试程序,更改X,n来测试程序。
4. 实验结果和分析
可单步或者设置断点记录各变化寄存器(包括PC,CPSR)的变化情况
PC=0X0000 8014 R14=0X0000 8010
PC=0X0000 8018
PC=0X0000 802C
PC=0X0000 8020
PC=0X0000 8024
PC=0X0000 8028 cpsr=nzcv
PC=0X0000 802C
PC=0X0000 8030
PC=0X0000 8034 R2=0X0000 0007 PC=0X0000 8038 R0=0X0000 0051 PC=0X0000 803C R2=0X0000 0006 PC=0X0000 8034 R0=0X0000 0209 PC=0X0000 803C R2=0X0000 0005 PC=0X0000 8034
PC=0X0000 8038 R0=0X0000 19A1 PC=0X0000 803C R2=0X0000 0004 PC=0X0000 8034
PC=0X0000 8038 R0=0X0000 56A9 PC=0X0000 803C R2=0X0000 0003 PC=0X0000 8034
PC=0X0000 8038 R0=0X0008 1BF1 PC=0X0000 803C R2=0X0000 0002 PC=0X0000 8034
2.5
1.实验目的:
学习ARM微控制器的16位thumb汇编指令的使用指令
2.实验内容:
使用thumb指令ADD.MOV.CMP.B实现1+2+3······+N
3.实验步骤:
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址0x4000 0000
4)编译工程,启动仿真
5)打开寄存器,窗口打开寄存器观察窗口
6)单步运行程序,注意执行BX R0指令前后CPSR寄存器的T位
4. 实验结果和分析
PC=0x4000302c cpsr=Nzcv
PC=0x4000302e cpsr =Nzcv
PC=0x40003030 cpsr= nzcv
PC=0x40003026 cpsr =nzcv
PC=0x40003028 cpsr =nzcv
2.6
1.实验目的:
通过实验了解如何使用ARM汇编指令实现结构化程序编程
2.实验内容:
使用ARM汇编指令实现if条件指令
使用ARM汇编指令实现for循环指令
使用ARM汇编指令实现while循环指令
使用ARM汇编指令实现do···while 循环指令
使用ARM汇编指令实现switch开关指令
3.实验步骤:
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址0x4000 0000
4)编译工程,启动仿真
5)打开寄存器,窗口打开寄存器观察窗口
6)单步运行程序,判断程序是否按
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
的程序逻辑执行
4. 实验结果和分析
For语句
ADDLD R0,R0,#1
ADDLD R2,R3,#1
BLD FOR_L1
While语句
WHILE_L CMP R0,R1
MOVLS R0,R0,LSL #1
BLS WHILE_L
do···while语句
DOWHILE_L SUBS RO,RO,#1
BNE DOWHILE_L1
Switch
AND、CMP中R2改为R4
2.7
1.实验目的:
1)掌握如何使用MRS/MSR指令实现ARM微控制器工作模式的切换
2)了解在各个工作模式下的寄存器
2.实验内容:
1)使用MRS/MSR指令切换工作模式,并初始化各种模式下堆栈指针
2)观察ARM微控制器在各种模式下寄存器的区别
3.实验步骤:
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址0x4000 0000
4)编译工程,启动仿真
5)打开寄存器,窗口打开寄存器观察窗口
6)单步运行程序,观察CPSR SPSR R13 R14 R15
4. 实验结果和分析
PC=0x40000000
PC=0x40000004
PC=0x40000008
PC=0x4000000C
PC=0x40000010
PC=0x40000014
PC=0x40000018
PC=0x4000001C
PC=0x40000020
PC=0x40000024
PC=0x40000028
PC=0x4000002C
PC=0x40000030
PC=0x40000034
PC=0x40000058 R14=0x40000038
PC=0x4000005C
PC=0x40000060
PC=0x40000064 R13=0x400030FC
PC=0x40000068 R13=0x40000000 R14=0x40000000 cpsr=nzcvqIFt_IRQ PC=0x4000006C R13=0x400031FC
PC=0x40000070 R13=0x40000000 cpsr=nzcvqIFt_FIQ
PC=0x40000074 R13=0x4000323C
PC=0x40000078 R13=0x40000000 cpsr=nzcvqIFt_Abort
PC=0x4000007C R13=0x4000313C
PC=0x40000080 R13=0x40000000 cpsr=nzcvqIFt_Ubdef
PC=0x40000084 R13=0x4000323C
PC=0x40000088 R13=0x40000000 cpsr=nzcvqIFt_Sys
PC=0x4000008C R13=0x400030FC
PC=0x40000038
PC=0x4000003C
PC=0x40000040
PC=0x40000044 cpsr=nzcvqiFt_Sys
PC=0x40000048 cpsr=nzcvqiFt_User
PC=0x4000004C
PC=0x40000050
PC=0x40000054
2.8
1.实验目的:
通过实验了解使用ADS 1.2编写C语言程序,并进行调试
2.实验内容:
1)编写一个汇编程序和一个C语言程序文件
2)C语言实现1+2+3······+N
3.实验步骤:
1)启动ADS,建立新工程
2)建立新文件
3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址0x4000 0000
4)编译工程,启动仿真
5)打开寄存器,窗口打开寄存器观察窗口
6)单步运行程序
4. 实验结果和分析
Sum=0x0000 0000
Sum=0x0000 0001
Sum=0x0000 0006
Sum=0x0000 000A
Sum=0x0000 000F
Sum=0x0000 0015
Sum=0x0000 001C
Sum=0x0000 0024
Sum=0x0000 002D
Sum=0x0000 0037
Sum=0x0000 0042
Sum=0x0000 004E
Sum=0x0000 005B
Sum=0x0000 0069
Sum=0x0000 0078
Sum=0x0000 0088
Sum=0x0000 0099
Sum=0x0000 00AB
Sum=0x0000 00BE
Sum=0x0000 00D2
Sum=0x0000 00E7
Sum=0x0000 00FD
Sum=0x0000 0114
Sum=0x0000 012C
Sum=0x0000 0145
Sum=0x0000 015F
Sum=0x0000 017A
Sum=0x0000 0196
Sum=0x0000 01B3
Sum=0x0000 01F0 Sum=0x0000 0210 Sum=0x0000 0231 Sum=0x0000 0253 Sum=0x0000 0276 Sum=0x0000 029A Sum=0x0000 02BF Sum=0x0000 02F5 Sum=0x0000 030C Sum=0x0000 0334 Sum=0x0000 035D Sum=0x0000 0387 Sum=0x0000 03B2 Sum=0x0000 03DE Sum=0x0000 040B Sum=0x0000 0439 Sum=0x0000 0468 Sum=0x0000 0498 Sum=0x0000 04C9 Sum=0x0000 04FB Sum=0x0000 052E Sum=0x0000 0562 Sum=0x0000 0597 Sum=0x0000 05CD Sum=0x0000 0604 Sum=0x0000 063C Sum=0x0000 0675 Sum=0x0000 06AF Sum=0x0000 06EA Sum=0x0000 0726 Sum=0x0000 0763 Sum=0x0000 07A1 Sum=0x0000 07E0 Sum=0x0000 0820 Sum=0x0000 0861 Sum=0x0000 08A3 Sum=0x0000 08E6 Sum=0x0000 092A Sum=0x0000 096F Sum=0x0000 09B5 Sum=0x0000 09FC Sum=0x0000 0A44 Sum=0x0000 0A8D
Sum=0x0000 0B22
Sum=0x0000 0B6E
Sum=0x0000 0C09
Sum=0x0000 0C58
Sum=0x0000 0CA8
Sum=0x0000 0CF9
Sum=0x0000 0D48
Sum=0x0000 0D9E
Sum=0x0000 0DF2
Sum=0x0000 0E47
Sum=0x0000 0E9D
Sum=0x0000 0EF4
Sum=0x0000 0F4C
Sum=0x0000 0FA5
Sum=0x0000 0FFF
Sum=0x0000 105A
Sum=0x0000 10B6
Sum=0x0000 1113
Sum=0x0000 1171
Sum=0x0000 11D0
Sum=0x0000 1230
Sum=0x0000 1291
Sum=0x0000 12F3
Sum=0x0000 1356
Sum=0x0000 13BA
2.10
1.实验目的:
(1)掌握LPC2200专用工程
模板
个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载
(2)掌握EasyJTAG仿真器的安装和使用
(3)能够在magicARM2200教学开发平台运行第一个程序
(4)熟悉LPC2000系列ARM7微控制器GPIO控制
2.实验内容
控制magicARM2200教学实验开发平台上蜂鸣器报警,先使用片外RAM(MT445W4MW16
芯片)进行调试,调试通过后将程序固化到片外FLASH(SST39VF160芯片)然后脱机使用。
3.实验程序
#include "config.h"
#define BEEPCON 0x00000080
void DelayNS (uint32 dly)
{ uint32 i;
for(;dly>0;dly--)
{
for(i=0;i<5000;i++);
}
}
int main(void)
{
PINSEL0=0x00000000;
while(1)
{
IO0SET=BEEPCON;
DelayNS(15);
IO0CLR=BEEPCON;
DelayNS(15);
}
return(0);
}
4.分析思考
哪句使蜂鸣器鸣叫哪句使蜂鸣器停止鸣叫
答:int main(void)开始鸣叫DelayNS(15)暂停鸣叫
2.11
1.实验目的
熟悉LPC2000系列ARM微控制器GPIO控制
2.实验内容
使用GPIO控制8个LED流水灯显示
3.实验程序
include "config.h"
#define LED1 1<<16 //P2.16
#define LED2 1<<17 //P2.17
#define LED3 1<<18 //P2.18
#define LED4 1<<19 //P2.19
#define LED5 1<<20 //P2.20
#define LED6 1<<21 //P2.21
#define LED7 1<<22 //P2.22
#define LED8 1<<23 //P2.23
#define LEDCON 0X00ff0000
const uint32 DISP_TAB[8]={0Xff01ffff,0xff02ffff,0xff04ffff,0xff08ffff,
0xff10ffff,0xff20ffff,0xff40ffff,0xff80ffff}; void DelayNS(uint32 dly)
{ uint32 i;
for(;dly>0;dly--)
{
for(i=0;i<5000;i++);
}
}
int main(void)
{ uint8 i;
IO2DIR=LEDCON;
while(1)
{
for(i=0;i<8;i++)
{
IO2CLR=DISP_TAB[i];
DelayNS(10);
IO2SET=0Xffffffff;
}
}
return(0);
}
4.分析思考
(1)二进制显示
#include "config.h"
#define LED1 1<<16 //P2.16
#define LED2 1<<17 //P2.17
#define LED3 1<<18 //P2.18
#define LED4 1<<19 //P2.19
#define LED5 1<<20 //P2.20
#define LED6 1<<21 //P2.21
#define LED7 1<<22 //P2.22
#define LED8 1<<23 //P2.23
#define LEDCON 0X00ff0000
const uint32 DISP_TAB[8]={0Xff01ffff,0xff02ffff,0xff04ffff,0xff08ffff,
0xff10ffff,0xff20ffff,0xff40ffff,0xff80ffff}; void DelayNS(uint32 dly)
{ uint32 i;
for(;dly>0;dly--)
{
for(i=0;i<5000;i++);
}
}
int main(void)
{ long int i;
IO2DIR=LEDCON;
while(1)
{
for(i=0;i<256;i++)
{
IO2CLR=i<<16;
DelayNS(10);
IO2SET=0Xffffffff;
}
}
return(0);
}
(2)流水灯正反走