3.2.4 程序控制[40][41]
1.堆栈
C24x具有16位宽度,8级深度的硬件堆栈。用户可以用两组指令访问堆栈:
(1)PUSH(压入)和POP(弹出)
(2)PSHD和POPD
这两条指令允许用户在数据存储器中为超过八级的子程序或中断嵌套建立堆栈。
2.微堆栈:
在执行某些指令之前,程序地址产生逻辑使用16位宽度、1级深度的MSTACK存储返回地址。MSTACK操作对用户是不可见的。
3.流水线操作:
C24x流水线具有四个独立的阶段:取指令、指令译码、取操作数以及指令执行。在任何给定的周期内,一至四条不同指令可以激活,每条指令处于不同阶段。
3.2.5寻址方式[40][41]
C24X有三种寻址方式:
1.立即寻址方式:
在立即寻址方式中,指令字中包含指令所使用的一个常数。
(1)短立即寻址:把一个8位、9位或13位的常数作为操作数。
(2)长立即寻址:采用长立即寻址的指令把一个16位常数作为操作数。
2.直接寻址方式:
在直接寻址方式中,数据存储器按地址组织为以128个字为单位的数据页。全部64K的数据存储器共包含512个数据页,标号从0至511。当前数据页由状态寄存器ST0中的9位数据页指针(DP)值决定。该页上被索引的特定单元取决于7位偏移量。偏移量由指令寄存器的7位最低有效位(LSB)提供。
3.间接寻址方式:
八个辅助寄存器(AR0-AR7)提供了灵活而强大的间接寻址能力。通过包含在辅助寄存器中的16位地址,可以访问64K数据存储器空间的任一单元。
为选择一特定的辅助寄存器,可向状态寄存器ST0中的3位辅助寄存器指针(ARP)装入0-7。
当前辅助寄存器内容用作将被访问的数据存储器地址。当指令用毕该数据值后,辅助寄存器内容可由ARAU采用无符号16位算术运算执行增量或减量。
间接寻址选项:
C24x提供四种间接寻址选项:
(1)不增不减当前辅助寄存器的内容。
(2)增1减1:将当前辅助寄存器内容增1或减1。
(3)增加或减去索引量:AR0中的值作为索引量,将当前辅助寄存器内容增加或减去索引量。
(4)加或减去索引量且反向进位:AR0中的值作为索引量,当前辅助寄存器内容增加或减去索引量。加法或减法进行反向进位, 这适用于FFT算法。
3.2.6 事务管理器[40][41]
事件管理器模块包括以下功能模块:
•三个通用定时器
•三个全比较单元
•PWM电路,其中包括空间矢量的PWM电路,死区发生单元和输出逻辑
•四个捕获单元
•正交编码器脉冲电路
•中断逻辑
1.通用定时器
事件管理器模块有三个通用定时器,每个通用定时器包括:
•一个可读/写的16位增加和增/减计数器,TxCNT(x=1,2,3)
•一个可读/写的16位定时器比较寄存器(屏蔽的),TxCMPR(x=1,2,3)
•一个可读/写的16位定时器周期寄存器(屏蔽的),TxPR(x=1,2,3)
•可读/写的16位控制寄存器TxCON(x=1,2,3)
•可用于内部和外部时钟输入的可编程的预定标器
•控制和中断逻辑
•一个通用定时器比较输出引脚TxPWM/TxCMP(x=1,2,3)
•输出逻辑
另一个控制寄存器GPTCON规定了通用定时器针对不同定时器事件所应采取的操作,并且指明了所有三个通用定时器的计数方向。
通用定时器计数操作:
每个通用定时器有6种可选操作模式:
(1) 停止/保持模式
定时器计数器、比较输出和预定标计数器都保持不变
(2) 单增计数模式
通用定时器按照规定频率的输入时钟计数,直到定时计数器的值与周期寄存器的值匹配为止。匹配之后的下一个输入时钟的上升沿,通用定时器将复位为零并且通过复位定时器使能位TxCON[6]来禁止它的计数操作。
(3) 连续增计数模式
在这种模式下,每次定时器复位为零后,该通用定时器重复在单增计数模式下的操作。
(4) 定向增/减计数模式
通用定时器在定向增/减计数模式中将根据定标的时钟和TMRDIR输入来增或减计数。
(5) 单增/减计数模式
通用定时器将根据定标的时钟输入增计数至它的周期寄存器值。然后该通用定时器改变它的计数方向并且以减方向计数,直到0为止。
(6) 连续增/减计数模式
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>