实验三(ARM编程环境的熟悉及寻址方式实验)
ARM培训实验指导书(第一版)

NXP 大学计划指定民大实验教材ARM与嵌入式技术版本:2008年1月第一版目录实验一熟悉Embest IDE集成开发环境 (1)实验二ARM汇编指令实验(1) (4)实验三ARM汇编指令实验(2) (9)实验三存储器实验.................................................................................... 错误!未定义书签。
实验四I/O接口实验............................................................................... 错误!未定义书签。
实验五中断实验........................................................................................ 错误!未定义书签。
实验六串口通信实验................................................................................ 错误!未定义书签。
实验七数码管(LED)显示实验 ............................................................ 错误!未定义书签。
实验八RTC及数码管显示实验(设计性实验).................................... 错误!未定义书签。
实验九液晶显示实验................................................................................ 错误!未定义书签。
实验十键盘控制实验................................................................................ 错误!未定义书签。
arm实验报告最终版

ARM与嵌入式技术实验报告专业班级:10通信工程1班姓名:万洁学号:100103011125实验日期:2013年5月28日指导老师:郑汉麟1、 通过实验掌握ARM 指令的特点和寻址方式;2、 掌握简单的ARM 汇编语言的程序设计;3、 了解集成开发环境 Embest IDE 及其开发软件的应用;、实验环境Embest IDE 应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入式系统的开发和调试工具。
其开发软件 Embest IDE for ARM 是集编辑器、编译 器、调试器、工程管理器( projectma nager )于一体的高度集成的窗口环境,用户可以在Embest IDE 集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。
三、实验步骤1)新建工程:运行Embest IDE 集成开发环境,选择菜单项 File 宀New Workspace ,如图一,系统弹出一个对话框,键入文件名“ wj ”,如图二,点击 0K 按钮。
将创建一个新工程,并同时创 建一个与工程名相同的工作区。
此时在工作区窗口将打开该工作区和工程 .。
(老师提醒:不要放入Bin 文件夹中)■ Emb«t QE Pre 亠 Educat「販]£dii_VwwBuid frtbug D if** Qri+W 诊 Open-"Qrl*O2)建立源文件:点击菜单项 File T New ,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。
编辑完后,保存文件“ wj.s ”后缀,如图三,四。
Hr*Open Workspace.・图一■■ rflJO IUU rl jil rd f rfl,rlClop: h Ho. .end图tut vUrl:3)添加源文件:选择菜单项Project T Add To Project Files,在工程目录下选择刚才建立的源文件.s 后缀文件,如图五,图六,图七。
实验3基于ARM的C语言程序设计

实验三基于ARM的C语言程序设计一、实验目的了解ARM C语言的基本框架,学会使用ARM的C语言编程。
二、实验设备标准硬件。
三、实验内容用C语言编写一个“用通用串口UART发送一组数据”的应用程序。
四、实验原理(1)汇编程序调用C程序汇编程序的设置要遵循ATPCS规则,保证程序调用时参数正确传递。
在汇编程序中使用IMPORT伪指令声明将要调用的C程序函数。
在调用C程序时,要正确设置入口参数,然后使用BL调用。
(2)C程序调用汇编程序在汇编程序中使用EXPORT伪指令声明本子程序,使其他程序可以调用此子程序。
在C语言中使用extern关键字声明外部函数(声明要调用的汇编子程序)。
在C语言环境下开发应用程序,一般需要一个汇编的启动程序,从汇编的启动程序跳转到C语言下的主程序,然后,执行C程序。
在C环境下读写硬件的寄存器,一般是通过宏调用,在每个项目文件的Startup2410\INC目录下都有2410addr.h头文件,里面定义了所有关于2410的硬件寄存器的宏,通过对宏的读写,就能操作2410的硬件。
具体的编程规则同标准C语言。
下面是一个简单的小例子,在汇编中嵌套一个C程序IMPORT Main;//用IMPORT声明要引入一个C函数MainAREA Init,CODE,READONLY;ENTRYLDR R0,=0x01d00000LDR R1,=0x245STR R1,[R0];把0x245放到地址0X01D00000BL Main;跳转到Main()函数END;标识汇编程序结束以上是一个简单的程序,先寄存器初始化,然后跳转到Main()函数标识的C/C++代码处,执行主要任务,此处的Main是声明的C语言中的Main()函数。
五、实验步骤1.打开ADS1.2开发环境,打开\基础实验\实验六\C.mcp项目文件,然后进行compile和make生成*.axf文件。
2.编译通过后,进入ADS1.2调试界面,加载\基础实验\实验六\C_Data\Debug 中的映象文件程序映像C.axf。
实验三 指令与寻址方式认知实验(Keil)

实验三指令与寻址方式认知实验一、实验目的1.了解单片机基本指令及其寻址方式;2.掌握在µVision环境中查看指令操作结果的技巧。
二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx31。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。
ORG 0000HMAIN:MOV R7,#16MOV A,#00HMOV R0,#30HLP:MOV @R0,AINC R0INC ADJNZ R7,LPSJMP $END(3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。
(6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。
2.示例及相关设置(1)建立一个文件夹:lx32。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。
ORG 0000HMOV R0,#20HMOV R1,#22HMOV A,@R0ADD A,@R1MOV 24H,AINC R0INC R1MOV A,@R0ADDC A,@R1MOV 25H,ASJMP $END(3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。
arm实验报告

arm实验报告ARM实验报告引言:ARM(Advanced RISC Machines)是一种基于精简指令集计算机(RISC)架构的微处理器系列,广泛应用于移动设备、嵌入式系统和智能家居等领域。
本实验报告旨在介绍ARM架构的基本原理、应用领域以及在实验中的应用。
一、ARM架构的基本原理ARM架构采用精简指令集计算机(RISC)的设计理念,注重指令的简洁性和执行效率。
相较于复杂指令集计算机(CISC),ARM架构的指令集更为简单,指令长度固定,执行速度更快,能够提高处理器的性能和能效比。
ARM架构的核心特点包括:1. 简洁指令集:ARM指令集采用三地址指令格式,指令长度为32位,操作码和寄存器字段清晰明了,易于编程和优化。
2. 统一寄存器:ARM架构中的寄存器集合统一,包括13个通用寄存器、程序计数器(PC)和状态寄存器(CPSR),简化了编程和寄存器间的数据传输。
3. 流水线技术:ARM处理器采用流水线技术,将指令的执行过程分为多个阶段,使得多条指令可以同时执行,提高了处理器的吞吐量。
4. 片上缓存:ARM架构支持片上缓存(Cache),能够提高数据的访问速度和处理器的效率。
二、ARM架构的应用领域1. 移动设备:由于ARM处理器具有低功耗和高性能的特点,广泛应用于智能手机、平板电脑和可穿戴设备等移动设备中。
ARM处理器能够提供流畅的用户体验和长时间的电池续航能力。
2. 嵌入式系统:ARM架构适用于嵌入式系统,如智能家居、工业自动化和车载电子等。
ARM处理器的小尺寸、低功耗和高性能使其成为嵌入式系统的首选。
3. 服务器和云计算:ARM架构逐渐在服务器和云计算领域崭露头角。
ARM服务器具有低能耗和高并发处理的特点,能够满足云计算和大数据处理的需求。
三、ARM实验应用在本次实验中,我们使用ARM开发板进行了一系列实验,包括LED控制、按键输入和串口通信等。
1. LED控制实验:通过编写ARM汇编语言程序,实现对开发板上的LED灯进行控制。
实验三 寻址方式与基本指令实验

实验三寻址方式与基本指令实验一、实验目的1、熟悉51单片机的各种寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。
2、初步掌握单片机汇编语言的设计和调试的基本方法方法。
3、熟悉DVCC模拟仿真系统的调试工具的使用方法二、实验内容1、查看程序代码在单片机内部存在的位置和形式。
2、熟练应用MOV指令、MOVX指令、MOVC指令,实现将数据在51单片机内部寄存器空间,RAM空间,以及外部RAM空间之间的转移。
3、了解堆栈的设置和应用,以及堆栈指针SP的变化4、懂得在程序区域设置数据表三、实验步骤1、编写如下参考程序,编译、模拟调试,并回答下列问题:MOV A, #30H ; 将立即数30H 送到累加器 AMOV R0, #40HMOV @R0, A 该指令语句中,目的操作数的寻址方式为;MOV R1, 40H 运行到此,R1 的值为;END2、请在1题基础上,增加适当的语句,使地址42H的内部数据存储器单元,赋值为30。
3、下列程序实现把10、11、12 三个数分别放在外部数据存储地址为1000H、1001H、1002H 存储单元处。
请填写指令,实现将1000H、1001H、1002H存储单元中的数值分别存储在R1、R2、R3中。
(请编译、调试、运行)MOV A, #10MOV DPTR , #1000H ;指定外部数据存储器地址为1000HMOV @DPTR , AINC A ;累加器A 数值加1INC DPTR ;DPTR 地址值加1=1001HMOV @DPTR , AINC AINC DPTRMOV @DPTR , A..................END4、堆栈操作,执行如下程序,回答下列问题MOV SP , 30H ;执行到此,SP= HMOV DPL,#12HMOV B, #34HPUSH DPL;执行到此,SP= HPUSH B ;执行到此,SP= HPOP DPL ;执行到此,SP= H, DPL = HPOP B ;执行到此,SP= H , B= HEND5、请在程序存储器地址为1000H开始的区域,依次存放如下数据:(1000H)= 0AH(1001H)= 0BH(1002H)= 0CH(1003H)= 0DH(1004H)= 0EH(1005H)= 0FH设计一个查表程序:使A=3时,查得数据0DH 回存到A.四、思考题:1、MOVC 指令操作数的寻址方式有几种?操作数实在程序存储区还是数据存储区?2、分析堆栈空间“先入后出”的使用特点,试着回答其在程序编写中的作用?。
ARM体系结构与编程实验报告

ARM体系结构与编程实验专业名称:计算机科学与技术班级:17计算机科学与技术学生姓名:学号:实验二GPIO实验一、实验目的:1、熟悉GPIO程序设计的基本流程;2、掌握在proteus中创建工程及编写、编译和运行汇编语言程序的方法;3、熟悉keil中各种调试功能。
二、实验内容:ARM的P0.1口接有一个控制开关,P0.0口上接有一个LED,用C语言编写程序,实现当开关闭合时LED亮,当开关打开时LED灭。
三、源代码#include <LPC21xx.H>#define P0_1 0x02;unsigned volatile long i;for(i=0;i<10000;i++);}int main(void) {int p01State;PINSEL0 = 0;IO0DIR = 0x000001;IO0SET = 0x000001;while (1) {p01State = IO0PIN&P0_1;if(p01State == 0){IO0CLR = 0x000001;delay();}else{IO0SET = 0x000001;delay();}}}四、实验结果实验三外部中断实验一、实验目的:1、掌握外部中断程序的编写;2、熟悉外部中断的工作原理;3、熟悉Proteus、keil中各种调试功能。
二、实验内容:在ARM的P0.14接口上接有一个按钮开关,开关的另一端接地,在P0.25接一个LED,引脚设置时连接EINT1功能。
用C语言编写程序,实现当按下按钮开关时触发外部中断,使LED快速闪烁。
三、源代码#include <LPC21XX.H>#define LEDCON 0x02000000typedef unsigned int uint32;void IRQ_Eint1(void) __attribute__ ((interrupt));uint32 times = 100;void IRQ_Eint1(void){times = 5;while((EXTINT&0x02)!=0){EXTINT=0x02;}VICVectAddr=0;}void delay100(void) {unsigned volatile long i,j;for(i=0;i<10000;i++)for(j=0;j<times;j++);if(times > 100){times--;}else if(times <100){times++;}}int main(void){IO0DIR = LEDCON;PINSEL0 = 0x20000000;PINSEL1 = 0x00000000;VICIntSelect=0;VICIntEnable=0x00008000;VICVectCntl1=0x2F;VICVectAddr1=(int)IRQ_Eint1;EXTINT=0x07;while (1) {IO0CLR = LEDCON;delay100();IO0SET = LEDCON;delay100();}}四、实验结果实验五定时器实验一、实验目的:1、熟悉定时器程工作原理;2、掌握定时器程序设计的基本流程;3、熟悉Proteus、keil中各种调试功能。
arm程序设计实验报告

arm程序设计实验报告ARM程序设计实验报告一、引言ARM(Advanced RISC Machine)是一种精简指令集计算机(RISC)架构。
在本次实验中,我们将学习和实践ARM程序设计的基本知识和技巧。
本报告将介绍实验的目标、步骤和结果,并对所学内容进行总结和思考。
二、实验目标本次实验的主要目标是通过编写ARM汇编程序,实现简单的功能。
具体来说,我们将学习如何使用ARM汇编语言编写程序,了解寄存器、指令和内存的基本概念,以及如何进行程序的调试和优化。
三、实验步骤1. 环境准备:安装ARM开发工具链,并配置开发环境。
2. 编写程序:根据实验要求,编写ARM汇编程序,实现指定的功能。
3. 调试与测试:使用模拟器或硬件平台,调试和测试编写的程序,确保程序的正确性和稳定性。
4. 优化改进:根据实验结果和性能要求,对程序进行优化改进,提高程序的效率和可靠性。
四、实验结果在本次实验中,我们成功完成了以下任务:1. 实现了一个简单的计算器程序,可以进行加减乘除运算,并输出结果。
2. 编写了一个字符串反转程序,可以将输入的字符串逆序输出。
3. 设计了一个简单的游戏程序,用户需要通过按键控制角色移动,避开障碍物。
通过以上实验,我们掌握了ARM汇编语言的基本语法和指令,了解了寄存器和内存的使用方法,以及如何进行程序的调试和优化。
同时,我们还学习了如何与外部设备进行交互,实现更复杂的功能。
五、实验总结通过本次实验,我们深入了解了ARM程序设计的基本原理和技巧。
ARM架构的精简指令集使得程序设计更加高效和灵活,适用于各种嵌入式系统和移动设备。
同时,ARM处理器的低功耗特性也使得其在无线通信、物联网等领域有着广泛的应用前景。
然而,ARM程序设计也存在一些挑战和难点。
首先,由于ARM汇编语言与高级语言相比,语法更为底层和复杂,需要更加深入地理解计算机硬件结构。
其次,ARM处理器的架构和指令集不同于传统的x86架构,需要重新学习和适应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三ARM编程环境熟悉及寻址方式实验
注意:本实验在模拟环境下进行!!
一、实验目的:
1、进一步熟悉ARM的编程工具MDK;
2、深刻理解ARM汇编指令中标号的本质;
3、熟悉ARM寻址方式(寄存器寻址、寄存器间接寻址等);
二、实验步骤:
1、参照实验二的步骤,建立工程exp
2、设置工程、建立源文件
exp2.s并将其添加到工程,在exp2.s中输入如下代码(可复制):;广州大学华软软件学院
;文件名:exp2.s
;功能:
;作者:
;日期:
;修改:
area init,code,readonly
entry
ldr r0,=data1;将标号data1的值送给r0
ldr r1,=data2;
ldr r2,=data3
ldr r0,[r0]
ldr r1,[r1]
add r0,r0,r1
str r0,[r2]
b .;相当于while(1)
data1
dcd 12;定义一个字,初值为12
data2
dcd 13;定义一个字,初值为13
data3
dcd 0;定义一个字,初值为0
end
2、编译正确后调试(可参照实验二),注意Ro_Base设置为
0x30000000,点击下图菜单中的菜单项,调出内存单元观察窗口。
会弹出如下界面:
点击current,就会看到当前模式下的寄存器
按F10进行单步调试,同时观察寄存器中的变化;
反汇编界面:
出现如下界面:鼠标右键,如图选中,即可看到源代码的反汇编窗口。
我们发现data1代表的地址是0x30000020,data2代表的地址是0x30000024,data3代表的地址是0x30000028。
好,我们现在通过memory窗口来查看这些内存单元的内容:
在存储单元窗口输入0x30000020(如下图所示),观察存储单元中的值,是不是我们程序所运行的结果呢?。