微處理器 - NXP LPC2103 - Assembly - EINT1(IRQ)



參考資料:
https://www.keil.com/dd/docs/datashts/philips/user_manual_lpc2101_2102_2103.pdf

暫存器


main.s

    .equ IODIR,        0xe0028008
    .equ IOCLR,        0xe002800c
    .equ IOSET,        0xe0028004
    .equ PINSEL0,      0xe002c000
    .equ EXTINT,       0xe01fc140
    .equ VICIntEnable, 0xfffff010

    .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, =PINSEL0
    ldr r1, =(1 << 28)
    str r1, [r0]

    ldr r0, =VICIntEnable
    ldr r1, =(1 << 15)
    str r1, [r0]

    ldr r0, =IODIR
    ldr r1, =(1 << 22)
    str r1, [r0]

    ldr r0, =IOCLR
    ldr r1, =(1 << 22)
    str r1, [r0]
    b .

irq_handler:
    ldr r0, =IOSET
    ldr r1, =(1 << 22)
    str r1, [r0]
    ldr r0, =EXTINT
    ldr r1, =0x02
    str r1, [r0]
    subs pc, lr, #4
    .end

完成