LPC2103 >> Assembly

Timer3


參考資料:
1. pdf

暫存器





main.s

  .equ IODIR,        0xe0028008
  .equ IOCLR,        0xe002800c
  .equ IOSET,        0xe0028004
  .equ PINSEL0,      0xe002c000
  .equ EXTINT,       0xe01fc140
  .equ VICIntEnable, 0xfffff010
  .equ T3PR,         0xe007400c
  .equ T3MR0,        0xe0074018
  .equ T3MCR,        0xe0074014
  .equ T3TCR,        0xe0074004
  .equ T3CTCR,       0xe0074070
  .equ T3IR,         0xe0074000

  .data
blink: .dcb 1

  .text
  .align 2
  .global _start
_start:    b reset
_undef:    b .
_swi:      b .
_pabort:   b .
_dabort:   b .
_reserved: b .
_irq:      b irq_handler
_fiq:      b .
    
reset:
  mrs r0, cpsr
  bic r0, #0x80
  msr cpsr_c, r0

  ldr r0, =T3PR
  ldr r1, =0x63
  str r1, [r0]
 
  ldr r0, =T3MR0
  ldr r1, =5000
  str r1, [r0]
 
  ldr r0, =T3MCR
  ldr r1, [r0]
  orr r1, #0x03
  str r1, [r0]
 
  ldr r0, =T3TCR
  ldr r1, =0x02
  str r1, [r0]
 
  ldr r0, =T3TCR
  ldr r1, =0x01
  str r1, [r0]
 
  ldr r0, =VICIntEnable
  ldr r1, =(1 << 27)
  str r1, [r0]
 
  ldr r0, =IODIR
  ldr r1, =(1 << 22)
  str r1, [r0]
   
  ldr r0, =IOCLR
  ldr r1, =(1 << 22)
  str r1, [r0]

  ldr r0, =blink
  ldr r1, =0x00
  str r1, [r0]
  b .
 
irq_handler:
  ldr r0, =blink
  ldr r1, [r0]
  cmp r1, #0x00
  beq 1f
  ldr r0, =IOSET
  ldr r1, =(1 << 22)
  str r1, [r0]
  b 2f
1:
  ldr r0, =IOCLR
  ldr r1, =(1 << 22)
  str r1, [r0]
2:
  ldr r0, =blink
  ldr r1, [r0]
  eor r1, #0xff
  str r1, [r0]

  ldr r0, =T3IR
  ldr r1, =0x01
  str r1, [r0]
  subs pc, lr, #4
  .end

完成


返回上一頁