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

📄 eint0_def.s

📁 基于ARM7的LPC21XX系列的部分汇编源码
💻 S
字号:
;****************************************************************************** 
; 文件名:EINT0_DEF.S
; 功能:使用外部中断0进行LED1的控制,每当有一次中断时,即取反LED1控制口,以便指示中断输入。
;      使用非向量中断方式。
; 说明:将跳线器JP4_LED1短接,然后按下/放开KEY1,使EINT0为低/高电平。
;****************************************************************************** 
			INCLUDE		LPC2294.INC
			EXPORT  	MAIN
			
VIC_BASE	EQU		0xFFFFF000
				
LED1CON  	EQU		(1<<22)					; P0.22引脚控制LED1,低电平点亮

			AREA   	EINT0_DEFC,CODE,READONLY 								
		
MAIN 		MSR     CPSR_c, #0x5F			; 切换处理器工作模式,并允许IRQ中断
            LDR		R0,=PINSEL0				
			MOV		R1,#0x00000000			
			STR		R1,[R0]					
			MOV		R1,#0x00000001			
			STR		R1,[R0,#0x04]			; 设置管脚连接,P0.16设置为EINT0
			
			LDR		R0,=IO0DIR				
			LDR		R1,=LED1CON
			STR		R1,[R0]					; 设置LED1控制口为输出
			
			LDR		R0,=MEMMAP
    		MOV		R1,#0x02
			STR		R1,[R0]					; REMAP操作(若写到片内FLASH,则不需要REMAP)
			
EINT0_INI	LDR		R0,=EXTMODE
			MOV		R1,#0x00
			STR		R1,[R0]					; 设置EINT0中断为电平触发模式
			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_EINT0
			STR		R1,[R0,#0x34]			; VICDefVectAddr=(int)IRQ_EINT0
			MOV		R1,#0x00004000
			STR		R1,[R0,#0x10]			; VICIntEnable=0x00004000			
		
WAIT_IRQ	B		WAIT_IRQ			
					


;******************************************************************************
; 名称:IRQ_EINT0
; 功能:EINT0中断服务程序
; 入口参数:无
; 出口参数:无
; 占用资源:R0、R1
;******************************************************************************
IRQ_EINT0	
			LDR		R0,=IO0SET
			LDR		R1,[R0]					; 读取IO0SET的值
			ANDS	R1,R1,#LED1CON
			LDREQ	R0,=IO0SET				; 设置R0=IO0SET
			LDRNE	R0,=IO0CLR				; 或设置R0=IO0CLR
			MOV		R1,#LED1CON
			STR		R1,[R0]
			
			LDR		R0,=EXTINT
WAIT_UP		MOV		R1,#0x01
			STR		R1,[R0]					; EXTINT=0x01,清除EINT0中断标志
			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 + -