打印

菜鸟问个汇编程序的问题

[复制链接]
1740|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liushachen|  楼主 | 2009-1-21 12:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
00-99计数并显示,键盘一端接P3.7,一端接地,每按一次键盘,计数。程序如下
Count EQU 30H
SP1 BIT P3.7
ORG 0
START: MOV Count,#00H
NEXT: MOV A,Count
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
WT: JNB SP1,WT
WAIT: JB SP1,WAIT
LCALL DELY10MS
JB SP1,WAIT
INC Count
MOV A,Count
CJNE A,#100,NEXT
LJMP START
DELY10MS: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
不太明白,其中的问题:
WT: JNB SP1,WT
WAIT: JB SP1,WAIT
程序执行到这两行怎么走啊。那不是死循环了么?

相关帖子

沙发
computer00| | 2009-1-21 12:13 | 只看该作者

这个是判断按键的吧?自己好好理解下

WT: JNB SP1,WT  //这句在等什么?什么情况下它会往下走?
WAIT: JB SP1,WAIT  //这句又在等什么?什么情况下它会往下走?

使用特权

评论回复
板凳
dengm| | 2009-1-21 12:23 | 只看该作者

先学会书写代码!!!!

    Count EQU 30H
    SP1 BIT P3.7
;---------------------------
  ORG 0
START: 
      MOV Count, #00H
NEXT:
      MOV A, Count
      MOV B, #10
      DIV AB
      MOV DPTR, #TABLE
      MOVC A,@A+DPTR
      MOV P0, A

      MOV A, B
      MOVC A,@A+DPTR
      MOV P2, A

WT:
      JNB SP1, WT  ; **** 等待 P3.7 高电平(按键放开)

WAIT: 
      JB SP1, WAIT ; **** 等待 P3.7 低电平(按键按下)
      LCALL DELY10MS  ; SP 为 7
      JB SP1,WAIT
        INC Count
        MOV A, Count
        CJNE A, #100, NEXT
        LJMP START

DELY10MS: 
         MOV R6,#20
D1:
           MOV R7, #248
           DJNZ R7, $
         DJNZ R6, D1
         RET

TABLE: 
        DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
        END

使用特权

评论回复
地板
hotpower| | 2009-1-21 21:48 | 只看该作者

俺喜欢JNB SP1,$

使用特权

评论回复
5
airwill| | 2009-1-22 20:45 | 只看该作者

$

据说这个符合有岐义? 不记得哪书讲的了
不过我想, 写 A, 似乎不太必要了解 cpu 的流水线问题

使用特权

评论回复
6
NE5532| | 2009-1-23 21:47 | 只看该作者

WAIT: JB SP1,WAIT

你程序末位怎么有条件跳转?你肯定没发完。

使用特权

评论回复
7
红心j| | 2009-1-26 13:25 | 只看该作者

SP1应该是一个外部脉冲检测的I/O端口

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

20

帖子

0

粉丝