891 次浏览
我们已经看到8051中有五种不同的中断。这些中断是INT0、INT1、TO、T1、TI/RI。每个机器周期有六个状态。这些状态是S1到S6。所有中断都在每个机器周期的S5状态结束时采样。当指令占用多个机器周期时,将在下一个机器周期轮询样本。当在第一个机器周期的S5处设置中断标志时,轮询周期将找到它。中断系统生成LCALL指令以调用相应的ISS。还有一些… 阅读更多
21K+ 次浏览
在本节中,我们将了解Intel 8051微控制器的中断结构。中断基本上是暂时挂起主程序、将控制权传递给外部源并执行其任务的事件。然后它将控制权传递回主程序中断的地方。8051有五个中断。这些中断是INT0、INT1、TO、T1、TI/RI。所有中断都可以使用IE(中断启用)寄存器启用或禁用。这些中断的中断地址如下所示:中断地址INT0 0003H INT1 000BH TO 0013H T1 001BH TI/RI 0023H 中断启用 (IE) 寄存器此寄存器可用于以编程方式启用或禁用中断。此寄存器… 阅读更多
10K+ 次浏览
现在我们将看到另一个算术运算。使用此8051微控制器进行除法运算以除以两个8位数。寄存器A和B将在此运算中使用。除法运算不能使用其他寄存器。除法的结果有两部分。商部分和余数部分。寄存器A将保存商,寄存器B将保存余数。我们在20H和21H位置取两个数字0EH和03H,除法后结果将存储在30H和31H位置。地址值…20H 0EH 21H 03H…30H 00H 31H 00H…程序MOV R0,#20H;将源地址20H设置到R0 MOV R1,#30H;将目标地址… 阅读更多
19K+ 次浏览
现在我们将尝试使用此8051微控制器将两个8位数相乘。寄存器A和B将用于乘法。乘法运算不能使用其他寄存器。乘法的结果可能会超过8位大小。因此,高位字节存储在寄存器B中,低位字节在乘法后位于累加器A中。我们在20H和21H位置取两个数字FFH和FFH,相乘后结果将存储在30H和31H位置。地址值…20H FFH 21H FFH…30H 00H 31H 00H…程序 MOV R0,#20H;将源地址20H设置到R0 … 阅读更多
11K+ 次浏览
在这里,我们将了解如何使用此微控制器减去两个8位数。寄存器A(累加器)用作运算中的一个操作数。在不同的寄存器组中,有七个寄存器R0 – R7。我们可以使用其中的任何一个作为第二个操作数。我们在20H和21H位置取两个数字73H和BDH,减法后结果将存储在30H和31H位置。地址值…20H 73H 21H BDH…30H 00H 31H 00H…程序MOV R0,#20H;将源地址20H设置到R0 MOV R1,#30H;将目标地址30H设置到R1 MOVA,@R0;将值从源取到寄存器A MOV R5,A;将值从A移到… 阅读更多
29K+ 次浏览
Intel 8051是一个8位微控制器。它有很多强大的指令和IO访问技术。在本节中,我们将看到使用8051的一个最简单的程序。在这里,我们将使用此微控制器添加两个8位数。寄存器A(累加器)用作运算中的一个操作数。在不同的寄存器组中,有七个寄存器R0 – R7。我们可以使用其中的任何一个作为第二个操作数。我们在20H和21H位置取两个数字5FH和D8H,添加后结果将存储在30H和31H位置。地址值…20H 5FH 21H D8H…30H 00H 31H 00H…程序MOV R0,#20H;将源地址20H设置到R0 … 阅读更多
516 次浏览
我们已经了解了如何将十六进制数字转换为其ASCII等效值。在本节中,我们将了解如何将两字节(4位)十六进制数字转换为ASCII。这些数字的每个四位数都转换为其ASCII值。我们使用一个子例程将十六进制数字转换为ASCII。在这个程序中,我们多次调用子例程。在内存中,我们将两字节十六进制数字存储在20H和21H位置。转换后的ASCII值存储在30H到33H位置。十六进制数字是2FA9H。ASCII等效值为32 46 41 39。地址值…20H 2FH 21H A9H…30H 00H 31H 00H 32H 00H 33H 00H…程序 MOV R0,… 阅读更多
4K+ 次浏览
在本节中,我们将了解使用8051的一些位操作。8051支持对8位数的不同位进行一些操作。这些操作例如求反、设置为1、移动、与、或等。在这个示例中,我们从10H位置取一个数字AEH,然后在对该数据执行以下位相关操作后,我们只是将结果存储在30H位置。将对该数据执行的位相关操作如下:求反位b2将b5移到b4对b0和b1的反码进行或运算,并将结果存储到C (b7)设置b6复位位b3输入为AEH位位置b7 b6 b5 b4 b3 b2 b1 b0值1 0 1 0 1 1 1 0输出位位置b7 b6 b5 b4 b3 b2 b1 b0值0 1 1 1 0 0 1 0输出将是… 阅读更多
5K+ 次浏览
现在我们将了解如何使用8051将十六进制数字转换为其ASCII等效值。此程序可以将0-9和A-F转换为其ASCII值。我们知道00H的ASCII是30H (48D),而09H的ASCII是39H (57D)。因此所有其他数字都在30H到39H范围内。0AH的ASCII值是41H (65D),0FH的ASCII值是46H (70D),因此所有其他字母(B、C、D、E)都在41H到46H范围内。在这里,我们在内存位置20H提供十六进制数字,ASCII等效值存储在位置30H。地址值…20H 0EH 21H…程序MOV R0,… 阅读更多
3K+ 次浏览
在这个问题中,我们将了解如何将8位BCD数字转换为其二进制(十六进制)等效值。BCD数字存储在20H位置。转换后,结果将存储在30H中。因此,让我们假设数据是D5H。该程序将D5H的二进制值转换为BCD值213D。地址值…20H 9421H…程序 MOV R0,#20H;初始化数据地址 MOVA,@R0;从R0中存储的地址获取数据 MOV R2,A;将A的内容存储到R2 CLRA;将A的内容清零 MOV R3,#00H LOOP: ADDA,#01H;递增A … 阅读更多