linux arm中断跑马灯,S3C2410 MDK实验---ARM汇编语言实现跑马灯

具体思路:

由于开发板是将GPF4-7与灯相连,所以通过设置GPFCON控制寄存器将将LED灯相连的引脚4,5,6,7设置为输出功能,将他们的上拉电阻设置为禁用(设置GPFUP为0),通过修改GPFDAT寄存器的数值来实现灯的亮和灭,主要是将具体引脚对应的GPFUP设置为0,使之为低电平,从而使灯可以亮。再设置几个延迟将灯亮的时间延长。最后用C语言的mian函数调用LEDTEST函数即可。

主要ARM代码部分:

GPFCON  EQU    0x56000050

GPFDAT  EQU    0x56000054

GPFUP    EQU    0x56000058

AREA  LEDTESTARM,CODE,READONLY

EXPORT LEDTEST

IMPORT main

ENTRY

LEDTEST

;设置每个引脚的功能,设置GPF4-7为output

LDR R0,=GPFCON

LDR R1,=0x5500

STR R1,[R0]

;禁止他们的上拉电阻

LDR R0,=GPFUP

LDR R1,=0xff00

STR R1,[R0]

LDR R2,=GPFDAT

;下面进行跑马灯的循环

LOOP2

LDR R1,=0xdf

STR R1,[R2]

BL DELAY2

LOOP3

LDR R1,=0x7f

STR R1,[R2]

BL DELAY3

LOOP1

LDR R1,=0xef  ;低电平设置

STR R1,[R2]

BL DELAY1      ;延迟

LOOP4

LDR R1,=0xbf

STR R1,[R2]

BL DELAY4

;延迟程序

DELAY1

LDR R3,=0x8ffff            ;设置延长时间

DELAY5

SUB R3,R3,#1              ;r3=r3-1

CMP R3,#0x0                ;将r3的值与0相比较

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

B LOOP4

MOV PC,LR                    ;返回

DELAY2

LDR R3,=0x8ffff

DELAY6

SUB R3,R3,#1

CMP R3,#0x0

BNE DELAY6

B LOOP3

MOV PC,LR

DELAY3

LDR R3,=0x8ffff

DELAY7

SUB R3,R3,#1

CMP R3,#0x0

BNE DELAY7

B LOOP1

MOV PC,LR

DELAY4

LDR R3,=0x8ffff

DELAY8

SUB R3,R3,#1

CMP R3,#0x0

BNE DELAY8

B LOOP2

MOV PC,LR

    END0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值