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

📄 interrupt.c

📁 步进电机驱动程序 用C8051F330单片机控制L297和L298驱动步进电机。能够实现正反转-C8051F330 SCM with L297 and L298 stepper motor drive
💻 C
字号:
#include	<pic.h>	
#include"main.h"
unsigned char k1_count,k2_count;
unsigned int mcount=0;;
bit k1,k2;

unsigned int count,count1;
void init_timer(void)
{
//----TIME0 init-----------------
OPTION=3;
T0IE=1;
//----TIME1 init-----------------
T1CON=1;//enable TMR1 on , Prescaler Rate is 1:1
TMR1H=0xFE;    //10ms interrupt once
TMR1L=0x0B;
TMR1IE=1;  
PEIE=1;   //enable TMR1 interrupt
//----TIME2 init-----------------
TMR2ON=1;	
T2CON=0x7f;
TMR2IE=1;	
PEIE=1;   //enable TMR1 interrupt
PR2=38;//255;
//-------------------------------
GIE=1;        //enable all unmasked interrupts
}

void interrupt ISR (void)
{


	//==============time0  isr=========================
 if(TMR0IF)//alarm 
  	   {
	    TMR0IF=0;   TMR0=0;        //4.42ms       
        if(K1==0)
              { 
              if(k1_count==30)
                { k1_count=0; k1=1; }
              else k1_count++;
              }
//---------------------------------------------
       if(K2==0)
              { 
              if(k2_count==20)
                { k2_count=0; k2=1; }
              else k2_count++;
              }
        } 
      
     //================time1 isr=========================   
          if(TMR1IF&TMR1IE)//process
	   {
	    TMR1IF=0;
   
  TMR1H=0XFE;
  TMR1L=0X0B;

   //----------------------------------      
      if(k1) {
              CLK=!CLK; 
              LED1=!LED1;
              EN=1; //motor begin satr
              CCW=1; 
              if(mcount==800)
                 { EN=0; mcount=0; k1=0; LED1=1; }
              else mcount++;
             }
   //----------------------------------   
    if(k2) {
              CLK=!CLK; 
              LED1=!LED1;
              EN=1; //motor begin satr
              CCW=0; 
              if(mcount==800)
                 { EN=0; mcount=0; k2=0; LED1=1; }
              else mcount++;
             }
   //----------------------------------      
 
            }

       
    //==================time2 isr========================
       if(TMR2IF&TMR2IE)//buzzer
	   {
	    TMR2IF=0; 
        TMR2=0; 
           if(count1==100)
              { 
             LED=!LED;
             count1=0;
            //---------------------
  
           
           //--------------------
              }
           else count1++;
      
         } 		
    //===================================================    
  }
 
void inti_io(void)
{


TRISB1=0;
TRISB3=0;
TRISB4=0;
TRISB5=0;
TRISC4=0;
 CCW =1; 
 EN  =0;  
 CLK =1;  

LED=0;
}


⌨️ 快捷键说明

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