好文档 - 专业文书写作范文服务资料分享网站

ARM嵌入式系统基础教程第二版课后习题答案

天下 分享 时间: 加入收藏 我要投稿 点赞

①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作为参数,进行查表

2vyj29pcty0fvam2gyzr6h1tx45dea007m7
领取福利

微信扫码领取福利

微信扫码分享