姓名:班级:
学号:实验一:流水灯。
实验要求:编写一个程序,是开发板上的的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 口并对它进行操作。...