Upload
aakash
View
215
Download
2
Embed Size (px)
DESCRIPTION
ARM
Citation preview
area ponn, CODE, READONLY
IO1DIR EQU 0XE0028018
IO1SET EQU 0XE0028014
IO1CLR EQU 0XE002801C
IO1PIN EQU 0XE0028010
T0CTCR EQU 0XE0004070
T0PR EQU 0XE000400C
T0TCR EQU 0XE0004004
T0TC EQU 0XE0004008
PINSEL0 EQU 0XE002C000
EXTMODE EQU 0XE01FC148
EXTPOLAR EQU 0XE01FC14C
VICIntEnable EQU 0XFFFFF010
VICIntSelect EQU 0XFFFFF00C
VICVectCntl2 EQU 0XFFFFF208
VICVectAddr2 EQU 0XFFFFF108
VICVectAddr EQU 0XFFFFF030
EXTINT EQU 0XE01FC140
MOV R11, #0X01
MOV R12, #0X09
LDR R2, =IO1DIR
MOV R1, #0XFFFFFFFF
STR R1,[R2]
LDR R2, =PINSEL0
MOV R1, #0X80000000
STR R1,[R2]
LDR R2, =EXTMODE
MOV R1, #0X0
STR R1,[R2]
LDR R2, =EXTPOLAR
MOV R1, #0X0
STR R1,[R2]
LDR R2, =VICIntEnable
MOV R1, #0X00010000
STR R1,[R2]
LDR R2, =VICIntSelect
MOV R1, #0X00000000
STR R1,[R2]
LDR R2, =VICVectCntl2
MOV R1, #0X30
STR R1,[R2]
LDR R2, =VICVectAddr2
LDR R1, =IRQ_Handler
STR R1,[R2]
MAIN
LDR R9, =IO1SET
LDR R10, =IO1CLR
ldr r7, =0xffffffff
STR R7,[R9]
BL DELAY
ldr r8, =0xffffffff
STR R8,[R10]
BL DELAY1
B MAIN
DELAY
MOV R6,LR
LDR R2, =T0CTCR
MOV R1, #0X0
STR R1,[R2]
LDR R2, =T0PR
ldr R1, =0X0BB7 ; the clock of timer gets pulses with freguency as fclk = fosc/4, since the fosc is 12 MHz then fclk is 3 MHz
; the timing is calculate by the formula t=PR+1/fclk, hence to get 1ms t = 2999+1/3000000, 2999D = 0BB7H
STR R1,[R2]
LDR R2, =T0TCR
MOV R1, #0X02
STR R1,[R2]
LDR R2, =T0TCR
MOV R1, #0X01
STR R1,[R2]
L LDR R2, =T0TC
LDR R3, [R2]
MOV R4, R11 ; this T0TC can be changed to get the multiples of l ms delay
CMP R3,R4
BLT L
MOV R5, #0X0
LDR R1, =T0TC
STR R5, [R1]
LDR R1, =T0TCR
STR R5, [R1]
MOV LR,R6
BX LR
DELAY1
MOV R6,LR
LDR R2, =T0CTCR
MOV R1, #0X0
STR R1,[R2]
LDR R2, =T0PR
ldr R1, =0X0BB7 ; the clock of timer gets pulses with freguency as fclk = fosc/4, since the fosc is 12 MHz then fclk is 3 MHz
; the timing is calculate by the formula t=PR+1/fclk, hence to get 1ms t = 2999+1/3000000, 2999D = 0BB7H
STR R1,[R2]
LDR R2, =T0TCR
MOV R1, #0X02
STR R1,[R2]
LDR R2, =T0TCR
MOV R1, #0X01
STR R1,[R2]
LS LDR R2, =T0TC
LDR R3, [R2]
MOV R4, R12 ; this T0TC can be changed to get the multiples of l ms delay
CMP R3,R4
BLT LS
MOV R5, #0X0
LDR R1, =T0TC
STR R5, [R1]
LDR R1, =T0TCR
STR R5, [R1]
MOV LR,R6
BX LR
IRQ_Handler
SUB LR,LR,#4
MOV R11, #0X06
MOV R12, #0X04
LDR R2, =VICVectAddr
LDR r1, =0x0
STR R1, [R2]
LDR R2, =EXTINT
LDR r1, =0x04
STR R1, [R2]
BX LR
END