两部分构成。操作码用来规定指令执行的操作功能,如加、减、比较、移位等;操作数是指参与操作的数据(在指令编码中通常给出该数据的不同寻找方法)。
80C51 的机器指令按指令字节数分为三种格式:单字节指令、双字节指令和三字节指令。
这种指令的8位编码仅为操作码,指令的操作数隐含在其中。例如:INC A,该指令的编码为0000 0100B,其十六进制表示为04H,累加器 A 隐含在操作码中。指令的功能是累加器 A 的内容加 1。
这种指令的高5位为操作码,低3位为存放操作数的寄存器编码。如指令MOV A,R0的编码为1110 1000B,其十六进制表示为E8H(低3位000为寄存器R0的编码)。该指令的功能是将当前工作寄存器R0中的数据传送到累加器A中。
这类指令的第一个字节表示操作码,第二个字节表示参与操作的数据或数据存放的地址。如数据传送指令MOV A,#50H的两字节编码为0111 0100B,0101 0000B。其十六进制表示为74H,50H。该指令的功能是将立即数“50H”传送到累加器A中。
这类指令的第一个字节表示该指令的操作码,后两个字节表示参与操作的数据或数据存放的地址。例如数据传送指令MOV 20H,#50H的三个字节编码为0111 0101B,0010 0000B,0101 0000B。其十六进制表示为75H,20H,50H。该指令的功能是将立即数“50H”传送到内部RAM的20H单元中。
80C51有一个串行口,又称为UART(Universal Asynchronous Receiver/Transmitter)。它可以进行串行通信,支持异步方式和同步方式。串行口的控制寄存器SCON用来设定串行口的工作方式、接受/发送控制、设置状态标志。串行口工作方式有四种,由SCON寄存器种SM0和SM1控制。一般情况下我们使用工作方式1(SM0=0;SM1=1;)10位异步收发(8位数据),波特率可变。允许串行口接受位的标志位为REN,若想接受数据,则REN必须为1(REN=1;)。发送中断标志位为TI,接受中断标志位为RI。波特率倍增位SMOD控制波特率。串行口工作方式为1、2、3时,波特率与SMOD有关。当SMOD=1时,波特率提高一倍;当SMOD=0时,波特率不变。波特率计算可以用软件计算。
80C51的复位方式有上电复位和手动复位。RST引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作。
这组指令的功能是把源操作数与累加器的内容相加再送入累加器中。源操作数的寻址方式分别为立即寻址、直接寻址、寄存器间接寻址和寄存器寻址。影响程序状态字PSW中的CY、AC、OV和P的情况可以参考相应的指令文档。
这两条指令的功能分别是把累加器A的内容清0和取反,结果仍在A中。例如:若(A)=A5H,执行指令CLR A后,(A)=00H。