您的位置:首页 > 编程语言

FS2410开发板测试LED的ADS汇编程序代码

2008-04-09 22:09 316 查看
今天写了一下这个代码:
 
;控制4个LED的亮灭

;寄存器地址
rGPFCON    equ 0x56000050
rGPFDAT equ 0x56000054
rGPFUP    equ 0x56000058

;常量定义
ledONDATA    equ 0xfffffeff
ledOFFDATA    equ    0xf0
delayCOUNT    equ 0x2ffff

;LED个数
numLED    equ    0x4

    AREA    led_on,CODE,READONLY
    CODE32
   
    ENTRY
   
start
    mov    sp,#0x0c700000    ;定义堆栈指针   
   
    ldr r0,=rGPFCON        ;GPFCON
    mov r1,#0x5500        ;GPF4~GPF7 out
    str r1,[r0]            ;GPF4~GPF7设置为输出
   
    ldr r0,=rGPFUP        ;GPFUP
    ldr r1,=0xffff
    str r1,[r0]            ;禁止内部上拉
   
main_loop
    ldr r0,=rGPFDAT        ;GPFDAT
   
    mov r4,#numLED        ;装入LED个数作为循环次数
   
led_loop
    ldr r1,=ledONDATA    ;装入LED控制值
    mov r1,r1,ror r4      ;循环显示
    bl ledon
   
    ldr r3,=delayCOUNT
    bl delay
   
    sub r4,r4,#1
    cmp r4,#0x0
    bne led_loop
   
    ldr r1,=ledOFFDATA
    bl ledoff            ;全灭
   
    ldr r3,=delayCOUNT
    bl delay
   
    b main_loop

;入口参数:
;        r0:GPFDAT地址
;        r1:LED亮控制值
ledon
    ldr r2,[r0]        ;读出GPFDAT当前值
    and r2,r2,r1    ;进行LED亮控制
    str r2,[r0]        ;写入GPFDAT       
    mov pc,lr   
   
;入口参数:
;        r0:GPFDAT地址
;        r1:LED灭控制值
ledoff
    ldr r2,[r0]        ;读出GPFDAT当前值
    orr r2,r2,r1
    str r2,[r0]        ;写入GPFDAT       
    mov pc,lr   
       
;入口参数
;    r3:延时常数
delay
    sub r3,r3,#1    ;r0=r0-1           
    cmp r3,#0x0        ;将r0的值与0相比较
    bne delay        ;比较的结果不为0(r0不为0),继续调用delay,否则执行下一条语句
    mov pc,lr        ;返回   
   
    end
-----------------------------------------------------------------------------------------------------------------------------------------------
对于其他的开发板,可能设计的控制LED的GPIO不同,仅需修改相应的部分即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 测试 delay c