管理提醒: 本帖被 xoom 执行加亮操作(2011-06-19)
rGPKCON0 EQU 0x7F008800;S3C6410GPK端口配置寄存器0(GPK0-GPK7)
AREA LED1,CODE,READONLY ; 声明代码段LED1
ENTRY ; 标识程序入口
CODE32 ; 声明32位ARM指令
START
ldr r0,=rGPKCON0;给寄存器R0赋值GPK端口配置寄存器0的地址
loop
ldr r1,=0x00010000;打开GPK4针脚.GPKCON0寄存器,从左到右第一位是7第二位是6第三位是5第四位是4.
str r1,[r0];由于寄存器R0中储存内容为GPK端口配置寄存器0的地址,所以寄存器R1的内容会写入GPK端口配置寄存器0
bl delay;跳转到延迟函数位置执行程序,并且记下当前PC指针数据到r14(lr)寄存器以备返回
ldr r1,=0x00100000;打开GPK5针脚指令
str r1,[r0];写指令
bl delay;延迟
ldr r1,=0x01000000;打开GPK6针脚指令
str r1,[r0];写指令
bl delay;延迟
ldr r1,=0x10000000;打开GPK7针脚指令
str r1,[r0];些指令
bl delay;延迟
b loop;跳转到loop标签,达到程序无限循环
delay
ldr r3,=0x4ffff;将要延迟的时间(循环次数)写入
tag
sub r3,r3,#1;可以理解为r3=r3-1
cmp r3,#0x0;判断寄存器r3是否等于0
bne tag;b为arm跳转指令ne为条件码(不相等)即:寄存器r3不等于0则跳转到tag标记
mov pc,lr;将bl指令处储存的地址写入pc程序指针寄存器达到跳转的效果
END
[ 此帖被ici2cc在2011-06-21 16:14重新编辑 ]