硬件电路:单片机的P1.0 P1.1加在ULN2003的一侧,另一侧接两相的步进电机。22V供电。现在问题是我把程序下进去,只是振动,不转动。我的软件仿真没有问题呀。请高手指点小弟谢了.<br />主程序如下<br />org 00h<br />stop: orl p1,#0ffh ; 步进电机停止<br />loop:jnb p3.0,for2 ; 如果p3.2按下正转<br />jnb p3.1,rev2 ; 如果p3.3按下反转<br />jnb p3.2,stop1 ; 如果p3.4按下停止<br />jmp loop ;反复监测键盘<br />for: mov r0,#00h ;正转到tab取码指针初值<br />for1:mov a,r0 ;取码<br />mov dptr,#tabla ;<br />movc a,@a+dptr ;10<br />jz for ;是否到了结束码00h<br />cpl a ;把acc反向<br />mov p1,a ;输出到p1开始正转<br />jnb p3.2,stop1 ; 如果p3.4按下停止<br />jnb p3.1,rev2 ; 如果p3.3按下反转<br />call delay ;转动的速度<br />inc r0 ;取下一个码<br />jmp for1 ;继续正转<br />rev:mov r0,#00h ;反转到tab取码指针初值<br />revs:mov a,r0 ;20<br />mov dptr,#tabla ;取码<br />movc a,@a+dptr<br />jz rev ;是否到了结束码00h<br />cpl a ;把acc反向<br />mov p1,a ;输出到p1开始反转<br />jnb p3.2,stop1 ; 如果p3.4按下停止<br />jnb p3.1,rev2 ; 如果p3.3按下反转<br />call delay ;转动的速度<br />inc r0 ;取下一个码<br />jmp revs ;继续反转 30<br />stop1:call delay ; 按p3.4的消除抖动<br />jnb p3.2,$ ; p3.4放开否?<br />call delay ;放开消除抖动<br />jmp stop<br /><br />for2:call delay ; 按p3.2的消除抖动<br />jnb p3.0,$ ; p3.2放开否?<br />call delay ;放开消除抖动<br />jmp for<br />rev2:call delay ; 按p3.3的消除抖动<br />jnb p3.1,$ ; p3.3放开否?<br />call delay ;放开消除抖动<br />jmp rev<br /><br />delay:mov r1,#255;步进电机的转速20ms<br />d1:mov r2,#255<br />djnz r2,$<br />djnz r1,d1<br />ret<br />tabla:<br />db 01,02 ;正转表<br />db 00 ;正转结束<br />db 02,01 ;反转<br />db 00 ;反转结束<br />end<br />
|