标题:
单片机读取航模接收机pwm,程序有注释(原创)
[打印本页]
作者:
Xsxin
时间:
2020-4-5 22:49
标题:
单片机读取航模接收机pwm,程序有注释(原创)
(
原创
)航模接收机pwm输出 高位2ms 中位1.5ms 低位1ms(大部分是)我采用的是 STC15F104E单片机 8脚封装
STC15F104E.png
(364.86 KB, 下载次数: 103)
下载附件
2020-4-5 22:41 上传
源代码如下:
/*
By:Xsxin
Time:2020.4.5
STC15F104E
IRC频率12M.
*/
#include<reg51.h>
sfr AUXR = 0x8E;
unsigned int a=0;
sbit led=P3^4;
sbit p=P3^2; //pwm输入脚
void Timer0Init(void) //12.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x00; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 0; //定时器0停止计时
}
void main()
{
Timer0Init(); //初始化
while(1)
{
if(p==1)TR0 = 1; //满足条件,开始计时
while(p==1); //不满足条件,跳出循环
TR0 = 0; //停止计时
a = TH0;
a = a*256+TL0;
TL0 = 0x00; //清零
TH0 = 0x00; //清零
if(a>900&&a<1100)led=0; else led=1; //判断,执行程序
a = 0; //计数清零
}
}
复制代码
注意
:烧写程序时请选择IRC频率12M.
所有资料51hei提供下载:
读取航模pwm.zip
(16.76 KB, 下载次数: 33)
2020-4-5 22:45 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
Xsxin
时间:
2020-4-6 16:39
修改版
/*
By:Xsxin
Time:2020.4.5
STC15F104E
IRC频率12M.
*/
#include<reg51.h>
sfr AUXR = 0x8E;
unsigned int a=0;
sbit led=P3^4;
sbit p=P3^2; //pwm输入脚
void Timer0Init(void) //12.000MHz
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0x00; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 0; //定时器0停止计时
}
void Delay100ms()
{ //@11.0592MHz
unsigned char i, j, k;
i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
Timer0Init(); //初始化
while(1)
{
if(p==1)TR0 = 1; //满足条件,开始计时
if(p==0)
{
TR0 = 0; //停止计时
a = TH0;
a = a*256+TL0;
TL0 = 0x00; //清零
TH0 = 0x00; //清零
if(a>900&&a<1100)
{
led=1;
Delay100ms();
}
if(a>1400&&a<1500)
{
led=1;
Delay100ms();
Delay100ms();
Delay100ms();
Delay100ms();
}
else led=0;
}
}
}
复制代码
作者:
Xsxin
时间:
2020-4-6 16:43
修改
:把while改if,下面的放进去
if(p==0)
{
TR0 = 0; //停止计时
a = TH0;
a = a*256+TL0;
TL0 = 0x00; //清零
TH0 = 0x00; //清零
if(a>900&&a<1100)
{
led=1;
Delay100ms();
}
if(a>1400&&a<1500)
{
led=1;
Delay100ms();
Delay100ms();
Delay100ms();
}
else led=0;
}
复制代码
作者:
icgsgf
时间:
2020-9-27 09:33
是否可以增加通道
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1