首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >8051装配按钮单击

8051装配按钮单击
EN

Stack Overflow用户
提问于 2016-01-18 18:45:25
回答 2查看 2.5K关注 0票数 3

我似乎找不到这个问题的答案。

一个LED连接到P2.4端口,一个按钮连接端口P1.7。我们有COUNT变量,每次单击按钮时都会增加它。所以,如果我们按下5次led是开的,如果我们按下10次led是关闭的,它的持续15次led是开的,20是关闭的。我认为使用CJNE指令可能是必要的,但我不确定。

代码语言:javascript
复制
LED EQU P2.4
button EQU P1.7
COUNT EQU 30H
    ORG  00H 
    LJMP main
    main:
          CLR P2.4
          SETB P1.7
          MOV COUNT,#0
    again: 
           JB button,$
           JNB button,$
           INC COUNT 
          MOV A,COUNT
           ANL A,#01h
           MOV P2.4,A
           JMP again
    END
EN

回答 2

Stack Overflow用户

发布于 2016-01-19 10:24:32

您从未告诉我们如何定义COUNTBUTTON。这就引出了两个可能的错误。

首先,我不确定这是否是复制粘贴错误,但我不相信

代码语言:javascript
复制
 MOV COUNT

是合法的。我相当肯定,您需要指定源和目的地。我猜这应该是:

代码语言:javascript
复制
 MOV COUNT,0

第二,你有:

代码语言:javascript
复制
 SETB P1.7

你从来不告诉我们,但我假设这是连接按钮的引脚。然而,稍后,你会这样做:

代码语言:javascript
复制
 JB BUTTON, $
 JNB BUTTON, $

因为我没有看到您将BUTTON定义为P1.7的标识符,所以我将假设您的代码被无限地卡在JNB BUTTON,$上。我相信这会纠正这一点:

代码语言:javascript
复制
 JB P1.7, $
 JNB P1.7, $

修订基于您的更新--您已经将count定义为一个值,但是您没有为它保留任何内存。其结果是,您(可能)无意中增加了内存中的一个字节,而不是您控制的一个字节。您将希望为此保留内存。实际上,我必须启动模拟器中的内容,看看它在现实世界中会做些什么。

我希望这个看起来像这样:

代码语言:javascript
复制
DSEG
       ORG 30h
COUNT  DS  1

CSEG
       ORG 0h
    <Your code goes here>
票数 0
EN

Stack Overflow用户

发布于 2016-01-19 21:27:21

似乎您正在使用计数来检查一个数字是否为偶数,并相应地设置LED。我不确定你一定要这么做。简化的版本可以是:

代码语言:javascript
复制
LED EQU P2.4
button EQU P1.7

COUNT EQU 30H
ORG  00H 
main:
      MOV COUNT, #0
      SETB button  ; Enabled button
again: 
      SETB LED     ; Turn off LED segment 
      JB button,$  ; Wait until button pressed
      CLR LED      ; Turn on the LED segment
      JNB button,$ ; Wait until button released
      INC COUNT    ; Increment count on release
      JMP again    ; Do again
END

我保留了COUNT变量,但我不确定您打算何时增加它。我以为在您释放按钮后,给出了您所提供的代码。

这假设您的端口正确。我不相信发光二极管是在P2,我也不确定P1是开关。你有可能让他们倒车吗?如果是,您可能希望将前两行修改为:

代码语言:javascript
复制
LED EQU P1.4
button EQU P2.7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34861864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档