⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test25.c

📁 5402开发板附带的源程序
💻 C
字号:
/****************************************
*步进电机的工作:
四相混合式步进电机一般由两相驱动器来驱动,
因此,连接时可以采用串联接法或并联接法将四相电机接成两相使用。

实验内容:
1、两相电机驱动。
正转:AB-BC-CD-DA
反转:AD-DC-CB-BA

2、四相电机驱动
正转:A-B-C-D
反转:D-C-B-A
*****************************************
*/

#pragma CODE_SECTION(vect,"vect")

unsigned int  *pmem=0;
unsigned int  READ;
unsigned int  flag;  			/*select phase,0:ab;1:bc;2:cd;3:da*/
unsigned int  flag1;  			/*select direction,0:counter clockwise;1:clockwise*/
unsigned int  TIMER;

#define PMST  *(pmem+0x001D)
#define SWCR  *(pmem+0x002B)
#define SWWSR *(pmem+0x0028)
#define READS *(pmem+0x4000)
#define IMR   *(pmem+0x0000)
#define IFR   *(pmem+0x0001)
#define PRD0  *(pmem+0x0025)  /* timer0 period register */
#define TCR0  *(pmem+0x0026)  /* timer0 control register */

void cpu_init()
{
   PMST=0x3FA0;
   SWWSR=0x7fff;
   SWCR=0x0000;
   IMR=0;
   IFR=IFR;
} 


void set_t0()    
{
   asm(" ssbx intm");
   TCR0=0x0b1b;
   PRD0=0x4e1f;       
   IMR=IMR|0x0008;
   IFR=IFR;
   TCR0=0x0b2b;     
   asm(" rsbx intm");
}

interrupt void tint0()
{
   TIMER++;
   if(TIMER%50==0)
      if(flag<3)
      flag=flag+1;
      else flag=0;
} 

void main(void)
{
   flag=0; 
   flag1=0;
   cpu_init();
   set_t0();
  
   
     READS=9;           /*两相电机驱动工作方式*/
   for(;;)
   {
		if(flag1==0)
      		switch(flag)
      		{
      			case 0:READS=9;break;   /*AB相同时导通*/
      			case 1:READS=10;break;  /*BC相同时导通*/
      			case 2:READS=6;break;   /*CD相同时导通*/
      			case 3:READS=5;break;   /*DA相同时导通*/
      		}
    	else
      		switch(flag)
      		{
      			case 0:READS=5;break;    /*DA相同时导通*/
      			case 1:READS=6;break;    /*CD相同时导通*/
      			case 2:READS=10;break;   /*BC相同时导通*/
      			case 3:READS=9;break;    /*AB相同时导通*/
      		}
      
   }   
   
   /* READS=1;           四相电机驱动工作方式
   for(;;)               
   {
		if(flag1==1)
      		switch(flag)
      		{
      			case 0:READS=1;break;   
      			case 1:READS=8;break;  
      			case 2:READS=2;break;   
      			case 3:READS=4;break;   
      		}
    	else            
      		switch(flag)
      		{
      			case 0:READS=4;break;    
      			case 1:READS=2;break;    
      			case 2:READS=8;break;  
      			case 3:READS=1;break;   
      		}
      
   }   */
}


void vect()
{
   asm(" .ref _c_int00");
   asm(" .ref _tint0");

   asm(" b _c_int00");  /* reset */
   asm(" nop");
   asm(" nop");
   asm(" rete");        /* nmi  */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int2 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" b _tint0");   /* tint0 */
   asm(" nop");
   asm(" nop");
   asm(" rete");  /* brint0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");  /* bxint0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");      /* dmac0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* tint1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int3 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* hpint */
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* brint1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* bxint1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* dmac4 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");     /* dmac5 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -