您的位置:首页 > 其它

TX2440 裸跑实验-LED灯闪烁(ADS1.2编译) 进阶(一)

2013-04-21 12:36 471 查看
TX2440 裸跑实验-LED灯闪烁(ADS1.2编译) 进阶(一)
一.实验目的:
理解汇编的编程结构,了解arm汇编的子程序调用.
二.实验环境:
TX2440平台

三.实验工具:

ADS1.2 + AXD + JLINK调试

四.实验步骤:

1.在ads 上建立新工程,增加源文件init.s

init.s源码:

;我的LED程序,EastonWoo procedure

LED_CONFIG equ 0x56000050

LED_SWITCH equ 0x56000054

LED_UP equ (1<<1) ;第二个灯 ,我的第1个灯坏了

DELAY_TIME equ 0x70010000 ;这个时间像是没有效果,但是单步调试,灯还是会闪的.

area init,code,readonly

entry ;一个进程中至少有一个.

start

ldr sp,=0x33ff8000 ;程序有效开始指令地址:0x30000000,,堆栈设在内存里面,也就是大于0x30000000,注意不要跟代码区冲突;

;如果设成0x1000,是写不进栈的,读出来是0xFFFFFFFF.

bl initial ;子程序 ;在内存中的地址为0x30000004

loop ;主循环

;关灯

ldr r0,=LED_SWITCH

ldr r1,[r0]

orr r1,r1,#LED_UP

str r1,[r0]

;延时DELAY_TIME

ldr r0,=DELAY_TIME

bl delay_here

;开灯

ldr r0,=LED_SWITCH

ldr r1,[r0]

mvn r2,#LED_UP

and r1,r1,r2

str r1,[r0]

;延时DELAY_TIME

ldr r0,=DELAY_TIME

bl delay_here

b loop ;类似于goto

initial

ldr r0,=LED_CONFIG ;控制内容给r0

ldr r1,[r0]

and r1,r1,#0xffffff00 ;控制内容清低8位

orr r1,r1,#0x55 ;控制内容低8位赋值.

str r1,[r0]

mov pc,lr

delay_here

sub r1,r1,#1

cmp r1,#0

bne delay_here

mov pc,lr

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: