HT46R064B/065B/066B
指令集介绍
简介
任何单片机成功运作的核心在于它的指令集,此指令为一组程序指令码,用来指导单片机如何去
执行指定的工作。在盛群单片机中,提供了丰富且灵活的指令集,共超过 60 条,程序设计师可以
事半功倍地实现他们的应用。
为了更容易的了解各式各样的指令码,接下来按功能分组介绍它们。
指令周期
大部分的操作均只需要一个指令周期来执行。分支、调用或查表则需要两个指令周期。一个指
令周期相当于四个系统时钟周期,因此如果在 8MHz 的系统时钟振荡器下,大部分的操作将在 0.5μs
中执行完成,而分支或调用操作则将在 1μs 中执行完成。虽然需要两个指令周期的指令通常指的是
JMP、CALL、RET、RETI 和查表指令,但如果牵涉到程序计数器低字节寄存器 PCL 也将多花费
一个周期去加以执行。即指令改变 PCL 的内容进而导致直接跳转至新地址时,需要多一个周期去
执行。例如“CLR PCL”或“MOV PCL, A”。对于跳转命令必须注意,如果比较的结果牵涉到跳
转动作将多花费一个周期,如果没有则需一个周期即可。
数据的传送
单片机程序的数据传送是使用最为频繁的操作之一。使用三种 MOV 的指令,数据不但可以从
寄存器转移至累加器(反之亦然),而且能够直接移动立即数到累加器。数据传送最重要的应用之一
是从接收端口接收数据或者传送数据到输出端口。
算术运算
算术运算和数据处理是大部分单片机应用所需具备的能力,在盛群单片机内部的指令集中,可
直接实现加与减的运算。当加法的结果超出 255 或减法的结果少于 0 时,要注意正确的处理进位
和借位的问题。INC、INCA、DEC 和 DECA 指令提供了对一个指定地址的值加一或减一的功能。
逻辑和移位运算
标准逻辑运算例如 AND、OR、XOR 和 CPL 全都包含在盛群单片机内部的指令集中,如同大
多数牵涉到数据运算的指令,数据的传送必须通过累加器。在所有逻辑数据运算中,如果运算结果
为零,则零标志位将被置位。另外逻辑数据运用形式还有移位指令,例如 RR、RL、RRC 和 RLC 提
供了向左或向右移动一位的方法。移位指令常用于串行端口的程序应用,数据可从内部寄存器转移
至进位标志位,而此位则可被检验。移位运算还可应用在乘法与除法的运算组成中。
分支和控制的转换
程序分支是采取使用 JMP 指令跳转到指定地址或使用 CALL 指令调用子程序的形式。两者之
不同在于当子程序被执行完毕后,程序必须马上返回原来的地址。这个动作是由放置在子程序里的
返回指令 RET 来实现,它可使程序跳回 CALL 指令之后的地址。在 JMP 指令中,程序则只是跳
到一个指定的地址而已,并不需如 CALL 指令跳回。一个非常有用的分支指令是条件跳转,条件是
由数据存储器或指定位来加以决定。遵循跳转条件,程序将继续执行下一条指令或略过且跳转至接
下来的指令。这些分支指令是程序走向的关键,跳转条件可能是外部开关输入,或者是内部数据位
的值。
Rev 1.00
2011-04-13
64