ARM程序设计实验

一、实验目的:

理解ARM指令直接访问控制硬件的方法,掌握GPIO输入输出设置及其应用开发方法。

二、实验内容与要求:

1:熟悉基于ARM 的GPIO模块;

2:用汇编语言编写GPIO控制程序,实现LED的亮灭功能;

3:记录相应现象和结果,进行总结分析并完成实验报告。

三、实验环境:

硬件:PC机,S3C44B0X开发板

软件:ADS集成开发环境

调试:JLINK仿真器

四、实验过程:

4.1实验步骤

①将实验源代码下的实验项目整个文件夹拷贝到C盘根目录,修改文件夹为可读属性,删除*_Data的文件夹,用ADS软件打卡工程文件(*.mcp)

②将电脑的当前时间更改为现在的正确时间。

③用并口JTAG调试线连接目标板和PC机,连接电源线。

④目标板要插上线,并且要开启桌面上的H-JTAG软件,探测目标CPU是否正常编译程序,选择Debug。

⑤根据数据手册查找,找到对应的配置寄存器和数据寄存器的物理地址。编写汇编语言程序,编译,连接,调试,运行,观察寄存器。

其中汇编程序要用ldr指令给地址,用str指令赋值。

⑥打开硬件设备开关,观察LED的亮灭情况。

⑦记录相应现象和结果。

4.2实验现象

1.编写代码后debug并且运行成功。

2.打开硬件开关,开始单步运行代码。运行完将4,5端口调成低电平时的那一行代码时,Led灯变亮。

3. 运行完将4,5端口调成高电平时的那一行代码时,led灯熄灭。

4.2实验现象

1.编写代码后debug并且运行成功。

2.打开硬件开关,开始单步运行代码。运行完将4,5端口调成低电平时的那一行代码时,Led灯变亮。

3. 运行完将4,5端口调成高电平时的那一行代码时,led灯熄灭。

4.可以尝试全速运行,能不能使led灯变亮后又灭。

4.3实验数据

阅读数据手册可知,

1) PCON是port B的配置,地址为0x01D20008,初始值为0x7ff(0111 1111 1111)

2)PDATB是port B的数据寄存器地址为0x01D2000C,初始值为Undef.

3)PB[10:0]:当端口配置为输出口时,对应脚的状态和该位的值相同;当端口配置作为功能脚时,如果读该位的值,将是一个不确定的值。

4)D7~D8通过IOB口控制的第四位和第五位控制,将pcomb的第4、5位置为0,可以使该两个灯为输出。

nWBE [3:0]:写字节允许信号;

nBE [3:0]:再使用SRAM情况下16位字允许信号

DQM[3:0]:SDRAM数据屏蔽信号

也就是说, 在地址0X01D20008中,给前十位的每一位赋值,那么,在 CPU 的管脚上就定义了管脚的功能值。当B端口某管脚配置成输出端口,则在PDATB 对应的地址中的对应位上,写入1,则该管脚输出为高电平,写入0,则该管脚输出为低电平。 若配置为功能管脚,则该管脚变成具体的功能脚。、

实验中:

①当PCON的内容为0x7CF(0111 1100 1111)时,此时端口B的第四位和第五位都是低电平,故LED灯亮。

②当PDATB的内容为0x30(0011 0000)时,此时端口B的第四位和第五位都是高电平,故LED灯灭。

5)D7-D8的亮灭可由PDATB控制,地址为0x01d2000c,将相应的位置0,该灯既可以亮。

6)设置成循环,不断重复上述操作,LED灯会重复亮灭。

程序流程图:

程序关键代码:

LDR     R0,=0x7CF          ;将立即数载入寄存器(R0=0111 1100 1111)

LDR     R1,=0x01D20008     ;将0x01D20008写入到R1中       

STR     R0,[R1]             ;将R0中的字数据写入以R1为地址的存储器中   

   

LDR     R0,=0x30            ;将立即数载入寄存器

LDR     R1,=0x01D2000C     ;将0x01D2000C写入到R1中   

STR     R0,[R1]             ;将R0中的字数据写入以R1为地址的存储器中

   

BIC     R0,R0,#0x30         ;R0的值(00110000)与0x30(00110000)的反码(11001111)按位相与,R0:0x00000000

LDR     R1,=0x01D2000C     ;将立即数0x01D2000C载入寄存器

STR     R0,[R1]             ;将R0中的字数据写入以R1为地址的存储器中

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钻仰弥坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值