嵌入式系统实验报告

发布 2022-10-21 09:47:28 阅读 3300

姓名:班级:

学号:实验一:流水灯。

实验要求:编写一个程序,是开发板上的的3个led灯按流水灯方式闪烁。

实验工具:ad超级终端开发板,电脑。

实验程序如下:

汇编指令实验

定义端口e寄存器预定义。

rgpbcon equ 0x56000010

rgpbdat equ 0x56000014

rgpbup equ 0x56000018

area init,code,readonly ;该伪指令定义了一个**段,段名为init,属性只读。

entry程序的入口点标识。

resetentry

;下面这三条语句,主要是用来设置i/o口gpb5为输出属性。

ldr r0,=rgpbcon将寄存器rpconb的地址存放到寄存器r0中。

ldr r1,=0x5400

str r1,[r0将r1中的数据存放到寄存器rpconb中。

;下面这三条语句,主要是禁止gpb端口的上拉电阻。

ldr r0,=rgpbup

ldr r1,=0xffff

str r1,[r0]

ldr r2,=rgpbdat将数据端口b的数据寄存器的地址附给寄存器r2

ledloop

ldr r1,=0xdf

str r1,[r2使gpb5输出低电平,led1亮。

bl delay调用延迟子程序。

ldr r1,=0xbf

str r1,[r2使gpb5输出低电平,led1亮。

bl delay调用延迟子程序。

ldr r1,=0x7f

str r1,[r2使gpb5输出低电平,led1亮。

bl delay调用延迟子程序。

b ledloop

下面是延迟子程序。

delay

ldr r3,=0xbffff设置延迟的时间。

delay1

sub r3,r3,#1r3=r3-1

cmp r3,#0x0将r3的值与0相比较。

bne delay1比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句。

mov pc,lr返回。

end程序结束符

实验程序说明:

要实现三个led闪烁,须设置gpb5、gpb6、gpb7为输出属性,所以 “ldr r1,=0x5400”,将r1的地址设置为0x5400。通过控制gpb5、gpb6、gpb7 端电平的高低来控制三个led灯的亮灭。同时还应禁止上拉电阻上拉,禁止上拉程序段如下:

ldr r0,=rgpbup

ldr r1,=0xffff

str r1,[r0]

axd调试截图如下:

gpb5点亮时调试截图。

gpb6点亮时调试截图。

gpb7点亮时调试截图。

实验二:s3c2440 时钟和中断实验——按键控制灯的亮灭。

实验要求:说明例程软件的功能并给出实现流程图。

汇编程序如下:

area init,code,readonly ;该伪指令定义了一个**段,段名为init,属性只读。

entry程序的入口点标识。

resetentry

ldr r0, =0x53000000

mov r1,#0x0

str r1,[r0关闭看门狗。

mov sp,#0x38000000定义堆栈指针。

import main声明主函数main

bl main调用主函数。

下面是延迟子程序。

export delay

delaysub r0,r0,#1r0=r0-1

cmp r0,#0x0将r0的值与0相比较。

bne delay比较的结果不为0(r0不为0),继续调用delay,否则执行下一条语句。

mov pc,lr返回。

end程序结束符

c程序如下:

#define rgpbconvolatile unsigned *)0x56000010)

#define rgpbdatvolatile unsigned *)0x56000014)

#define rgpbupvolatile unsigned *)0x56000018)

#define rgpfconvolatile unsigned *)0x56000050)

#define rgpfdatvolatile unsigned *)0x56000054)

#define rgpfupvolatile unsigned *)0x56000058)

**gpb5---led1**

**gpb6---led2**

**gpb7---led3**/

#define gpb5_out (1<<(5*2

#define gpb6_out (1<<(6*2))

#define gpb7_out (1<<(7*2))

**gpf0---key1**

**gpf1---key2**

**gpf2---key3**/

#define gpf0_in ~(3<<(0*2))

#define gpf1_in ~(3<<(1*2))

#define gpf2_in ~(3<<(2*2))

#define key1 (1<<0)

#define key2 (1<<1)

#define key3 (1<<2)

extern void delay(int time); 声明汇编函数。

void main()

rgpbcon = gpb5_out | gpb6_out | gpb7_out设置i/o口gpb5,gpb6,gpb7为输出属性。

rgpbup = 0xffff禁止gpf端口的上拉。

rgpfcon = gpf0_in & gpf1_in & gpf2_in;

rgpfup = 0xffff;

rgpbdat=0xff;

while(1)

if((rgpfdat & key2) =0)

实现流程图如下图所示:

运用了c语言和汇编语言交叉编译,通过控制irq的中断来控制led的导通和关断。

c语言相比汇编语言,更贴近用户,功能实验起来需要的语句也相对较短,汇编语言更加贴近硬件系统。

系统通过通用寄存器将参数传递给c语言函数。

通过延时操作实现去抖,去抖程序流程图如下:

实验总结:经过本次试验,基本掌握了ads软件的操作,熟悉了arm的编程,通过几次上机实验,对课堂上所学到的知识有了进一步的认识和理解,受益匪浅。

嵌入式系统实验报告

嵌入式系统实验报告内容。第一章 arm2410cl嵌入式系统基础实验。实验一arm2410cl嵌入式教学实验系统。实验报告要求 简述嵌入式linux开发的流程。实验二。嵌入式linux开发环境的配置。实验报告要求 1 简述嵌入式linux开发环境配置的具体步骤。2 简述网络文件系统 nfs 第二章 ...

嵌入式系统实验报告

本科实验报告。1.实验原理 本实验使用xmanager enterprise软件来连接老师配置好的linux服务器,以完成实验中使用linux完成编译和 运行一个嵌入式系统。实验中使用u boot作为系统的bootloader,使一个嵌入式linux系统完成编译并模拟在另一台机器上 并执行操作。u ...

嵌入式系统实验报告

山东交通学院。院 系 别。班级。学号。姓名。指导教师。时间。实验三通用 i o 使用 矩阵式键盘。1 实验目的。s3c44b0x 具有 71 个通用多功能 i o,这些 i o 的应用是 s3c44b0x 处理器的基础。本实验我们就以矩阵式键盘的接口设计为例,学习怎样设置 i o 口并对它进行操作。...