標(biāo)題:
S3C2440定時(shí)器匯編程序
[打印本頁(yè)]
作者:
xiaoliuzi
時(shí)間:
2017-7-11 16:00
標(biāo)題:
S3C2440定時(shí)器匯編程序
S3C2440定時(shí)器源程序如下:
;************口地址及數(shù)據(jù)符號(hào)化定義區(qū)**********************
pWTCON EQU 0x53000000
pLOCKTIME EQU 0x4c000000
pCLKDIVN EQU 0x4c000014
pUPLLCON EQU 0x4c000008
pMPLLCON EQU 0x4c000004
pBWSCON EQU 0x48000000
pSRCPND EQU 0x4a000000 ;中斷源懸掛寄存器地址
pINTPND EQU 0x4a000010 ;中斷懸掛寄存器地址
pINTMOD EQU 0x4a000004 ;中斷模式寄存器地址
pINTMSK EQU 0x4a000008
pINTSUBMSK EQU 0x4a00001c ;子中斷源屏蔽寄存器地址
pINTOFFSET EQU 0x4a000014 ;中斷源偏移地址寄存器地址
pTCFG0 EQU 0x51000000 ;定時(shí)器配置寄存器0
pTCFG1 EQU 0x51000004 ;定時(shí)器配置寄存器1
pTCNTB4 EQU 0x5100003c ;定時(shí)器4計(jì)數(shù)緩沖寄存器
pTCON EQU 0x51000008 ;定時(shí)器控制寄存器
DATA_EREA EQU 0x33FFFF00
vCLKDIVN EQU 0x4
vUPLLCON EQU 0x00038022
vMPLLCON EQU 0x0005c011
;*************以下為各寄存器BANK數(shù)據(jù)寬度設(shè)置數(shù)據(jù)***********
DW16 EQU (0x1)
DW32 EQU (0x2)
B1_BWSCON EQU (DW16)
B2_BWSCON EQU (DW16)
B3_BWSCON EQU (DW16)
B4_BWSCON EQU (DW32)
B5_BWSCON EQU (DW16)
B6_BWSCON EQU (DW32)
B7_BWSCON EQU (DW32)
;*************Bank 0 存儲(chǔ)器參數(shù)區(qū)**************************
B0_Tacs EQU 0x3
B0_Tcos EQU 0x3
B0_Tacc EQU 0x7
B0_Tcoh EQU 0x3
B0_Tah EQU 0x3
B0_Tacp EQU 0x1
B0_PMC EQU 0x0
;*************Bank 4 存儲(chǔ)器參數(shù)區(qū)**************************
B4_Tacs EQU 0x1
B4_Tcos EQU 0x1
B4_Tacc EQU 0x6
B4_Tcoh EQU 0x1
B4_Tah EQU 0x1
B4_Tacp EQU 0x0
B4_PMC EQU 0x0
;*************Bank 6 SDRAM存儲(chǔ)器參數(shù)區(qū)*********************
B6_MT EQU 0x3
B6_Trcd EQU 0x1
B6_SCAN EQU 0x1
;************* SDRAM 動(dòng)態(tài)存儲(chǔ)器所需的刷新參數(shù)區(qū)************
REFEN EQU 0x1
TREFMD EQU 0x0
Trp EQU 0x1
Tsrc EQU 0x1
Tchr EQU 0x2
REFCNT EQU 1268
;*************以下數(shù)據(jù)為CPSR中各工作模式的設(shè)置位信息*******
USERMODE EQU 0x10
IRQMODE EQU 0x12
SVCMODE EQU 0x13
MODEMASK EQU 0x1f
NOINT EQU 0xc0
;*************以下為管理模式、IRQ、及用戶模式堆棧指針數(shù)據(jù)***
UserStack EQU 0x33ff4800
SVCStack EQU 0x33ff5800
IRQStack EQU 0x33ff7000
;************以下為代碼區(qū)***************
AREA Init,CODE,READONLY
ENTRY
EXPORT _ENTRY
_ENTRY
ResetEntry
b _reset
b .
b .
b .
b .
b .
b IsrIRQ
b .
;*****************預(yù)存開機(jī)后需要提取并設(shè)置到特殊功能寄存器內(nèi)存儲(chǔ)器參數(shù)區(qū)的數(shù)據(jù),含數(shù)據(jù)寬度、刷新模式和頻率等
SMRDATA
DCD (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
DCD 0
DCD 0
DCD 0
DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
DCD 0
DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
DCD 0
DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Tsrc<<18)+(Tchr<<16)+REFCNT)
DCD 0x32
DCD 0x30
DCD 0x30
;*****以下IsrIRQ為中斷源判別程序***********
IsrIRQ
sub sp,sp,#4
stmfd sp!,{r8-r9}
ldr r9,=pINTOFFSET
ldr r9,[r9]
ldr r8,=HandleEINT0
add r8,r8,r9,lsl #2
ldr r8,[r8]
str r8,[sp,#8]
ldmfd sp!,{r8-r9,pc}
LTORG
;****************以下為復(fù)位異常處理程序,主要完成時(shí)鐘及存儲(chǔ)器的初始化***************
_reset
ldr r0,=pWTCON
ldr r1,=0x0
str r1,[r0]
ldr r0,=pINTMSK
ldr r1,=0xffffffff
str r1,[r0]
ldr r0,=pINTSUBMSK
ldr r1,=0x7fff
str r1,[r0]
ldr r0,=pLOCKTIME
ldr r1,=0x00ffffff
str r1,[r0]
ldr r0,=pCLKDIVN
ldr r1,=vCLKDIVN
str r1,[r0]
ldr r0,=pUPLLCON
ldr r1,=vUPLLCON
str r1,[r0]
nop
nop
nop
nop
nop
nop
nop
ldr r0,=pMPLLCON
ldr r1,=vMPLLCON
str r1,[r0]
;****設(shè)置SDRAM存儲(chǔ)器參數(shù),最多13個(gè),占52字節(jié)。***
adrl r0,SMRDATA
ldr r1,=pBWSCON
add r2,r0,#52
0
ldr r3,[r0],#4
str r3,[r1],#4
cmp r2,r0
bne %B0
;*********初始化可能用到的不同工作模式下的堆棧區(qū),即設(shè)置他們的堆棧指針*****
InitStacks
mrs r0,cpsr
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#IRQMODE
msr cpsr_cxsf,r1
ldr sp,=IRQStack
orr r1,r0,#USERMODE
msr cpsr_cxsf,r1
ldr sp,=UserStack
ldr pc,=Main
LTORG
;以下為主程序區(qū)
Main
ldr r0,=pINTMOD
ldr r1,=0x0
str r1,[r0]
ldr r0,=HandleEINT0+0x38 ;定時(shí)器4在二級(jí)向量表中的地址
adrl r1,HandleTime4 ;提取定時(shí)器4中斷處理程序地址
str r1,[r0]
ldr r0,=0x20005000
ldr r1,=0x00
str r1,[r0]
ldr r0,=0x20007000
ldr r1,=0x00
str r1,[r0]
ldr r0,=0x20006000
ldr r1,=0xff
str r1,[r0]
ldr r0,=pTCFG0
ldr r1,=0x0000f900
str r1,[r0]
ldr r0,=pTCFG1
ldr r1,=0x00002000
str r1,[r0]
ldr r0,=pTCNTB4
ldr r1,=0x0000ADC0
str r1,[r0]
ldr r0,=pTCON
ldr r1,=0x00600000
str r1,[r0]
ldr r0,=pTCON
ldr r1,=0x00500000
str r1,[r0]
ldr r0,=pINTMSK
ldr r1,=0xFFFFBFFF
str r1,[r0]
wait_server
b .
mov r0,r5
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#USERMODE
msr cpsr_cxsf,r1
b wait_server
LTORG
HandleTime4
stmfd sp!,{r0,r1,lr}
ldr r1,=int_count
ldr r1,[r1]
ldr r0,=0x20005000
str r1,[r0]
cmp r1,#16
beq step1
add r1,r1,#1
ldr r0,=int_count
;mov r1,#0
str r1,[r0]
b step2
step1 ldr r0,=int_count
mov r1,#1
str r1,[r0]
step2 ldr r0,=pINTSUBMSK
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
實(shí)驗(yàn)十定時(shí)器qrs10_2.rar
(1.96 KB, 下載次數(shù): 11)
2017-7-11 15:59 上傳
點(diǎn)擊文件名下載附件
S3C2440
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1