📜  使用端口在 8051 微控制器中添加两个 8 位数字

📅  最后修改于: 2022-05-13 01:56:13.534000             🧑  作者: Mango

使用端口在 8051 微控制器中添加两个 8 位数字

8051微控制器是Intel于1981年设计的微控制器。它是一个8位微控制器,具有40针DIP(双列直插封装),4kb的ROM存储和128字节的RAM存储,2个16位定时器。它由四个并行 8 位端口组成,可根据要求进行编程和寻址。

问题:编写一个汇编语言程序,使用端口在 8051 微控制器中添加两个 8 位数字。

例子:

框图:

算法:

  • 将端口 P0 和 P1 初始化为输入端口。
  • 将端口 P2 和 P3 初始化为输出端口。
  • 初始化 R1 寄存器。
  • 将端口 0 的内容移至 B 寄存器。
  • 将端口 1 的内容移至 A 寄存器。
  • 在 A 和 B 中添加内容。
  • 如果存在进位,则增加 R1。
  • 将 R1 中的内容移动到端口 2。
  • 将步骤 6 中的总和移至端口 3。

程序:

ORG 00H                   // Indicates starting address

MOV P0,#0FFH              // Initializes P0 as input port
MOV P1,#0FFH              // Initializes P1 as input port
MOV P2,#00H               // Initializes P2 as input port
MOV P3,#00H               // Initializes P3 as input port

L1:MOV R1, #00H          // Initializes Register R1
MOV B,P0                 // Moves content of P0 to B
MOV A,P1                 // Moves content of P1 to A
CLR C                    // Clears carry flag
ADD A,B                  // Add the content of A and B and store result in A
JNC L2                   // If carry is not set, jump to label L2
INC R1                   // Increment Register R1 if carry present

L2: MOV P2, R1            // Moves the content from Register R1 to Port2
MOV P3,A                 // Moves the content from A to Port3
SJMP L1                  // Jumps to label L1
END

解释:

  • ORG 00H 是程序的起始地址。
  • 将值指定为#0FFH 和#00H 将端口分别初始化为输入和输出端口。
  • R1 寄存器初始化为 0,以便存储求和过程中产生的任何进位。
  • MOV B, P0 将 P0 中的值移动到 B 寄存器。
  • MOV A, P1 将 P1 中的值移动到累加器。
  • ADD AB 将累加器和 B 寄存器中的值相加,并将结果存储在累加器中。
  • JNC L2 是指如果没有进位,则通过自动检查进位位是否设置,跳转到标签 L2。
  • 如果进位位设置为递增寄存器 R1。
  • MOV P2, R1, 和 MOV P3, A 是指将进位位移动到 P2 并导致累加器到 P3。