************************************************<br />* FileName: ex5.asm *<br />* Description: 步进电机控制实验 *<br />* Copyright(C) SanZhi Electronic, Author Zpin *<br />************************************************<br /><br /> .title "ex5" <br /> .global _c_int00<br /> .mmregs<br /><br />BJ_ADD .set 1008h <br /><br />BJ_DIRECT .set 60h<br />BJ_SPEED .set 61h<br /><br /> .data<br /> .byte 0eh,0dh,0bh,07h<br /><br /> .sect ".vectors"<br />reset: B _c_int00 <br /> NOP<br /> NOP<br /> .space 4*127 ?<br /> <br /> .text<br />_c_int00:<br /> LD #0h,DP<br /> STM #3000h,SP<br /> SSBX INTM<br /> RSBX SXM<br /> ST #07FFFh,SWWSR<br /><br /> ST #0h,CLKMD ;切换到DIV模式?<br />tst BITF CLKMD,#1h<br /> BC tst,TC ;判断切换是否完成?<br /> ST #1087h,CLKMD ;切换到PLL*2模式?<br /> RPT #0FFh ;等待切换完成 ?<br /> NOP<br /><br /> ST #04h,BK ;置循环缓冲区大小 ?<br /> ST #2000h,AR0 ;置循环缓冲区首地址 ?<br /> <br /> ST #00h,BJ_DIRECT ;电机旋转方向<br /> ST #01h,BJ_SPEED ;电机旋转速度<br /> <br />read LD #speed0,B ;判断速度 ?<br /> ADD BJ_SPEED,2,B,B<br /> BACC B<br /><br />speed0 ST #6fh,AR6 ;速度0<br /> B direct<br /><br />speed1 ST #4fh,AR6 ;速度1<br /> B direct<br /><br />speed2 ST #2fh,AR6 ;速度2<br /> B direct<br /><br />speed3 ST #1fh,AR6 ;速度3<br /> B direct<br /><br />speed4 ST #0ch,AR6 ;速度4<br /> B direct<br /><br />speed5 ST #07h,AR6 ;速度5<br /><br />direct BITF BJ_DIRECT,#01h ;判断方向 ?<br /> BC start1,TC<br /><br />start0 CALL delay<br /> PORTW *AR0+%,BJ_ADD ;正转?<br /> B read<br /><br />start1 CALL delay<br /> PORTW *AR0-%,BJ_ADD ;反转?<br /> B read<br /><br />delay ST #0d00h,AR7 ;延时子程序<br /> BANZ $,*AR7-<br /> BANZ delay,*AR6-<br /> RET<br /><br />初学DSP, 打问号的句子谁能帮我详细解释下意思 谢谢了<br />还有,如果要电机正转10圈然后反转10圈,程序如何修改? <br /> |
|