ARM指令实验中编写一段代码让LED灯D13不停的闪烁

ARM指令实验中编写一段代码让LED灯D13不停的闪烁,第1张

以下是本人在mini2440开发板自己亲自总结的点灯程序,我不知道你用的是什么开发板,相信以你的能力转换一下就可以解决了!要使他 “不停的闪烁”其实就是利用循环控制相应寄存器的输出输入状态

@***************

@file:head.s

@功能:点亮两个led灯

@***************

@下面三行为工业流程,固定写法

.text

.global _start

_start:

ldr r0,=0x56000010 @将r0设置为GPBCON寄存器,并装载GPBCON寄存器的地址

ldr r1,=0x15400@设置GPB5-8四个引脚为输出状态(CPU发出信号给GPB引脚)

str r1,[r0]@把寄存器中的数据r1写道内存中去

ldr r0,=0x56000014 @将r0设置为GPBDAT寄存器,并装载GPBDAT寄存器的地址

flash:

ldr r1,=0x180 @对GPBDAT寄存器的5-8位进行设置

str r1,[r0]@把寄存器中的数据r1写道内存中去,四个灯的状态两不亮

bl wait@跳转的同时保存下一条指令的地址给链接寄存器

ldr r1,=0x1e0 @对GPBDAT寄存器的5-8位进行设置

str r1,[r0]@把寄存器中的数据r1写道内存中去,四个灯的状态全不亮

bl wait

b flash

@下面一个循环(相当延时)

wait:

ldr r2,=0xfff0

loop:

subs r2,r2,#1

bne loop

mov pc,lr@利用链接寄存器跳回去

stop:

b stop

其实跟裸机是差不多的。也是要先设置LED的控制寄存器,上拉寄存器。然后通过控制它的状态寄存器来使灯亮灭。跟裸机 *** 作是一样的。只是在系统里面,分成了驱动和应用。驱动程序就是为了能让LED能够正常工作。而应用程序就是控制LED怎么亮发。比如循环亮啊。全亮,全灭之类的。这只是概念。真正 *** 作的话,还要看你用的是什么芯片,什么linux核。反正方法就是先写好驱动然后添加到你的内核里面,在通过应用去控制灯的状态。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11779297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存