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

📄 servo.c

📁 8051入間程序
💻 C
字号:
#include <REGX52.H>

#define SERVO_CONTROL P2_0    //Servo's control pin

//Servo
void driveServo(void);


//Timer 0
int t0Counter = 0;
//Servo
unsigned int servoCounter = 0;	//Servo Counter
unsigned char servoPos = 0;		//set Servo's Position

void main(void)
{
	IE = 0x82;			//Interrupt enable
	TMOD = 0x02;		//Mode 2
	//Timer0
	TL0 = 156;	//0.1ms
	TH0 = 156;	//0.1ms
	TR0 = 1;	

	//Servo
	SERVO_CONTROL = 0;	//Init

	while(1);

}

void T0_int(void) interrupt 1
{
	//T0 Counter
	
	t0Counter++;
	if(t0Counter>=10000) //0.1s
	{
		t0Counter = 0;
		if(servoPos<20)
			servoPos+=1;	//set servo's Position (0-20)
		else
			servoPos=0;		//set servo's Position (0-20)

	}

	//Servo
	driveServo();

}

/*************************************
Send control signal to servo
call it when each interrupt occur
Timer 0 value
TL0 = 156;	//0.1ms
TH0 = 156;	//0.1ms
*************************************/
void driveServo(void)
{
	//**send signal to servo**
	//
	servoCounter++;
	//T = 200*0.1ms = 20ms
	if(servoCounter<=5+servoPos)	//duty cycle : high
	{
		SERVO_CONTROL = 1;
	}
	else if(servoCounter<=200)		//low cycle
	{
		SERVO_CONTROL = 0;
	}
	else
	{
		servoCounter = 0;			//repeat
	}
	//
	//**end send signal
}

⌨️ 快捷键说明

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