EC11编码器识别程序——有时不准确,请达人指点

2020-01-21 21:40发布

我编了一个EC11系列编码器的识别程序(汇编语言,不会C啊),但是有时不准确。
不使用中断,直接程序识别。
目的:测试编码器;
硬件连接:编码器的AB信号直接输入到P1.0和P1.1。AB端用10K上拉,对地用0.1u电容去抖动。

恳请达人指点。谢谢!

E11TST:           ;P1.0--E11A,P1.1--E11B
                  ;顺时针:AB=11,01,00,10/D2H;逆时针:AB=11,10,00,01/E1H
                  ;使用资源:A,B,R1,R2,ABH
  MOV B,#03H
  MOV A,P1      ;1
  ANL A,#03H    ;取低2位
  MOV R1,A
  MOV ABH,A
  XRL A,#03H
  JZ E11TST1     ;ABH=03H, GO
  RET            ;ABH<>03H
E11TST1:
  MOV A,P1
  ANL A,#03H
  MOV R2,A         ;2,3,4
  XRL A,R1
  JZ E11TST1       ;R1=R2, GO
  MOV A,ABH
  RL A
  RL A
  ADD A,R2
  MOV ABH,A
  MOV A,R2
  MOV R1,A
  DJNZ B,E11TST1
  MOV A,ABH
  XRL A,#0D2H
  JNZ E11TST2      ;ABH<>D2H, GO
  INC ABHN         ;ABH=D2H,顺时针------------------
  AJMP E11TST3
E11TST2:
  MOV A,ABH
  XRL A,#0E1H
  JNZ E11TSTEND    ;ABH<>E1H(&ABH<>D2H)
  DEC ABHN         ;ABH=E1H,逆时针-----------------
E11TST3:
  
E11TSTEND:
  RET
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。