at89s52 怎么让两个接口同时执行一个延时函数?
at89s52晶振12M定时器初值是2.5MS延时我声明了4个接口其中有2个接口写了个4ms的延时函数。另外两个是默认2.5MS的延时函数。但是我接在舵机上,不可以同时连...
at89s52 晶振12M
定时器初值是2.5MS延时
我声明了4个接口
其中有2个接口写了个4ms的延时函数。
另外两个是默认2.5MS的延时函数。
但是我接在舵机上,不可以同时连接2个4ms的延时函数的接口
只能接入一个。否则会全部舵机旋转混乱。
但是默认的接口却可以接上2个
请问是怎么回事?
------------------------------------------------------------
#include <reg51.h>
#include<intrins.h>
sbit Q____Z=P2^0; //前左轮
sbit Q____Y=P2^5; //前右轮
sbit H____Z=P3^3; //后左轮
sbit H____Y=P3^0; //后右轮
unsigned char i ;
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0F0;
TL0 = 0x60;
EA = 1;
ET0 = 1;
TR0 = 1;
}
/*
void delay1(void) //此函数去掉会增加故障率,对功能无影响
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=2;a>0;a--);
}
*/
void delay(void)
{ unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=8;b>0;b--)
for(a=34;a>0;a--);
}
void main(void)
{
InitTimer0();
while(1)
{
for(i=250;i>0;i--)
{
delay();
Q____Y=1;
Q____Y=0;
Q____Z=1;
delay();
Q____Z=0;
H____Y=1;
H____Y=0;
H____Z=1;
delay();
H____Z=0;
}
delay();
} //while(1)结束
delay();
} //main结束
---------------------------------------------
这个程序是个四轮小车的程序,一个接口控制一个轮子
延时函数4ms是顺时针旋转
延时函数2ms...好像是暂停
延时函数0ms....好像是逆时针旋转
代码全部都在上面了…定时程序没有是什么意思? 展开
定时器初值是2.5MS延时
我声明了4个接口
其中有2个接口写了个4ms的延时函数。
另外两个是默认2.5MS的延时函数。
但是我接在舵机上,不可以同时连接2个4ms的延时函数的接口
只能接入一个。否则会全部舵机旋转混乱。
但是默认的接口却可以接上2个
请问是怎么回事?
------------------------------------------------------------
#include <reg51.h>
#include<intrins.h>
sbit Q____Z=P2^0; //前左轮
sbit Q____Y=P2^5; //前右轮
sbit H____Z=P3^3; //后左轮
sbit H____Y=P3^0; //后右轮
unsigned char i ;
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0F0;
TL0 = 0x60;
EA = 1;
ET0 = 1;
TR0 = 1;
}
/*
void delay1(void) //此函数去掉会增加故障率,对功能无影响
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=2;a>0;a--);
}
*/
void delay(void)
{ unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=8;b>0;b--)
for(a=34;a>0;a--);
}
void main(void)
{
InitTimer0();
while(1)
{
for(i=250;i>0;i--)
{
delay();
Q____Y=1;
Q____Y=0;
Q____Z=1;
delay();
Q____Z=0;
H____Y=1;
H____Y=0;
H____Z=1;
delay();
H____Z=0;
}
delay();
} //while(1)结束
delay();
} //main结束
---------------------------------------------
这个程序是个四轮小车的程序,一个接口控制一个轮子
延时函数4ms是顺时针旋转
延时函数2ms...好像是暂停
延时函数0ms....好像是逆时针旋转
代码全部都在上面了…定时程序没有是什么意思? 展开
展开全部
#include <reg51.h>
#include<intrins.h>
sbit Q____Z=P2^0; //前左轮
sbit Q____Y=P2^5; //前右轮
sbit H____Z=P3^3; //后左轮
sbit H____Y=P3^0; //后右轮
unsigned char i ;
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0F0;
TL0 = 0x60;
ET0 = 1;
TR0 = 1;
EA = 1;//总中断开在后
}
/*
void delay1(void) //此函数去掉会增加故障率,对功能无影响
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=2;a>0;a--);
}
*/
void delay(void)
{ unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=8;b>0;b--)
for(a=34;a>0;a--);
}
void main(void)
{
InitTimer0();
while(1)
{
for(i=250;i>0;i--)
{
delay();
Q____Y=1;
Q____Y=0;
Q____Z=1;
delay();
Q____Z=0;
H____Y=1;
H____Y=0;
H____Z=1;
delay();
H____Z=0;
}
delay();
} //while(1)结束
delay();
} //main结束
程序没给全,没有定时程序。
#include<intrins.h>
sbit Q____Z=P2^0; //前左轮
sbit Q____Y=P2^5; //前右轮
sbit H____Z=P3^3; //后左轮
sbit H____Y=P3^0; //后右轮
unsigned char i ;
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0F0;
TL0 = 0x60;
ET0 = 1;
TR0 = 1;
EA = 1;//总中断开在后
}
/*
void delay1(void) //此函数去掉会增加故障率,对功能无影响
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=2;a>0;a--);
}
*/
void delay(void)
{ unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=8;b>0;b--)
for(a=34;a>0;a--);
}
void main(void)
{
InitTimer0();
while(1)
{
for(i=250;i>0;i--)
{
delay();
Q____Y=1;
Q____Y=0;
Q____Z=1;
delay();
Q____Z=0;
H____Y=1;
H____Y=0;
H____Z=1;
delay();
H____Z=0;
}
delay();
} //while(1)结束
delay();
} //main结束
程序没给全,没有定时程序。
追问
没有定时程序是什么意思呢?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询