分类: 嵌入式
2011-07-09 20:53:27
;
; Mini2440 LED实验
; 初始化CPU、禁止看门狗、时钟设置、初始化GPB
;
WTCON EQU 0x53000000
CLKDIVN EQU 0x4c000014
MPLLCON EQU 0x4c000004
UPLLCON EQU 0x4c000008
GPBCON EQU 0x56000010
GPBDAT EQU 0x56000014
GPBUP EQU 0x56000018
AREA ledCode, CODE
ENTRY
start
; 异常向量表
B Rreset_Handle ; 复位异常
B Undef_Handle ; 未定义异常
B Swi_Handle ; 软中断异常
B . ; 预取中止
B . ; 数据中止
B . ; 保留
B . ; 中断
B . ; 快中断
Rreset_Handle
; 初始化CPU
; 禁止看门狗
ldr v1, =WTCON ; 加载看门狗地址
ldr v2, [v1] ; 读取看门狗寄存器值
bic v2, v2, #1<<5 ; 禁止看门狗
str v2, [v1]
; 时钟设置
ldr v1, =CLKDIVN
mov v2, #0x07 ; 设置CLKDIVN为7
str v2, [v1]
; 设置UPLLCON 输入12M,输出48M
ldr v1, =UPLLCON
ldr v2, =((1<<1) | (1<<5) | (56 << 12))
str v2, [v1]
; 延时
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
; 设置MPLLCON 输入12M,输出304.8M
ldr v1, =MPLLCON
ldr v2, =((1<<0) | (1<<4) | (68 << 12))
str v2, [v1]
; 初始化GPB
ldr v1, =GPBCON
ldr v2, =1<<0 | 1<<10 | 1<<12 | 1<<14 | 1<<16 ; 设置 0 4 5 6 为输出口
str v2, [v1]
bl dey
swi 0 ; 软中断
Undef_Handle
; 软中断服务程序
Swi_Handle
; led灯闪烁,蜂呜器响
mov v2, #0
led
ldr v1, =GPBDAT
mvn v2, v2
; bic v2, v2, #1
str v2, [v1]
bl dey
bl dey
bl dey
bl dey
b led
; 长延时
dey
ldr r1, =0xff
loop
ldr r2, =0xff
loop1
subs r2, r2, #1
nop
bne loop1
subs r1, r1, #1
bne loop
bx lr ; 延时函数返回
end