—使用专门的跳转指令(如B指令)。
—直接向程序计数器 PC写入跳转地中带址值。
通过向程序计数器 PC写入跳转地址值,可以实现在 4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在 4GB连续的线性地址空间的子程序调用。
ARM指令集中的跳转指令可以完成从当前指令向前或向后的 32MB的地址空间的跳转,包括以下4条指令:
— B 跳转指令(TI C66x DSP指令集也有该指令没培喊)
B 指令的格式为:
B 目标地址//程序跳转到枯野目标地址处执行
B Label //程序无条件跳转到标号Label处执行
//(2) 主程序// 该程序用于实验演示模板上的8个LED的循环显示
#include "register.h"
int temp,i
main()// 初始化子程序
{
asm(" setc SXM")// 抑制符号位扩展
asm(" clrc OVM")//答模 累加器中结果正常溢出
asm(" clrc CNF")// B0被配置为数据存储空间
asm(" setc INTM")// 禁止所有中断
SCSR1=0x81FE// CLKIN=10M,CLKOUT=4*CLKIN=40M
WDCR=0x0E8// 不使能看门狗,因为SCSR2中的WDOVERRIDE
// 即WD?の桓次缓蟮娜笔≈滴?,故可以用
// 软件禁止看门狗
IMR=0x0000 // 禁止所有中断
IFR=0x0FFFF// 清除全部中断标志,"写1清0"皮举饥
MCRA=MCRA&0x00EF // IOPA4,IOPA6,IOPB端口配置为一般的I/O功能, TMS320LF240x的
// 端口均为8位,MCRA为16位因此控制了IOPA,
// 和IOPB的设置
while(1)
{
PBDATDIR=0x0FFe0 // IOPB端口设置为输出方式燃返
PFDATDIR=0x0404
PFDATDIR=0x0FFF0 // IOPF2 设置为输出方式,且IOPF2=1
}
}
// 直接返回中断服务程序
void interrupt nothing( )
{
return
}
//这是一个可用的程序,供你参考
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)