- 论坛徽章:
- 0
|
;************************************************************
; Institute of Automation, Chinese Academy of Sciences
;File Name: Init.s
;Description: Timer interrupt test.
;Author: JuGuang,Lee
;Date:
;**************************************************************
IOPMOD EQU 0x3FF5000 ;I/O口模式寄存器
IOPDATA EQU 0x3FF5008 ;I/O口数据寄存器
TMOD EQU 0x3FF6000 ;定时器模式寄存器
TDATA0 EQU 0x3FF6004 ;定时器数据寄存器
INTMOD EQU 0x3FF4000 ;中断模式寄存器
INTPND EQU 0x3FF4004 ;中断悬挂寄存器
INTMASK EQU 0x3FF4008 ;中断屏蔽寄存器
AREA Init,CODE,READONLY
ENTRY
B Reset_Handler ;复位异常向量,跳转到程序开始位置。
B . ;未定义指令异常,跳转到当前位置。
B . ;SWI异常,跳转到当前位置。
B . ;指令预取中止异常,跳转到当前位置。
B . ;数据访问中止异常,跳转到当前位置。
NOP
B IRQ_Handler ;IRQ异常,跳转到响应中断服务程序。
B . ;FIQ异常,跳转到当前位置。
Reset_Handler
;*********************************
;LED Display
;*********************************
LDR R1,=IOPMOD
LDR R0,=&ff
STR R0,[R1]
LDR R1,=IOPDATA
LDR R0,=&03
STR R0,[R1]
EOR R0,R0,R0
LEDDELAY
ADD R0,R0,#1
CMP R0,#&180000
BNE LEDDELAY
LDR R1,=IOPDATA
LDR R0,=&0
STR R0,[R1]
;***************************************
;User Stack
;***************************************
LDR R0, =0x3FF0000
LDR R1, =0xE7FFFF80 ;配置SYSCFG,片内4K Cache,4K SRAM
STR R1, [R0]
LDR SP, =0x3FE1000 ;SP指向4K SRAM的尾地址,堆栈向下生成
;***************************************
;Interrupt Special Registers
;***************************************
LDR R1,=INTMOD ;设置中断模式寄存器
LDR R0,=&0
STR R0,[R1]
LDR R1,=INTMSK ;设置中断屏蔽寄存器,只允许定时器0中断
LDR R0,=&1FFbFF
STR R0,[R1]
;**************************************
;Timer0 Special Registers
;**************************************
LDR R1,=TDATA0 ;定时器0的数据寄存器装入初始化值
LDR R0,=&3FFFFFF
STR R0,[R1]
LDR R1,=TMOD ;使能定时器0
LDR R0,=&01
STR R0,[R1]
B . ;循环等待中断发生
;*************************************************
;Timer0 Interrupt Service Routine
;*************************************************
IRQ_Handler
STMFD SP!,{R0-R6,LR} ;保护现场
LDR R1,=INTPND ;清INTPND中的对应位
LDR R0,=&400
STR R0,[R1]
LDR R0,=IOPDATA ;读IOPDATA的值加一并送回
LDR R1,[R0]
ADD R1,R1,#1
STR R1,[R0]
LDMFD SP!,{R0-R6,LR} ;恢复现场,中断返回
SUBS PC,LR,#4
END
****************************************************************************
看来看去,在看汇编代码的时候还是头脑比较清醒的,直接将整个过程描述出来,就象数自己的手指一样简单明了。c就象是带在手上的手套,好看也实用,就是有些人不清楚手套是怎么做出来的而已。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66913/showart_625880.html |
|