单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 300|回复: 5
打印 上一主题 下一主题
收起左侧

无线遥控PT2262/2272M4连接单片机程序问题

[复制链接]
跳转到指定楼层
楼主
我把无线非锁接收板接到单片机,,来控制PWM的发射和终止。但是按一下有时候可以发出,有时候按好几下都发不出,请高手解决,

#include "pwm_register.h"
#include "stdbool.h"
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
int n;

#define uchar unsigned char
        uchar i;
sbit D0 = P0^0;
sbit D1 = P0^1;
sbit D = P2^7;
sbit D3 = P0^3;
sbit VT=P0^4;
void LED_init()
{
              ENLED=0;
              ADDR3=0;
              ADDR2=0;
              ADDR1=0;
              ADDR0=0;
}
delay(uchar);
wb_int0() interrupt 0
{
  if(VT==0)
        {
          i=D;
        }
}
void main()
{

        EA=1;
        EX0=1;
        IT0=1;
        
        
        
        
         LED_init();
        while(1)
        {
               
        if(i==1)
        {
                delay(5);
                if(i==1)
                {        
        
                n++;
                        delay(10);
                if(n==1)
                {
        enable_xsfr();
        pwm_clock_speed(0);
  set_pwm_period(0x1000);
        set_pwm0_T1_T2_point(0x200,0x700);
        enable_pwm0();
        disable_xsfr();
  enable_pwm();
                }
               
                if(n==2)
        {
        disable_pwm();
        disable_pwm0();        
                n=0;
               
        }
        while(!D);
        delay(10);
        while(!D);
                }
        
        }
        }
}
delay(uchar x)
{
        uchar a,b;
        for(a=x;a>0;a--)
                for(b=200;b>0;b--);

}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
devcang 发表于 2019-2-12 10:42 | 只看该作者
按键的处理。。。。
回复

使用道具 举报

板凳
 楼主| 亡羊补牢 发表于 2019-2-12 14:25 | 只看该作者
devcang 发表于 2019-2-12 10:42
按键的处理。。。。

是按键去消抖吗?
回复

使用道具 举报

地板
 楼主| 亡羊补牢 发表于 2019-2-12 20:17 | 只看该作者
devcang 发表于 2019-2-12 10:42
按键的处理。。。。

#include "pwm_register.h"
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
int n;
sbit D0        = P0^0;
sbit D1        = P0^1;
sbit D2        = P0^2;
sbit D3        = P0^3;
void LED_init()
{
        ENLED=0;
        ADDR3=1;
        ADDR2=1;
        ADDR1=1;
        ADDR0=0;
}

void delay10ms(void)
{
unsigned char a,b,c;
        for(c=1;c>0;c--)
           for(b=38;b>0;b--)
        for(a=130;a>0;a--);
}
void main()
{
        LED_init();

        while(1)
        {
                if(D0==1)
                {
                delay10ms();
                        if(D0==1)
                        {
                                n++;
    if(n==1)
                {
                enable_xsfr();
        pwm_clock_speed(0);
  set_pwm_period(0x1000);
        set_pwm0_T1_T2_point(0x200,0x700);
        enable_pwm0();
        disable_xsfr();
  enable_pwm();
       
                }                       
                if(n==2)
                {
                disable_pwm0();
         disable_pwm();
   n=0;
                }
                while(!D0);
                        delay10ms();
                        while(!D0);
                }
               
       
        }
               
               
        }
}
写了消抖的程序还是不行,能帮我看下主函数有问题没有谢谢
回复

使用道具 举报

5#
areyouok 发表于 2019-2-12 22:55 | 只看该作者
消抖程序写了还是不行,
回复

使用道具 举报

6#
yfpc2006 发表于 2019-2-13 00:44 | 只看该作者
个人建议您将4+1个接收输出通过限流电阻接一个发光二极管到GND,然后看一下遥控接收的状态是不是正确?如果这一部分没有问题的话,再去看单片机软件和硬件及连接。缩小问题范围。

另外看一下单片机输入端口是不是需要上拉电阻或下拉电阻。

评分

参与人数 1黑币 +35 收起 理由
areyouok + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51hei电子论坛2群 联系QQ:125739409;技术交流QQ群219535678

Powered by 单片机教程网

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