|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
#include<reg51.h>
#include<intrins.h>
sfr P3M0=0xb2;//声明 引脚输出模式寄存器
sbit IN1=P3^4;//定义PWM输入引脚
sbit OUT1=P3^3; //定义输出引脚
sbit IN2=P3^5;//定义PWM输入引脚
sbit OUT2=P3^2; //定义输出引脚
unsigned int time1; //记录时间
unsigned int time2; //记录时间
void Delay10us()//@12.000MHz
{
unsigned char i;
_nop_();//使用《舵机测试仪》课程中调整过的延时程序
_nop_();
i = 24;
while (--i);
}
main()
{
OUT1=0; //先关闭输出
OUT2=0;
P3M0=13;
while(1)
{
if(IN1==1) //收到PWM高电平,开始测量
{
time1=0;//先把时间清零
while(IN1==1)//如果引脚一直为高电平,一直循环
{
Delay10us();
time1=time1+1; //每循环一次,就记录了10us时间
}
if(time1>90&&time1<120)//0.9ms~1.2ms高电平
{
OUT1=0;//关闭开关
}
if(time1>180&&time1<210)//1.8ms~2.1ms高电平
{
OUT1=1; //打开开关
}
}
if(IN2==1) //收到PWM高电平,开始测量
{
time2=0;//先把时间清零
while(IN2==1)//如果引脚一直为高电平,一直循环
{
Delay10us();
time2=time2+1; //每循环一次,就记录了10us时间
}
if(time2>90&&time2<120)//0.9ms~1.2ms高电平
{
OUT2=0;//关闭开关
}
if(time2>180&&time2<210)//1.8ms~2.1ms高电平
{
OUT2=1; //打开开关
}
}
}
}
|
| |