找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机读取航模接收机pwm,程序有注释(原创)

查看数: 4766 | 评论数: 3 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-4-5 22:49

正文摘要:

(原创)航模接收机pwm输出 高位2ms 中位1.5ms 低位1ms(大部分是)我采用的是 STC15F104E单片机 8脚封装

回复

ID:308570 发表于 2020-9-27 09:33
是否可以增加通道
ID:722991 发表于 2020-4-6 16:43
修改:把while改if,下面的放进去
  1. if(p==0)
  2.         {       
  3.         TR0 = 0;                         //停止计时
  4.         a = TH0;                         
  5.         a = a*256+TL0;                 
  6.         TL0 = 0x00;                         //清零
  7.     TH0 = 0x00;                          //清零
  8.         if(a>900&&a<1100)
  9.         {
  10.             led=1;
  11.             Delay100ms();
  12.         }
  13.     if(a>1400&&a<1500)
  14.         {
  15.             led=1;
  16.             Delay100ms();
  17.                 Delay100ms();
  18.                 Delay100ms();
  19.         }
  20.         else led=0;       
  21.         }
复制代码
ID:722991 发表于 2020-4-6 16:39
修改版
  1. /*
  2. By:Xsxin
  3. Time:2020.4.5
  4. STC15F104E
  5. IRC频率12M.
  6. */
  7. #include<reg51.h>
  8. sfr AUXR = 0x8E;
  9. unsigned int a=0;
  10. sbit led=P3^4;
  11. sbit p=P3^2;            //pwm输入脚

  12. void Timer0Init(void)   //12.000MHz
  13. {
  14.         AUXR &= 0x7F;                //定时器时钟12T模式
  15.         TMOD &= 0xF0;                //设置定时器模式
  16.         TL0 = 0x00;                    //设置定时初值
  17.         TH0 = 0x00;                    //设置定时初值
  18.         TF0 = 0;                    //清除TF0标志
  19.         TR0 = 0;                    //定时器0停止计时
  20. }

  21. void Delay100ms()
  22. {                //@11.0592MHz
  23.         unsigned char i, j, k;
  24.         i = 5;
  25.         j = 52;
  26.         k = 195;
  27.         do
  28.         {
  29.                 do
  30.                 {
  31.                         while (--k);
  32.                 } while (--j);
  33.         } while (--i);
  34. }

  35. void main()
  36. {
  37.   Timer0Init();                         //初始化
  38.   while(1)                                 
  39.   {  
  40.     if(p==1)TR0 = 1;         //满足条件,开始计时
  41.         if(p==0)
  42.         {       
  43.         TR0 = 0;                         //停止计时
  44.         a = TH0;                         
  45.         a = a*256+TL0;                 
  46.         TL0 = 0x00;                         //清零
  47.     TH0 = 0x00;                          //清零
  48.         if(a>900&&a<1100)
  49.         {
  50.             led=1;
  51.             Delay100ms();
  52.         }
  53.     if(a>1400&&a<1500)
  54.         {
  55.             led=1;
  56.             Delay100ms();
  57.                 Delay100ms();
  58.                 Delay100ms();
  59.                 Delay100ms();
  60.         }
  61.         else led=0;       
  62.         }
  63.   }
  64. }
复制代码

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表