logo资料库

基于arm汇编语言的流水灯设计.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
基于 arm 汇编语言的流水灯设计
一、题目 基于 arm 汇编语言的流水灯设计 二、设计思路与功能 根据以前所学单片机的有关知识,结合 arm 的汇编结构和流水灯的 有关设计方法,通过对 arm 内部的有关寄存器的设计,通过程序编程, 最终实现 LED 灯的交替闪烁。 三、具体的程序实现 .global _start .global 关键字用来让一个符号对链接器可见,可以供其他链接对 象模块使用。 .global _start 意思是让 _start 符号成为可见的标识符,这样链接 器就知道跳转到程序中的什么地方并开始执行。通过寻找这个 _start 标 签作为程序的默认进入点。 通过修改 GPX2CON、GPX2DAT 的值来控制 LED 的亮灭; GPX2CON 的地址为 0x11000C40; GPX2CON 可以控制 8 个 IO 口,LED2 是由 GPX2_7 控制的,所 以只要设置 GPX2CON[7]即可。 可以看到该 4 个 bit 为 0x1 时 IO 口为输出功能,则我们可以这样设 置:现将[31:28]位清零再置一,则该端口被设置为输出引脚,而至于输 出高电平还是低电平,则由 GPX2DAT 来控制。 GPX2DAT 的地址为 0x110000C44; 2
GPX2DAT 低 8 位有效,每 1 个 bit 控制一个端口输出电平的高低,该位 置 1,则输出高电平,置 0,则输出低电平,为点亮 LED,我们可以这样 设置:第[7]位置 1 即可,此时 LED 被点亮; 同样,该位置 0,则 LED 熄灭。 具体程序如下: .equ GPX2CON,0x11000C40 .equ GPX2DAT,0x11000C44 @设置输出 @GPX2CON[31:28] = 0x1 r0,=GPX2CON ldr mov r1,#0x1 Str r1,[r0] @//输出高电平 @GPD0DAT[7] = 0x1 @ GPD0DAT = 0x1 @闪烁 ---> 延时 r0,=GPX2DAT ldr Mov r1,#0x80 str r1,[r0] Bl delays Ldr mov r1,#0x00 str r1,[r0] r0,=GPX2DAT 同理对 GPX1CON,GPF3CON 进行设置。 设置好以后,再对 GPX1DAT,GPF3DAT 设置来实现对 LED 灯的控制。 3
四、流程图 开始 初始化 对 LED1 设置 对 LED2 设置 对 LED3 设置 对 LED3 设置 对 LED2 设置 对 LED1 设置 判断是否为零 结束 五、运行结果 4
5
六、程序 .global _start .equ GPX2CON,0x11000C40 .equ GPX2DAT,0x11000C44 .equ GPX1CON,0x11000C20 .equ GPX1DAT,0x11000C24 .equ GPF3CON,0x114001E0 .equ GPF3DAT,0x114001E4 _start: r0,=GPX2CON r1,[r0] r0,=GPX1CON @设置输出 @GPX2CON[31:28] = 0x1 ldr mov r1,#0x1 str ldr Mov r1,#0x1 Str ldr Mov r1,#0x110 str r1,[r0] r0,=GPF3CON r1,[r0] while: @//输出高电平 @GPD0DAT[7] = 0x1 @ GPD0DAT = 0x1 @//闪烁 ---> 延时 ldr r0,=GPX2DAT Mov r1,#0x80 str r1,[r0] Bl delays ldr mov r1,#0x00 r1,[r0] str @//灭一会 r0,=GPX2DAT 6
r0,=GPX1DAT r0,=GPX1DAT r1,[r0] r0,=GPF3DAT r0,=GPF3DAT r1,[r0] r0,=GPF3DAT ldr mov r1,#0x10 r1,[r0] str Bl delays ldr Mov r1,#0x00 str Ldr mov r1,#0x10 Str r1,[r0] Bl delays ldr mov r1,#0x00 str Ldr mov r1,#0x10 str r1,[r0] Bl delays ldr Mov r1,#0x00 Str Ldr mov r1,#0x10 str r1,[r0] Bl delays ldr mov r1,#0x00 str r1,[r0] Ldr Mov r1,#0x80 str r1,[r0] Bl delays ldr mov r1,#0x00 str r1,[r0] r0,=GPF3DAT r1,[r0] r0,=GPX1DAT r0,=GPX1DAT r0,=GPX2DAT r0,=GPX2DAT 7
B while delays: LDR r0, =1000000000 loop: subs r0,#0x1 Bne loop Mov pc,lr stop: b stop 8
分享到:
收藏