您的位置 首页 产品

stc12c5a60s2单片机驱动舵机程序

includestc12c5a60s2H>STC12C5A系列单片机defineucharunsignedchardefineuintunsignedint宏定义defineulint

#include <stc12c5a60s2.H> //STC12C5A系列单片机

#define uchar unsigned char
#define uint unsigned int //宏界说
#define ulint unsigned long int //宏界说

void delay(uint time);
void Timer_init();
void Timer0(unsignedlongint us);

uint pwm_valu=500;
sbit dj=P1^0;

void main()
{
Timer_init();//守时器初始化
Timer0(31);//经过一个守时值进入守时循环
while(1)
{
pwm_valu=550; //
delay(2000);
pwm_valu=2500; //
delay(2000); //
pwm_valu=1000; //
delay(2000); //
pwm_valu=2000; //
delay(2000); //
pwm_valu=1500; //
delay(2000);
}
}
//软件延时
void delay(uint time)
{
uint i,j;
for(i=0;i<1000;i++)
for(j=0;j}
//守时器0初始化
void Timer_init()
{
P1M1=0;
P1M0=0XFF;
EA=1; //开总中止
AUXR|=0xC0;//T0,T1作业在1T
TMOD|= 0x11;//T0作业在方法1,16位
ET0 = 1;//开守时器0中止
}
//守时器0守时函数
void Timer0(unsigned long int us) //守时器守时函数
{
unsignedlongint valu;
valu=us*12;//作业在1T
valu=valu;
valu=0xffff-valu;//

TH0=valu>>8;
TL0=(valu<<8)>>8;
TR0 = 1;//T0开端作业
}

/*************************************
t0 中止 中止

*************************************/
void T0zd() interrupt 1
{
static uchar num=1;
switch(num) //
{
case 1:
{
dj=1;
Timer0(pwm_valu);//
} break;
case 2:
{
dj=0;//pwm1变低
Timer0(2500-pwm_valu);//
} break;
case 3:
{
Timer0(2500);//
} break;
case 4:
{
Timer0(2500);//
} break;
case 5:
{
Timer0(2500);//
} break;
case 6:
{
Timer0(2500);//
} break;
case 7:
{
Timer0(2500);//
} break;
case 8:
{
Timer0(2500);//
}break;
case 9:
{
Timer0(2500);//
num=0;
}break;
default:break;
}
num++;
}
本程序完好源码的下载地址:http://www.51hei.com/bbs/dpj-20521-1.html

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/318234.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部