?? eint1_def.s
字號:
;******************************************************************************
; 文件名:EINT1_DEF.S
; 功能:使用外部中斷1進行B1的控制,每當有一次中斷時,即取反B1控制口,以便指示中斷輸入。
; 使用非向量中斷方式。
; 說明:將跳線器JP9短接,JP4斷開,然后短接/斷開JP1(使EINT1為低/高電平)。
;******************************************************************************
INCLUDE LPC2294.INC
EXPORT MAIN
VIC_BASE EQU 0xFFFFF000
BEEPCON EQU 0x00000080 ; P0.7引腳控制B1,低電平蜂鳴
AREA EINT1_DEFC,CODE,READONLY
ENTRY
MAIN MSR CPSR_c, #0x5F ; 切換處理器工作模式,并允許IRQ中斷
LDR R0,=PINSEL0
MOV R1,#0x20000000
STR R1,[R0] ; 設置管腳連接,P0.14設置為EINT1
LDR R0,=IO0DIR
LDR R1,=BEEPCON
STR R1,[R0] ; 設置BEEP控制口為輸出
LDR R0,=MEMMAP
MOV R1,#0x03
STR R1,[R0] ; REMAP操作(若寫到片內FLASH,則不需要REMAP)
EINT1_INI LDR R0,=EXTMODE
MOV R1,#0x00
STR R1,[R0] ; 設置EINT1中斷為電平觸發模式
LDR R0,=EXTINT
MOV R1,#0x0F
STR R1,[R0] ; EXTINT=0x0F
LDR R0,=VIC_BASE
MOV R1,#0x00000000
STR R1,[R0,#0x0C] ; VICIntSelect=0x00000000
LDR R1,=IRQ_EINT1
STR R1,[R0,#0x34] ; VICDefVectAddr=(int)IRQ_EINT1
MOV R1,#0x00008000
STR R1,[R0,#0x10] ; VICIntEnable=0x00008000
WAIT_IRQ B WAIT_IRQ
;******************************************************************************
; 名稱:IRQ_EINT1
; 功能:EINT1中斷服務程序
; 入口參數:無
; 出口參數:無
; 占用資源:R0、R1
;******************************************************************************
IRQ_EINT1
LDR R0,=IO0SET
LDR R1,[R0] ; 讀取IO0SET的值
ANDS R1,R1,#BEEPCON
LDREQ R0,=IO0SET ; 設置R0=IO0SET
LDRNE R0,=IO0CLR ; 或設置R0=IO0CLR
MOV R1,#BEEPCON
STR R1,[R0]
LDR R0,=EXTINT
WAIT_UP MOV R1,#0x02
STR R1,[R0] ; EXTINT=0x02,清除EINT1中斷標志
LDR R1,[R0]
CMP R1,#0
BNE WAIT_UP ; 若外部中斷信號仍為低電平,則循環等待
LDR R0,=VICVectAddr
MOV R1,#0
STR R1,[R0]
SUBS PC,LR,#4 ; IRQ中斷返回
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -