3802|4

8

帖子

5

TA的资源

一粒金砂(中级)

楼主
 

控制电机转向时,转45°可以,为什么加恢复原状时出现先转90°,再向回转45° [复制链接]

原程序1:(51单片机P0口输出)
               OUT   EQU   P0
               ORG   0000H
LOOP:    JNB   P1.3,LEFT
               JMP   LOOP
LEFT:     MOV   DPTR,#TABLE  
               MOV   R3,#01H
               MOV   A,R3
               MOVC   A,@A+DPTR
               MOV    OUT,A
               CALL   DELAY
               JMP    STOP
DELAY:   MOV    R7,#100
D1:          MOV    R6,#249
               DJNZ   R6,$
               DJNZ   R7,D1
               RET
STOP:    ORL    P0,#0FFH
TABLE:   DB     1
               END     
源程序2(加恢复后):
               ORG    0000H
LOOP:    JNB    P1.3,LEFT
               JNB    P1.4,RIGHT
               JMP    LOOP
LEFT:     MOV    DPTR,#TABLE  
               MOV    R0,#01H
               MOV    A,R0
               MOVC   A,@A+DPTR
               MOV    P0,A
              CALL   DELAY
              JMP    STOP
RIGHT:   MOV    DPTR,#TABLE  
              MOV    R1,#02H
              MOV    A,R1
              MOVC   A,@A+DPTR
              MOV    P0,A
              CALL   DELAY
              JMP    STOP
DELAY:  MOV    R3,#100
D1:         MOV    R2,#249
              DJNZ   R2,$
              DJNZ   R3,D1
              RET
STOP:   ORL    P0,#0FFH
              JMP    LOOP
TABLE:   DB     1
               DB     9(混合式)
               END


第一个程序是转了45°,第二个程序想让电机左转45°,再右转45°以恢复原状。

但是第二个程序在PROTUES上仿真时点击左转按钮后左转了90°,点击右转按钮时,向右转了45°,结果是向左转了45°,没恢复到原来位置。

001.JPG (119.93 KB, 下载次数: 0)

001.JPG
此帖出自51单片机论坛

最新回复

按格雷码发送控制信号就行了  详情 回复 发表于 2011-10-27 17:13
点赞 关注
 

回复
举报

3404

帖子

6

TA的资源

裸片初长成(初级)

沙发
 
有可能是按键处理的问题吧?试一试在有按键按下之后把相应位置成1再执行转动程序。
LEFT:     SETB  P1.3
               MOV    DPTR,#TABLE  
               MOV    R0,#01H
               MOV    A,R0
               MOVC   A,@A+DPTR
               MOV    P0,A
              CALL   DELAY
              JMP    STOP
RIGHT:   SETB  P1.4
                MOV    DPTR,#TABLE  
              MOV    R1,#02H
              MOV    A,R1
              MOVC   A,@A+DPTR
              MOV    P0,A
              CALL   DELAY
              JMP    STOP
此帖出自51单片机论坛
 
 
 

回复

8

帖子

5

TA的资源

一粒金砂(中级)

板凳
 

谢谢你的帮助,我运行了一下,不是那个原因。

 

在源码里我改动了一下——不使用查表指令后,那个问题没有了。

 

不知为什么,修改好多次(表里的数字无数次)最后放弃查表指令后可以了。

 

我想做一个类似汽车转向一样,一个电机只需控制往一个方向转(或恢复原状),至于车子向左还是向右转向,就由另一个电机控制轮子。

 

也可以使小车原地360°转圈(主要是为了这个功能而搞的)。

 

下面是修改后可以满足45°左转要求的代码:

                     ORG    0000H
LOOP:          JNB    P1.3,LEFT
                     JNB    P1.4,RIGHT
                     JMP    LOOP
LEFT:           SETB P1.3
                
                     MOV R0,#8
                     MOV A,R0
                     MOV P0,A
                     CALL DELAY
                     JMP STOP
RIGHT:         SETB P1.4
                     MOV R1,#12
                     MOV A,R1
               
                     MOV P0,A
                     CALL DELAY
                     JMP STOP
DELAY:         MOV    R3,#100
D1:                MOV    R2,#249
                      DJNZ   R2,$
                      DJNZ   R3,D1
                      RET
STOP:            ORL    P0,#0FFH
                      JMP    LOOP

                      END

想要右转向45°,只需把8与12换换位置就OK了!

 

[ 本帖最后由 弗莱曼飞侠 于 2011-10-26 17:57 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

8

帖子

5

TA的资源

一粒金砂(中级)

4
 
加Q:1406832037
小菜鸟希望和单片机爱好者交流
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

5
 

回复 楼主 弗莱曼飞侠 的帖子

按格雷码发送控制信号就行了
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名最后一周!2025 英飞凌消费、计算与通讯创新大会-北京站
会议时间:3月18日(周二)09:30签到
参会奖励:电动螺丝刀套装、户外登山包、京东卡

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表