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

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条回答
lxa0
1楼-- · 2020-01-22 01:24
好像是你的消抖动的代码有问题~~~~~~~~~~~~~~~~
thy110
2楼-- · 2020-01-22 05:55
lxa0 发表于 2014-12-13 00:27
好像是你的消抖动的代码有问题~~~~~~~~~~~~~~~~

我就是按照之前写c的思路写的,先取出p1口的状态,取反后与上0ffh,判断A中是否有1,然后延时消抖,在判断一次p1口状态,再执行子程序啊。如果错的话,是哪错了呢
gfy200866
3楼-- · 2020-01-22 10:09
会不会有变量冲突,汇编比C难检查到。
limuzi2012
4楼-- · 2020-01-22 12:57
 精彩回答 2  元偷偷看……
not_at_all
5楼-- · 2020-01-22 18:48
输出总是不稳定?怎样不稳定?按键一直按下时,LED一直闪烁?按键没有按下时,LED一直闪烁?有时候按键按下没反应?
loveskangaroo
6楼-- · 2020-01-22 20:24
mov P1 A 寄存器A的值送到P1写错了吧

一周热门 更多>