#include
#define uint unsigned int
#define uchar unsigned char
***it P1_0=P1^0; //PWM信号输出端
void Init_t0(void); //子函数声明
void main()
{
P1_0=0; //置PWM初始输出为高电平
Init_t0();
while(1); //等待中断
}
void Init_t0(void)
{
TMOD=0x01; //设置定时器0工作方式1后面运行TR位启动
TH0=(65536-500)/256;
TL0=(65536-500)%256; //1.5ms 的高电平
EA=1;
ET0=1;
TR0=1;
}
/*******************中断服务程序**********************/
void PWM0() interrupt 1 //定时器0中断,产生方波
{
if(P1_0==1) //如果上个电平为1,则下个低电平的时间为18.5ms
{
TH0=(65536-18500)/256; //试过t1=1500;t0=20000-t1;但舵机老是吱吱的响,推测:运算耗时.
TL0=(65536-18500)%256;
}
else //如果上个电平为0,则下个高电平为1.5ms
{
TH0=(65536-1780)/256;
TL0=(65536-1780)%256;
}
P1_0=~P1_0;
}
#include
#define uint unsigned int
#define uchar unsigned char
***it P1_0=P1^0; //PWM信号输出端
void Init_t0(void); //子函数声明
void main()
{
P1_0=0; //置PWM初始输出为高电平
Init_t0();
while(1); //等待中断
}
void Init_t0(void)
{
TMOD=0x01; //设置定时器0工作方式1后面运行TR位启动
TH0=(65536-500)/256;
TL0=(65536-500)%256; //1.5ms 的高电平
EA=1;
ET0=1;
TR0=1;
}
/*******************中断服务程序**********************/
void PWM0() interrupt 1 //定时器0中断,产生方波
{
if(P1_0==1) //如果上个电平为1,则下个低电平的时间为18.5ms
{
TH0=(65536-18500)/256; //试过t1=1500;t0=20000-t1;但舵机老是吱吱的响,推测:运算耗时.
TL0=(65536-18500)%256;
}
else //如果上个电平为0,则下个高电平为1.5ms
{
TH0=(65536-1780)/256;
TL0=(65536-1780)%256;
}
P1_0=~P1_0;
}
举报