ARM跑马灯汇编程序详细解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM跑马灯汇编程序详细解析

TQ2440开发板,主芯片是S3C2440,它一共有130个I/O端口,分为9组:GPA、GPB...GPJ。

对于这几组GPIO引脚,它们的寄存器是相似的:

GPxCON:用于选择引脚功能

GPxDAT:用于读、写引脚数据

GPxUP:用于确定是否使用内部上拉电阻,其中无GPAUP寄存器!

注意:PORT A与PORT B~PORT J 在功能选择方面有所不同。

GPxCON (x:B~J):00-----表示输入

01-----表示输出

10-----表示特殊功能

11-----保留不用

GPXUP:某位为1时,相应的引脚无内部上拉电阻;为0时,相应的引脚使用内部上拉电阻。

我所使用的开发板LED部分的连接图:

其中:nLED_1------------GPB5

nLED_2------------GPB6

nLED_3------------GPB7

nLED_4------------GPB8通过查S3C2440的手册,我们得到:

Register Address

GPBCON 0x56000010

GPBDAT 0x56000014

GPBUP 0x56000018

我们设置GPB5,GPB6,GPB7,GPB8为输出模式,则:

GPBCON应该设置为:

0b0000,0000,0000,0001,0101,0100,0000,0000=0x15400。

GPBDAT 寄存器对应位为1 灯灭,为0灯亮!(由电路图可知)

GPBUP5--GPBUP8设置为禁止上拉电阻,即:

GPBUP设置为:0b0011,1110,0000=0x1E0。

到此,我们为程序所作的准备工作已经结束了,下面是程序代码:

GPBCON EQU 0x56000010

GPBDAT EQU 0x56000014

GPBUP EQU 0x56000018

EXPORT LEDTEST

AREA LEDTESTASM ,CODE,READONLY ;该指令定义了一个代码段,段名为LEDTEST,属性只读

ENTRY ;程序入口标示符

LEDTEST

ldr r0,=GPBCON ;设置GPB5--GPB8 为output

ldr r1,[r0]

bic r1,r1,#0xFFF00

orr r1,r1,#0x15400

str r1,[r0]

ldr r0,=GPBUP ;设置GPB5--GPB8禁止上拉电阻

ldr r1,[r0]

orr r1,#0x1E0

str r1,[r0]

looptest

ldr r3,[r2]

bic r3,r3,#0xFFF

orr r3,r3,#0x51F

str r3,[r2] ;全部点亮

ldr r0,=0x2ffff

bl delay

ldr r3,[r2]

bic r3,r3,#0xFFF

str r3,[r2] ;全部灭

ldr r0,=0x2ffff

bl delay

ldr r3,[r2]

bic r3,r3,#0xFFF

orr r3,r3,#0x51F

str r3,[r2] ;全部点亮

ldr r0,=0x2ffff

bl delay

ldr r3,[r2]

bic r3,r3,#0xFFF

orr r3,r3,#0x7DF

str r3,[r2] ;点亮与GPB5所连接的LED

bl delay

ldr r3,[r2]

bic r3,r3,#0xFFF

orr r3,r3,#0x7BF

str r3,[r2] ;点亮与GPB6相连的LED ldr r0,=0x2ffff

bl delay

ldr r3,[r2]

bic r3,r3,#0xFFF

orr r3,r3,#0x77F

str r3,[r2] ;点亮和GPB7相连的LED ldr r0,=0x2ffff

bl delay

bic r3,r3,#0xFFF

orr r3,r3,#0x5FF

str r3,[r2] ;点亮和GPB8相连的LED ldr r0,=0x2ffff

bl delay

b looptest

delay

sub r0,r0,#1 cmp r0,#0x0

bne delay

mov pc,lr ;返回END

相关文档
最新文档