1、ARM实验报告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 0000R0=0x0000 000F R1=0X0000
2、 0000 PC=0X4000 0004R0=0x0000 000F R1=0X0000 0008 PC=0X4000 0008R0=0x0000 0017 R1=0X0000 0008 PC=0X4000 000CR0=0x0000 0017 R1=0X0000 0008 PC=0X4000 0000R0=0x0000 000F R1=0X0000 0008 PC=0X4000 00042.2实验目的:1)了解ADS1.2集成开发环境及ARMulator软件仿真2)掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序3)掌握指令的条件执行和使用LDR/STR指令完成存储器的访问实验内容
3、: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 00004)编译工程,启动仿真5)打开寄存器窗口,监视R1,R0,打开寄存器观察窗口,设置观察地址0x40003100,显示
4、32bit2.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 00004)编译工程,启动仿真5)单步运行程序,观察寄存器值的变换4. 实验结果和分析可单步或者设置断点记录各变化寄存器(包括PC,CPSR)的变化情况1)PC=0X4000
5、0004 R0=0X0000 000BPC=0X0000 0008 R1=0X0000 0008PC=0X4000 000C PC=0X4000 0010PC=0X4000 0014 R0=0X5FFF FFF8PC=0X4000 0018 R5=0X5FFF FF60PC=0X4000 001C R0=0X0000 0008PC=0X4000 0020 R0=0X0000 0028PC=0X4000 0024 R0=0X0000 0014PC=0X4000 0028 R1=0X0000 000BPC=0X4000 002C R1=0X0000 0016PC=0X4000 0030 cpsr=
6、NzcrPC=0X4000 0034PC=0X4000 0038PC=0X4000 003C R5=0X5FFF FFFFPC=0X4000 0040 cpsr=nzcrPC=0X4000 0044 R5=0X5FFF FFBF2)Pc=0x40000000Pc=0x40000004 R0=0x00000c8Pc=0x40000008 R1=0x000000A3Pc=0x4000000cPc=0x40000010Pc=0x40000014 R0=0X5FFFFFF8Pc=0x40000018 R5=OX5FFFF4A0Pc=0x4000001CR0=0X000000A3Pc=0x4000002
7、0 R0=0X0000032FPc=0x40000024 R0=0X00000197Pc=0x40000028 R1=0X000000C8Pc=0x4000002C R1=0X00000190Pc=0x40000030 cpsr=ncvqPc=0x40000034Pc=0x40000038 R5=0X5FFF0000Pc=0x4000003CPc=0x40000040 cpsr=ncvqPc=0x400000442.3实验目的:3)掌握ARM乘法指令的使用方法4)了解A子程序编写及调用实验内容: 使用STMFD/LDMFD MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算Xn
8、的值实验步骤1)启动ADS,建立新工程2)建立新文件3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址 0x4000 00004)编译工程,启动仿真,设置观察地址为0x40003EA0,显示size32bit,监视从0x40003EC0起始的满递减堆栈区。5)单步运行程序,观察寄存器值的变换6)调试程序,更改X,n来测试程序。4. 实验结果和分析可单步或者设置断点记录各变化寄存器(包括PC,CPSR)的变化情况PC=0X0000 8014 R14=0X0000 8010PC=0X0000 8018 PC=0X0000 802C
9、 PC=0X0000 8020PC=0X0000 8024 PC=0X0000 8028 cpsr=nzcvPC=0X0000 802C PC=0X0000 8030 PC=0X0000 8034 R2=0X0000 0007PC=0X0000 8038 R0=0X0000 0051PC=0X0000 803C R2=0X0000 0006PC=0X0000 8034 R0=0X0000 0209PC=0X0000 803C R2=0X0000 0005PC=0X0000 8034PC=0X0000 8038 R0=0X0000 19A1PC=0X0000 803C R2=0X0000 000
10、4PC=0X0000 8034 PC=0X0000 8038 R0=0X0000 56A9PC=0X0000 803C R2=0X0000 0003PC=0X0000 8034 PC=0X0000 8038 R0=0X0008 1BF1PC=0X0000 803C R2=0X0000 0002PC=0X0000 8034 2.51实验目的: 学习ARM微控制器的16位thumb汇编指令的使用指令2实验内容: 使用thumb指令ADD.MOV.CMP.B实现1+2+3+N3实验步骤:1)启动ADS,建立新工程2)建立新文件3)设置工程链接地址为RO BASE 0x4000 0000,RW BAS
11、E 0x4000 3000,设置调试入口地址 0x4000 00004)编译工程,启动仿真5)打开寄存器,窗口打开寄存器观察窗口6)单步运行程序,注意执行BX R0指令前后CPSR寄存器的T位4. 实验结果和分析PC=0x4000302c cpsr=NzcvPC=0x4000302e cpsr =NzcvPC=0x40003030 cpsr= nzcvPC=0x40003026 cpsr =nzcvPC=0x40003028 cpsr =nzcv2.61实验目的: 通过实验了解如何使用ARM汇编指令实现结构化程序编程2实验内容: 使用ARM汇编指令实现if条件指令 使用ARM汇编指令实现for
12、循环指令 使用ARM汇编指令实现while循环指令 使用ARM汇编指令实现do while 循环指令 使用ARM汇编指令实现switch开关指令3实验步骤:1)启动ADS,建立新工程2)建立新文件3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址 0x4000 00004)编译工程,启动仿真5)打开寄存器,窗口打开寄存器观察窗口6)单步运行程序,判断程序是否按设计的程序逻辑执行4. 实验结果和分析For语句 ADDLD R0,R0,#1ADDLD R2,R3,#1BLD FOR_L1While语句WHILE_L CMP R0,
13、R1 MOVLS R0,R0,LSL #1 BLS WHILE_Ldowhile语句DOWHILE_L SUBS RO,RO,#1 BNE DOWHILE_L1SwitchAND、CMP中R2改为R42.71实验目的: 1)掌握如何使用MRS/MSR指令实现ARM微控制器工作模式的切换 2)了解在各个工作模式下的寄存器2实验内容: 1)使用MRS/MSR指令切换工作模式,并初始化各种模式下堆栈指针 2)观察ARM微控制器在各种模式下寄存器的区别3实验步骤:1)启动ADS,建立新工程2)建立新文件3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000
14、,设置调试入口地址 0x4000 00004)编译工程,启动仿真5)打开寄存器,窗口打开寄存器观察窗口6)单步运行程序,观察CPSR SPSR R13 R14 R154. 实验结果和分析PC=0x40000000PC=0x40000004PC=0x40000008PC=0x4000000CPC=0x40000010PC=0x40000014PC=0x40000018PC=0x4000001CPC=0x40000020PC=0x40000024PC=0x40000028PC=0x4000002CPC=0x40000030PC=0x40000034PC=0x40000058 R14=0x40000
15、038PC=0x4000005CPC=0x40000060PC=0x40000064 R13=0x400030FCPC=0x40000068 R13=0x40000000 R14=0x40000000 cpsr=nzcvqIFt_IRQPC=0x4000006C R13=0x400031FCPC=0x40000070 R13=0x40000000 cpsr=nzcvqIFt_FIQPC=0x40000074 R13=0x4000323CPC=0x40000078 R13=0x40000000 cpsr=nzcvqIFt_AbortPC=0x4000007C R13=0x4000313CPC=0
16、x40000080 R13=0x40000000 cpsr=nzcvqIFt_UbdefPC=0x40000084 R13=0x4000323CPC=0x40000088 R13=0x40000000 cpsr=nzcvqIFt_SysPC=0x4000008C R13=0x400030FCPC=0x40000038PC=0x4000003CPC=0x40000040PC=0x40000044 cpsr=nzcvqiFt_SysPC=0x40000048 cpsr=nzcvqiFt_UserPC=0x4000004CPC=0x40000050PC=0x400000542.81实验目的: 通过实
17、验了解使用ADS 1.2编写C语言程序,并进行调试2实验内容: 1)编写一个汇编程序和一个C语言程序文件 2)C语言实现1+2+3+N3实验步骤:1)启动ADS,建立新工程2)建立新文件3)设置工程链接地址为RO BASE 0x4000 0000,RW BASE 0x4000 3000,设置调试入口地址 0x4000 00004)编译工程,启动仿真5)打开寄存器,窗口打开寄存器观察窗口6)单步运行程序4. 实验结果和分析Sum=0x0000 0000Sum=0x0000 0001Sum=0x0000 0006Sum=0x0000 000ASum=0x0000 000FSum=0x0000 00
18、15Sum=0x0000 001CSum=0x0000 0024Sum=0x0000 002DSum=0x0000 0037Sum=0x0000 0042Sum=0x0000 004ESum=0x0000 005BSum=0x0000 0069Sum=0x0000 0078Sum=0x0000 0088Sum=0x0000 0099Sum=0x0000 00ABSum=0x0000 00BESum=0x0000 00D2Sum=0x0000 00E7Sum=0x0000 00FDSum=0x0000 0114Sum=0x0000 012CSum=0x0000 0145Sum=0x0000 01
19、5FSum=0x0000 017ASum=0x0000 0196Sum=0x0000 01B3Sum=0x0000 01D1Sum=0x0000 01F0Sum=0x0000 0210Sum=0x0000 0231Sum=0x0000 0253Sum=0x0000 0276Sum=0x0000 029ASum=0x0000 02BFSum=0x0000 02F5Sum=0x0000 030CSum=0x0000 0334Sum=0x0000 035DSum=0x0000 0387Sum=0x0000 03B2Sum=0x0000 03DESum=0x0000 040BSum=0x0000 04
20、39Sum=0x0000 0468Sum=0x0000 0498Sum=0x0000 04C9Sum=0x0000 04FBSum=0x0000 052ESum=0x0000 0562Sum=0x0000 0597Sum=0x0000 05CDSum=0x0000 0604Sum=0x0000 063CSum=0x0000 0675Sum=0x0000 06AFSum=0x0000 06EASum=0x0000 0726Sum=0x0000 0763Sum=0x0000 07A1Sum=0x0000 07E0Sum=0x0000 0820Sum=0x0000 0861Sum=0x0000 08
21、A3Sum=0x0000 08E6Sum=0x0000 092ASum=0x0000 096FSum=0x0000 09B5Sum=0x0000 09FCSum=0x0000 0A44Sum=0x0000 0A8DSum=0x0000 0AD7Sum=0x0000 0B22Sum=0x0000 0B6ESum=0x0000 0C09Sum=0x0000 0C58Sum=0x0000 0CA8Sum=0x0000 0CF9Sum=0x0000 0D48Sum=0x0000 0D9ESum=0x0000 0DF2Sum=0x0000 0E47Sum=0x0000 0E9DSum=0x0000 0E
22、F4Sum=0x0000 0F4CSum=0x0000 0FA5Sum=0x0000 0FFFSum=0x0000 105ASum=0x0000 10B6Sum=0x0000 1113Sum=0x0000 1171Sum=0x0000 11D0Sum=0x0000 1230Sum=0x0000 1291Sum=0x0000 12F3Sum=0x0000 1356Sum=0x0000 13BA2.101.实验目的: (1)掌握LPC2200专用工程模板 (2)掌握EasyJTAG仿真器的安装和使用 (3)能够在magicARM2200教学开发平台运行第一个程序 (4)熟悉LPC2000系列ARM
23、7微控制器GPIO控制 2.实验内容 控制magicARM2200教学实验开发平台上蜂鸣器报警,先使用片外RAM(MT445W4MW16芯片)进行调试,调试通过后将程序固化到片外FLASH(SST39VF160芯片)然后脱机使用。3.实验程序#include config.h#define BEEPCON 0x00000080void DelayNS (uint32 dly) uint32 i; for(;dly0;dly-) for(i=0;i5000;i+); int main(void) PINSEL0=0x00000000; while(1) IO0SET=BEEPCON; Delay
24、NS(15); IO0CLR=BEEPCON; DelayNS(15); return(0);4.分析思考 哪句使蜂鸣器鸣叫 哪句使蜂鸣器停止鸣叫答: int main(void)开始鸣叫 DelayNS(15)暂停鸣叫2.111.实验目的 熟悉LPC2000系列ARM微控制器GPIO控制2.实验内容 使用GPIO控制8个LED流水灯显示3.实验程序 include config.h#define LED1 116 /P2.16#define LED2 117 /P2.17#define LED3 118 /P2.18#define LED4 119 /P2.19#define LED5 12
25、0 /P2.20#define LED6 121 /P2.21#define LED7 122 /P2.22#define LED8 10;dly-) for(i=0;i5000;i+); int main(void) uint8 i; IO2DIR=LEDCON; while(1) for(i=0;i8;i+) IO2CLR=DISP_TABi; DelayNS(10); IO2SET=0Xffffffff; return(0); 4.分析思考(1)二进制显示#include config.h#define LED1 116 /P2.16#define LED2 117 /P2.17#define LED3 118 /P2.18#define LED4 119 /P2.19#define LED5 120 /P2.20#define LED6 121 /P2.21#define LED7 122 /P2.22#define LED8 10;dly-) for(i=0;i5000;i+); int main(void) long int i; IO2DIR=LEDCON; while(1) for(i=0;i256;i+) IO2CLR=i16; DelayNS(10); IO2SET=0Xffffffff; return(0); (2)流水灯正反走
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1