【问题标题】:What is JB used for here?JB在这里是做什么用的?
【发布时间】:2012-11-20 12:05:13
【问题描述】:

我正在尝试了解开发板 (XL400) 附带的一些示例 asm,以便将其转换为 C。

asm 代码包含在下面,不幸的是,像它这样的文档从中文翻译得非常糟糕,这使得它比无用更糟糕。 也好久没用asm了!

在代码中,DELAY 子程序中有一条 JB 指令(代码的倒数第三行)。我无法理解它的作用或它应该如何运作。谷歌搜索 JB 会导致对不同形式(JB 标签)的解释,所以我不确定 asm 是否正确? 非常感谢您的帮助,Ta

 RS EQU P2.0
 RW EQU P2.1
 E EQU P2.2
 ORG 0080H
 MOV P0,#00000001B  ;- Screen
 ACALL ENABLE
 MOV P0,#00000001B  ;- Screen
 ACALL ENABLE
 MOV P0,#00111000B  ;Display
 ACALL ENABLE
 MOV P0,#00001111B  ;Show switch control
 ACALL ENABLE
 MOV P0,#00000110B  ;Input mode
 ACALL ENABLE
 MOV P0,#0C0H       ;Data memory address
 ACALL ENABLE
 mov p0,#01000001b  ;ASCII code
 SETB RS
 CLR RW
 CLR E
 ACALL DELAY
 SETB E
 AJMP $

ENABLE: CLR RS           ;Send orders
 CLR RW
 CLR E
 ACALL DELAY
 SETB E
 RET

DELAY: MOV P0,#0FFH
 CLR RS
 SETB RW
 CLR E
 NOP
 SETB E
 JB P0.7,DELAY      ;Judgement busy signs
 RET

 END

【问题讨论】:

    标签: assembly 8051 lcd


    【解决方案1】:

    如果第一个操作数指定的位被设置,8051 汇编器中的 JB 指令跳转到第二个操作数中标号指示的地址。所以在你的情况下,如果设置了P0.7,它将跳转到MOV P0,#0FFH

    您所指的JB label 指令是8086 指令(根据之前的CMP 指令的结果跳转到下方),因此您看错了页面。

    编辑:我不知道他们使用的是什么类型的 LCD,但我认为这是繁忙的标志 - 因为这些显示器都与可敬的 Hitachi 44780 密切相关。在板上的schematic P0.7 连接到显示引脚 14,通常是 DB7,这就是忙碌标志所在的位置。当然最好使用实际显示的文档,但this one 可能非常接近并且可以帮助您入门。此外,该显示器非常受欢迎,因此很容易找到所有可能语言的代码来了解如何对其进行编程。遵循这条路线可能比对装配进行逆向工程更容易。

    【讨论】:

    • 谢谢。我想知道 P0.7 怎么会是 0,因为前面的指令将 P0 设置为 FF 并且 LCD 读取...
    【解决方案2】:

    看起来像在命令后准备好 LCD 控制器的忙/等待循环:

    SETB E //enable LCD
    JB P0.7,DELAY //jump if 1 
    

    http://www.keil.com/support/man/docs/is51/is51_jb.htm

    【讨论】:

      【解决方案3】:

      (免责声明:我不懂 8051 汇编语言。)

      来自http://www.win.tue.nl/~aeb/comp/8051/set8051.html#51jb

      描述:JB 跳转到 reladdr 指示的地址,如果 位 addr 指示的位已设置。如果该位未设置程序 继续执行 JB 指令之后的指令。

      看起来它会查看 P0 的第 7 位,如果设置了该位,则跳转到 DELAY。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-28
        • 2012-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多