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

📄 sifu_temp.c

📁 伺服马达控制的C51程序。 文件: sifu*.c sifu*.Uv2 sifu*.hex 等相关文件。
💻 C
字号:
/****************************************************************/
/*Module: New technic
/*Creator: lianghaodang
/*Date: 11/19/2007   
/*Description: creat a pulse
/****************************************************************/
#include<AT892051.h>
#include<stdio.h>
#include<math.h>
#include<intrins.h>

sbit  Sig_x = P3^4;
sbit  Sig_y = P1^2;
sbit  KEY = P3^7;
sbit  PULS_x = P3^5;
sbit  PULS_y = P1^3;
unsigned int Counter_x,Counter_y,x_size,y_size;
void Delayms(unsigned char ms);
//----------------------------------------
void time0(void) interrupt 1
{	//PULS_x = ~PULS_x;
	//Counter_x++;
	PULS_y = ~PULS_y;
	Counter_y++;
	TH0 = 0xFF;
	TL0 = 0xB0;
}

void time1(void) interrupt 3
{
	PULS_x = ~PULS_x;
	Counter_x++;
	//PULS_y = ~PULS_y;
	//Counter_y++;
	TH1 = 0xFF;
	TL1 = 0xB0;
}

//----------------------------------------
void main(void)
{  
 //   bit Flag;
	P1 = 0XFF;
    P3 = 0XFF;
    PULS_x = 0;
	PULS_y = 0;
    TMOD = 0x11;
	IT0 = 1; 
	PCON=0X00;
	ET0 = 1;
	ET1 = 1;
	
	PT1 = 1;	//Time1 First the time0						
    TH0 = 0xFF;
	TL0 = 0xB0; 
    TH1 = 0xFF;
	TL1 = 0xB0;

    TR0 = 0;								
	TR1 = 0;
	EA = 1;

 while(1)
  {
/****************/
/*	KEY = 1;
	while(1)
	{while(KEY!=0);
	 Delayms(5);
	 if(KEY==0) break;
	}
	while(KEY==0);*/
/***************/
///////////*******************************************************/
	Sig_x = 0;
	Delayms(50);
	do   //x action 1
		{
		TR1 = 1;
		}while(Counter_x<3000);
    TR1 = 0;
	Counter_x = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);	
Delayms(250);
Delayms(250);
/*********************************************/
	Sig_y = 0;
    Delayms(50);
	/***************/
	do   //y action 1
		{
		TR0 = 1;		
		}while(Counter_y<3000);
    	TR0 = 0;
		Counter_y = 0;
	PULS_y = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
/********************************************/
	Sig_x = 1;
	Sig_y = 1;
	Delayms(50);
	TR0 = 1;
	TR1 = 1;
	do   //x & y action 1
		{
		if(Counter_x==3000) TR0 = 0;
		if(Counter_y==3000) TR1 = 0;
		
		}while(Counter_x<3000||Counter_y<3000);
		TR1 = 0;
		TR0 = 0;
	    Counter_x = 0;
		Counter_y = 0;
	PULS_y = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
/********************************************/
/****************/
/*	KEY = 1;
	while(1)
	{while(KEY!=0);
	 Delayms(5);
	 if(KEY==0) break;
	}
	while(KEY==0);*/
/***************/
	Sig_x = 0;
    Delayms(50);
	do   //x action 1
		{
		TR1 = 1;
		}while(Counter_x<3000);
    TR1 = 0;
	Counter_x = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);	
/*********************************************/
	Sig_y = 0;
    Delayms(50);
	/***************/
	do   //y action 1
		{
		TR0 = 1;		
		}while(Counter_y<1000);
    	TR0 = 0;
		Counter_y = 0;
		PULS_y = 0;
	
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
/********************************************/
	Sig_x = 1;
	Sig_y = 1;
	Delayms(50);
	TR0 = 1;
	TR1 = 1;
	do   //x & y action 1
		{
		if(Counter_x==3000) TR1 = 0;
		if(Counter_y==1000) TR0 = 0;
		
		}while(Counter_x<3000||Counter_y<1000);
		TR1 = 0;
		TR0 = 0;
	    Counter_x = 0;
		Counter_y = 0;
	PULS_y = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
////////////////////************************************************************/

///////////*********************************************************************/
	Sig_x = 0;
	Delayms(50);
	do   //x action 1
		{
		TR1 = 1;
		}while(Counter_x<3000);
    TR1 = 0;
	Counter_x = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);	
Delayms(250);
Delayms(250);
/*********************************************/
	Sig_y = 1;
    Delayms(50);
	/***************/
	do   //y action 1
		{
		TR0 = 1;		
		}while(Counter_y<3000);
    	TR0 = 0;
		Counter_y = 0;
	PULS_y = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
/********************************************/
	Sig_x = 1;
	Sig_y = 0;
	Delayms(50);
	TR0 = 1;
	TR1 = 1;
	do   //x & y action 1
		{
		if(Counter_x==3000) TR1 = 0;
		if(Counter_y==3000) TR0 = 0;
		
		}while(Counter_x<3000||Counter_y<3000);
		TR1 = 0;
		TR0 = 0;
	    Counter_x = 0;
		Counter_y = 0;
	PULS_y = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
/********************************************/
/****************/
/*	KEY = 1;
	while(1)
	{while(KEY!=0);
	 Delayms(5);
	 if(KEY==0) break;
	}
	while(KEY==0);*/
/***************/
	Sig_x = 0;
    Delayms(50);
	do   //x action 1
		{
		TR1 = 1;
		}while(Counter_x<3000);
    TR1 = 0;
	Counter_x = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);	
/*********************************************/
	Sig_y = 1;
    Delayms(50);
	/***************/
	do   //y action 1
		{
		TR0 = 1;		
		}while(Counter_y<1000);
    	TR0 = 0;
		Counter_y = 0;
		PULS_y = 0;
	
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
/********************************************/
	Sig_x = 1;
	Sig_y = 0;
	Delayms(50);
	TR0 = 1;
	TR1 = 1;
	do   //x & y action 1
		{
		if(Counter_x==3000) TR1 = 0;
		if(Counter_y==1000) TR0 = 0;
		
		}while(Counter_x<3000||Counter_y<1000);
		TR1 = 0;
		TR0 = 0;
	    Counter_x = 0;
		Counter_y = 0;
	PULS_y = 0;
	PULS_x = 0;
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
Delayms(250);
////////////////////************************************************************/

  }
}
void Delayms(unsigned char ms)	
// relay ms
{	unsigned char i;
	while(ms--)
	{
		for(i = 0; i < 120; i++);
	}
}




	
			
	





	


⌨️ 快捷键说明

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