dsPIC33F的内部寄存器由16个16位工作寄存器(W0~W15)、两个40位累加器(ACCA和ACCB)、状态寄存器(SR)、内核控制寄存器(CORCON)、数据表页寄存器(TBLPAG)、程序空间可视性页寄存器(PSVPAG)、DO和REPEAT寄存器(DOSTART、DOEND、DCOUNT和RCOUNT)以及程序计数器(PC)组成。
(1)工作寄存器
工作寄存器可作为数据、地址或偏移量寄存器,其中W0是唯一能够在执行文件寄存器寻址的工作寄存器。W15是专用的软件堆栈指针(Stack Pointer,SP),在程序异常处理、子程序调用和返回时W15会被自动修改。W14是专用的堆栈帧指针,由LNK和ULNK指令定义,它也能够被任何指令引用(方式与引用所有其他工作寄存器相同)。堆栈指针总是指向第一个可用的字并从低地址到高地址生长。出栈(读操作)时,堆栈指针预递减,压栈(写操作)时,堆栈指针后递增。工作寄存器的内部结构如图1-4所示。
图1-4 工作寄存器的内部结构
①W15和SPLIM没有影子寄存器(www.xing528.com)
一些寄存器有与之相关联的影子寄存器。影子寄存器是用来临时保存数据的寄存器,当一个周期内发生某些事件时它会将主寄存器的内容备份在影子寄存器中,也可以将影子寄存器的内容送回主寄存器。影子寄存器都是不可直接访问的。当某个工作寄存器执行字节操作时,只有目标寄存器的低字节会受到影响。所有寄存器都是存储器映射的,对于存储器映射的工作寄存器来说,可以通过对数据存储空间进行字节宽度的访问来对工作寄存器的低字节和高字节进行操作。
(2)状态寄存器
状态寄存器(SR)是一个16位的寄存器,它分成高、低字节的寄存器,低字节寄存器称为低状态寄存器(Lower Status Register,SRL),高字节寄存器称为高状态寄存器(Higher Status Register,SRH)。SRL包含了所有的微控制单元(MCU)、算术逻辑单元(ALU)的操作状态标志,以及CPU中断优先级状态位IPL<2∶0>和循环有效状态位RA;SRH包含了DSP加法器/减法器状态位、DO循环有效位DA和辅助进位标志位DC等。
(3)内核控制寄存器
内核控制寄存器(CORCON)包含DSP乘法器和DO循环硬件操作的控制位,还包含CPU中断优先级状态位IPL3。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。