模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

楼主: 917840533

不到3块钱,极小体积把PPM分离成PWM信号

  [复制链接]
发表于 2016-9-6 14:18:19 | 显示全部楼层
66666666666666666666666
发表于 2016-9-6 14:54:21 | 显示全部楼层
我真后悔当年怎么没去学微电子和无线电呢…………
发表于 2016-9-11 13:07:47 | 显示全部楼层
这也能做太厉害了
发表于 2016-9-11 14:32:56 | 显示全部楼层
顶,淡定,淡定,淡定……
发表于 2016-9-21 11:55:13 | 显示全部楼层
不错,下载试试.
发表于 2016-9-22 18:15:54 | 显示全部楼层
明白了
发表于 2016-9-29 14:15:55 | 显示全部楼层

謝謝樓主 分享
发表于 2016-10-17 09:53:26 | 显示全部楼层
厉害   模友之吧  越来越给力了  不像5imx  他妈的  里面东西是好  可以不能评论   啥都他妈的权限不足  去死吧
发表于 2016-10-19 11:49:13 | 显示全部楼层
这个不错,稳定吗??
发表于 2016-10-23 13:08:38 | 显示全部楼层
请加飞天狼微信ftlzzy,大家一起打造中国最大航模爱好者朋友圈。
发表于 2016-11-4 11:37:57 | 显示全部楼层
支持支持
发表于 2017-1-16 22:10:52 | 显示全部楼层
电阻型号呢?
 楼主| 发表于 2017-1-25 13:03:36 | 显示全部楼层

1K到5K之间都没问题,不接也可以但不推荐
发表于 2017-1-26 10:57:34 | 显示全部楼层
楼主真厉害,运费高又贵,路过帮顶,高手。
发表于 2017-1-26 15:46:15 | 显示全部楼层
这个还是很有用的啊!!
发表于 2017-1-26 20:50:44 | 显示全部楼层
路过,顶起来!
发表于 2017-1-28 21:17:37 | 显示全部楼层
本帖最后由 payne.pan 于 2017-1-28 21:30 编辑

前天刚看到这篇文章,支持楼主,代码我改写了一遍,更方便大家阅读。

========================================

/*        ppm to pwm  for stc15f104w 12Mhz          */
/*  from http://www.moz8.com/thread-63467-1-1.html  */
/*  original by "917840533", changed by "Payne.Pan" */
/*  not allowed for commercial usage                */
/*                2017.1                            */

#include"reg52.h"
#include "intrins.h"
#define u8 unsigned char
#define u16 unsigned int

#define PWM_FrLen 22500

sfr P3M1=0xb1;
sfr P3M0=0xb2;
sfr AUXR=0x8e;
sfr T2H=0xd6;
sfr T2L=0xd7;
sfr IE2=0xaf;

sbit out=P3^4;
sbit k0=P3^0;
sbit k1=P3^1;
sbit k2=P3^2;

u16 ppm,ppms[8],pwm;

u8 sel_ch=0, read_pos=0;
bit pwm_setting=1, timeout = 0 ;

void ppm_int() interrupt 2 {
        TR0=0;
        /* read data in us */
        ppm=TH0;                    
        ppm=(ppm<<8)|TL0;
        /* clear T0 for next read*/
        TH0=0;
        TL0=0;            
        TR0=1;        

        if(ppm>2500 || timeout) {
                read_pos=0;
                timeout=0;
                return;
        }

        if ( read_pos>7)  return;

        ppms[read_pos++] = ppm;

}

void T2_int() interrupt 12 {

        pwm=ppms[sel_ch];

        if (pwm_setting) {
                out=0; T2H=(65535-pwm)/256; T2L=(65535-pwm )%256;
        }        else {
                out=1; T2H=(65535-PWM_FrLen+pwm)/256; T2L=(65535-PWM_FrLen+pwm)%256;

        }
        pwm_setting = !pwm_setting;
}


void T0_int() interrupt 1 {     
        timeout=1;                 
}

void main()
{
        /* p3.4 as output, p3.3 as input */
        P3M0=0x10; //10000
        P3M1=0x08; //01000

        /* interrupt 1 */  
        EX1=1;   // enable INT1
        IT1=1;   // mode
        PX1=1;   // priority

        /* T0 */
        ET0=1;       // enable T0 interrupt
        TMOD=0x01;   // T1 16bit mode

        /* T2 */
        T2H = T2L = 0;
        IE2=0x04;   // enable T2 interrupt
        AUXR=0x10;  // T2 start

        EA=1;

        sel_ch=k0;
        sel_ch=(sel_ch<<1)|k1;
        sel_ch=(sel_ch<<1)|k2;

        while(1);
}

 楼主| 发表于 2017-2-2 23:43:41 | 显示全部楼层
payne.pan 发表于 2017-1-28 21:17
前天刚看到这篇文章,支持楼主,代码我改写了一遍,更方便大家阅读。

================================== ...

感谢整理,一直都是独自写程序独自用,很多写法格式都不懂还请多多指教

点评

恩,多交流,一起进步。  详情 回复 发表于 2017-2-3 08:47
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|关于模吧|APP下载|广告报价|手机版|企业会员|商城入驻|联系我们|模吧 ( 黔ICP备2022002348号-1 )

© 2013-2020 Moz8.com 模吧,玩出精彩!