⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s

📁 基于LPC21XX的外部中断源码
💻 S
字号:
;****************************************************************************
; 文 件 名:EINT3_VECT.C
; 功    能:使用外部中断3进行B1的控制,每当有一次中断时,即取反B1控制口,以便指示中断输入。
;           使用向量中断方式,EINT3下降沿有效。
; 说    明:将跳线器JP2 JP4短接,JP7断开,然后反复按下与释放KEY1。
;***************************************************************************
			INCLUDE		LPC2294.INC
			EXPORT  	MAIN
			
VIC_BASE	EQU		0xFFFFF000
				
BEEPCON  	EQU		0x00000080				; P0.7引脚控制B1,低电平蜂鸣

			AREA   	EINT1_VECTC,CODE,READONLY 	
			ENTRY							
		
MAIN 		MSR     CPSR_c, #0x5F			; 切换处理器工作模式,并允许IRQ中断
            LDR		R0,=PINSEL0				
			MOV		R1,#0x00000180			
			STR		R1,[R0]					; 设置管脚连接,P0.20设置为EINT3
			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,#0x08
			STR		R1,[R0]					; 设置EINT3中断为边沿触发模式
			LDR		R0,=EXTPOLAR
			MOV		R1,#0x00				
			STR		R1,[R0]					; 设置EINT3中断为下降沿触发
			LDR		R0,=EXTINT
			MOV		R1,#0x08
			STR		R1,[R0]					; 清除EINT3中断标志	

			LDR		R0,=VIC_BASE
			MOV		R1,#0x00000000
			STR		R1,[R0,#0x0C]			; 设置所有中断分配为IRQ中断
			MOV		R1,#0x31
			STR		R1,[R0,#0x200]			; 分配EINT3中断到向量中断0
			LDR		R1,=IRQ_EINT3
			STR		R1,[R0,#0x100]			; 设置中断服务程序地址
			MOV		R1,#0x00020000
			STR		R1,[R0,#0x10]			; 使能EINT3中断
		
WAIT_IRQ	B		WAIT_IRQ	


;******************************************************************************
; 名    称:IRQ_EINT3
; 功    能:EINT3中断服务程序
; 入口参数:无
; 出口参数:无
; 占用资源:R0、R1
;******************************************************************************
IRQ_EINT3	
			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
			MOV		R1,#0x08
			STR		R1,[R0]					; EXTINT=0x08,清除EINT3中断标志
			
			LDR		R0,=VICVectAddr
			MOV		R1,#0
			STR		R1,[R0]					; VICVectAddr=0						
   			SUBS	PC,LR,#4				; IRQ中断返回
			
			END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -