①0x00000000,8 ②0x40000000,8
③0x00000000,16 ④0x7FFFE000,8
4、外部中断唤醒掉电设计:
以下代码是初始化外部中断0,用它来唤醒掉电的LPC2114,请填空。 PINSEL0=0x00000000;
PINSELI = (PINSEL1&0XFFFFFFFC)|0X01; //设置I/O连接,PO.16设置为EINTO EXTMODE =0X00; //设置EINT0为电平触发模式
EXTPOLAR=0X00; //设置EINT0为低电平触发
EXTWAKE =0X01; //允许外部中断0唤醒掉电的CPU
EXTINT=0x0F; //清除外部中断标识 第四章
程序清单4.1寄存器相加 ;文件名:TESTI.S
;功能:实现两个寄存器相加
;说明:使用ARMulate软件仿真调试 AREA
Examplel,CODE,READONLY ;声明代码段Examplel
ENTRY 标识程序入口
CODE32 声明32位ARM指令
START MOV #0 MOV R1,#10 LOOP BL ADD_SUB 序ADD_SUB B
LOOP LOOP ADD_SUB
ADDS R0,R0,R1 R0=R0+R1
,
;设置参数 ; ; ;调用子程 ;跳转到 ; R0
MOV PC,LR ;子程序返回
END ;文件结束
程序清单4.2 读取SMI立即数 T_bit EQU 0X20 SWI_Handler
STMFD SP!,{R0_R3,R12,LR} ;现场保护 MRS R0,
SPSR ;读取SPSR STMED SP!,{R0} ;保存SPSR TST R0,
#T_bit ;测试T标志位 LDRNEH R0,[LR,
#_2] ;若是Thumb指令,读取指令码(16位)
BICNE R0,R0,,
#0xFF00 ;取得Thumb指令的8位立即数
LDREQ R0,[LR,
#_4] ;若是ARM指令,读取指令码(32位)
BICEQ R0,R0,
#0Xff000000 ;取得ARM指令的24位立即数
……
LDMFD SP!,{ R0_R3,R12,PC} ;SWI异常中断返回
程序清单4.3使用IRQ中断 ENABLE_IRQ MRS R0,CPSR BIC R0,R0,#0x80 MSR CPSR_C,R0 MOV PC,LR
程序清单4.4禁能IRQ中断 DISABLE_IRQ
MRS R0 CPSR ORR R0,R0,#0x80 MSR CPSR_C,R0 MOV PC,LR
程序清单4.5堆栈指令初始化 INTSTACK
WOV R0,LR ;保存返回地址 ;设置管理模式堆栈 MSR CPSR_C,#0xD3 LDR SP,stacksvc ;设置中断模式堆栈
MSR CPSR_C,#0xD2 LDR SP,Stacklrq ……
程序清单4.6小范围地址的加载 ……
ADR R0,DISP_TAB ;加载转换表地址
LDRB R1,[R0,R2] ;使用R2作为参数,进行查表