导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助,帮我看看这个步进电机的控制程序显示部分有什么问题。

* 56752: 求助,帮我看看这个步进电机的控制程序显示部分有什么问题。

   leiqz 
leiqz发表的帖子 

 求助,帮我看看这个步进电机的控制程序显示部分有什么问题。
正在做一个步进电机的控制程序,实现正反转、加速和减速几个功能,这部分功能已经实现。但是要在数码管上显示当前转速,不知怎么的无法实现。有哪位大侠帮看看是那里出问题了。不胜感激啊。
       ORG 00H
       LJMP START
       ORG 000BH
       LJMP DISP                  ;显示中断服务
       ORG 0300H
START:
       MOV SP,#70H                   ;主程序
       MOV P2,#00H
       MOV P0,#0FFH
       MOV P1,#0FFH
       MOV P3,#0FFH
       MOV DPTR,#TAB1
       MOV R4,#0 ;查表偏移量清0
       MOV R5,#0 ;步进数

      MOV TMOD,#01H       ;定时器初始化
       MOV TCON,#00H
       MOV TH0,#0d8H
       MOV TL0,#0f0H
       MOV R0,#46H
       MOV R1,#00
       SETB ET0
       SETB TR0
       SETB EA

;/==========键扫描===识别=========/
       
  WAIT:
      ; LCALL DISP
       MOV A,P3
       ANL A,#0FH
       CJNE A,#0FH,NEXT
       AJMP WAIT

NEXT:  LCALL DELAY1
       MOV A,P3
       CJNE A,#0FH,KEYPROCESS
       AJMP WAIT
KEYPROCESS:
       MOV P1,#03 ;初始角度,0度
       MOV P3,#0FFH
       LCALL DISP
       JNB P3.0,POS ;判断键盘状态
       JNB P3.1,NEG
       AJMP WAIT
   POS:MOV A,R4 ;指向第一个控制字,正转9度
       MOVC A,@A+DPTR
       MOV P1,A
       ACALL DELAY
       INC R4
       AJMP KEY
   NEG:MOV R4,#4 ;修改偏移量,查反向控制字反转9度
       MOV A,R4
       MOVC A,@A+DPTR
       MOV P1,A
       ACALL DELAY
       ACALL DISP
       AJMP KEY
       AJMP WAIT
   KEY:MOV P3,#0FH ;读键盘情况
       JNB P3.2,SPUP;
       JNB P3.3,SPDOWN;
    L1:JB P3.0,FZ1
       CJNE R4,#6,LOOPZ ;是结束标志
       MOV R4,#0
LOOPZ:MOV A,R4
       MOVC A,@A+DPTR
       MOV P1,A ;输出控制脉冲
       ACALL DELAY ;程序延时
       INC R4 ;地址加1
       AJMP KEY
   FZ1:JB P3.1,KEY
       CJNE R4,#255,LOOPF ;是结束标志
       MOV R4,#7
LOOPF:DEC R4
       MOV A,R4
       MOVC A,@A+DPTR
       MOV P1,A ;输出控制脉冲
       ACALL DELAY ;程序延时
       AJMP KEY
  SPUP:MOV A,R5
       ADD A,#5
       CJNE A,#45,L2
       SUBB A,#5
    L2:MOV R5,A
       AJMP L1
SPDOWN:CJNE R5,#0,L3
       AJMP L1
    L3:MOV A,R5
       SUBB A,#5
       MOV R5,A
       AJMP L1
;/************显示子程序**************/
DISP:
     PUSH DPH
     PUSH DPL
     PUSH ACC
     PUSH PSW
     CLR TR0
     MOV TH0,#0d8H
     MOV TL0,#0ffH 
         
      MOV  A,R4 ;秒处理
      ANL  A,#0FH
      MOV  2FH,A ;低4位存在2FH里
      MOV  A,R4
      ANL  A,#0F0H
      SWAP A
      MOV  2EH,A
      MOV  2DH,#0AH               ;显示一个“-”

;对显示数据译码
      MOV  R0,#2FH
      MOV  R3,#04H
      MOV  DPTR,#TABLE
      MOV  A,#0FEH
LOOP2:
      MOV  B,A
      MOV  P2,A
      MOV  A,@R0
      MOVC A,@A+DPTR
      MOV  P0,A
      LCALL DELAY1
      DEC  R0
      MOV  A,B
      RL   A
      DJNZ R3,LOOP2
      POP PSW
      POP ACC
      POP DPL
      POP DPH
      RETI    
  
table:
         DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,
         DB 90h,88h,83h,0c6h,0a1h,86h,8eh,8ch,0c1h,
         DB 0ceh,91h,89h,0c7h,0ffh
TAB1: DB 02H,06H,04H,0CH
       DB 08H,09H,01H,03H ;正转模型资料
DELAY:MOV 40H,#5
   DD1:MOV 41H,#080H
   DD2:MOV 42H,R5          ;(为什么延长R5的值会加快呢?不是延时时间变长就变慢吗#┛
   DD3:DJNZ 42H,DD3
       DJNZ 41H,DD2
       DJNZ 40H,DD1
       RET
DELAY1:
       MOV   R6,#19H
DL1:
      MOV   R7,#25H
DL2:
      DJNZ   R7,DL2
      DJNZ   R6,DL1
      RET
END


发表时间:2009年3月8日1:15:00

  
回复该帖

本主题共有 6 帖,分页:>>>>>该主题的所有内容[6]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  56764.[详细]难道就没人给指点下
摘要:难道就没人给指点下......(18字)
- [leiqz][583次] 2009年3月8日

  56784.[详细][讨论]
摘要:你显示程序是中断子程序,你在主程序调用了......(40字)
- [lic_628][622次] 2009年3月8日

  56808.[详细]??
摘要:我把主程序中的显示调用去掉似乎也不起作用,有谁能说明的更具体点吗?......(66字)
- [leiqz][591次] 2009年3月8日

[上一篇帖子]:测试测试 /P P
[下一篇帖子]:同感我也遇到了,你搞定了记得说一下呀