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

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

  
楼 主:leiqz 2009年3月8日01:15
 求助,帮我看看这个步进电机的控制程序显示部分有什么问题。
正在做一个步进电机的控制程序,实现正反转、加速和减速几个功能,这部分功能已经实现。但是要在数码管上显示当前转速,不知怎么的无法实现。有哪位大侠帮看看是那里出问题了。不胜感激啊。
       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

  
2楼:leiqz 2009年3月8日11:57
 难道就没人给指点下
难道就没人给指点下
  
3楼:lic_628 2009年3月8日23:00
 [讨论]
你显示程序是中断子程序,你在主程序调用了
  
4楼:leiqz 2009年3月8日23:23
 ??
我把主程序中的显示调用去掉似乎也不起作用,有谁能说明的更具体点吗?
  
5楼:红心J 2009年3月10日08:38
 显示程序的编程思想错了
qq:78166267
  
6楼:一生有你 2009年3月10日21:18
 没事就做电路板
做电路板就可以点击线路板网站啊,PCB板也叫电路板啊
深圳网络公司做网站与网站优化的公司啊
深圳机柜
中国著名品牌与中国知名品牌认定中心
线路板与电路板,PCB板

>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:测试

[下一篇主题]:2410的板子,原本是linux系统的,怎样刷成wince系统呀