最近在用汇编编写独立按键的程序时,输出总是不稳定

2020-01-21 21:35发布

本帖最后由 thy110 于 2014-12-13 11:00 编辑

最近在用汇编编写独立按键的程序时,输出总是不稳定,用于测试的led灯总是闪烁,怎么回事啊,之前用c写的就很正常,按照原来的思路一步一步写下来就不正常了,大家帮忙看看。

  1. ORG 0000H
  2. LJMP START
  3. ORG 0200H
  4. START:MOV P1,#0FFH
  5. LOOP: LCALL DELAY_10MS
  6.       MOV A,P1
  7.       MOV R1,A
  8.       CPL A
  9.           ANL A,#0FFH
  10.           JZ  LOOP
  11.           LCALL DELAY_10MS
  12.       MOV A,P1
  13.       MOV R1,A
  14.           CPL A
  15.           ANL A,#0FFH
  16.           JZ LOOP
  17.           ACALL SKEY
  18.           SJMP LOOP
  19. SKEY: MOV A,R1     
  20.       JNB ACC.0,KEY1
  21.           JNB ACC.1,KEY2
  22.           JNB ACC.2,KEY3
  23.           JNB ACC.3,KEY4
  24.           JNB ACC.4,KEY5
  25.           JNB ACC.5,KEY6
  26.           JNB ACC.6,KEY7
  27.           JNB ACC.7,KEY8
  28.           RET
  29. KEY1: CPL P0.4
  30.       RET
  31. KEY2: CPL P0.4
  32.       RET
  33. KEY3: CPL P0.4
  34.       RET
  35. KEY4: CPL P0.4
  36.       RET
  37. KEY5: CPL P0.4
  38.       RET
  39. KEY6: CPL P0.4
  40.       RET
  41. KEY7: CPL P0.4
  42.       RET
  43. KEY8: CPL P0.4
  44.       RET                
  45. DELAY_10MS:MOV R7,#10H
  46. TS1:       MOV R6,#0FFH
  47. TS2:       DJNZ R6,TS2
  48.            DJNZ R7,TS1
  49.                    RET
  50.                    END      
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
mon51
1楼-- · 2020-01-23 23:13
与汇编何关?
lxa0
2楼-- · 2020-01-24 00:06
 精彩回答 2  元偷偷看……
thy110
3楼-- · 2020-01-24 01:38
limuzi2012 发表于 2014-12-13 12:04
你都没明白怎么检测按键的。在这里你检测到按键后的处理,比如你检测到某个按键就存这个按键标号,下次如 ...

谢谢你,我弄懂了,刚学汇编,各种指令弄晕了,不过总算弄出来了。

KEY_V DATA 30H
KEY_S DATA 31H
ORG 0000H
LJMP START
ORG 0200H
START:MOV P1,#0ffH
      MOV KEY_S,#0FFH
LOOP: LCALL DELAY_10MS
      MOV A,P1
          MOV KEY_V,A
      XRL A,KEY_S
          JZ  LOOP
          LCALL DELAY_10MS
      MOV A,P1
          MOV KEY_V,A
      XRL A,KEY_S
          JZ  LOOP
          MOV        KEY_S,KEY_V
          ACALL SKEY
          SJMP LOOP
SKEY: MOV A,KEY_S     
          JNB ACC.6,KEY6
          JNB ACC.7,KEY7
          RET
KEY6: JNB ACC.0,KEY0
          JNB ACC.1,KEY1
          JNB ACC.2,KEY2
          JNB ACC.3,KEY3
          JNB ACC.4,KEY4
          JNB ACC.5,KEY5
          RET
KEY7: JNB ACC.0,KEY0
          JNB ACC.1,KEY1
          JNB ACC.2,KEY2
          JNB ACC.3,KEY3
          JNB ACC.4,KEY4
          JNB ACC.5,KEY5
          RET
KEY0: CPL P0.4
      RET
KEY1: CPL P0.4
      RET
KEY2: CPL P0.4
      RET
KEY3: CPL P0.4
      RET
KEY4: CPL P0.4
      RET
KEY5: CPL P0.4
      RET       
DELAY_10MS:MOV R7,#10H
TS1:       MOV R6,#0FFH
TS2:       DJNZ R6,TS2
           DJNZ R7,TS1
                   RET
                   END      



dz20062008
4楼-- · 2020-01-24 02:35
没有松开检测所以有按键按下就会不断的翻转输出,加上所有的按键功能一样,所以就这样了。加上按键松开检测就好了

一周热门 更多>