找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助] 8051 发射RC5遥控器源码!

[复制链接]
跳转到指定楼层
楼主
ID:44179 发表于 2013-1-30 13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

楼主,[求助] 8051 发射RC5遥控器源码!是否可以共享一个?

 

我自己写了下面这一段,没有办法实现呀!

 

void YKInit()                  //遥控接收初始化
{
    YKDatas[0] = YKDatas[1] = YKDatas[2] = 0;
    YKcount = 0;
    YKtype = 0;
    YKend = 0;
}

void time0() interrupt 1
{
    //第一次进入中断前, 定时1/4位的时间:445us, 以后则定时一位时间1.778ms
    //即在3/4位时间时, 判断该位是1还是0
    //实际测试中, 位时间只在1.651ms(+- 1ms), 定时1/4位的时间:413us
    bit in = ~YKIn; //一体化解码后, 有载频部分变为低电平, 即低电平实际为1, 高电平实际为0
    //设置定时器初值
    //模式1: TH0 = (2^16 - (1651/1.085)) / 2^8 = (65536 - 1651/1.085) / 256 =  250;
    //TL0 = (65536 - 1651/1.085) % 256 = 14
    TH0 = 250;
     TL0 = 14;
   
    YKDatas[YKtype] = YKDatas[YKtype] | in; //将数据放入最低位
    YKcount++;
    if(YKcount == 3) //获取完Start bits 和control bit, 共3位
    {
        YKtype = 1;
    }
    else if(YKcount == 8) //获取完system bits, 共5位
    {
        YKtype = 2;
    }
    else if(YKcount == 14) //获取完commond bits, 共6位
    {
        YKtype = 3;
    }
    else if(YKtype == 3) //等待最后1/4位时间结束, 实际延时1位时间
    {
        YKend = 1;
        YKcount = 0;
        YKtype = 0;
        TR0 = 0; //接收结束, 停止定时器0
        return;
    }
    else  //将数据左移一位, 以便将一下位数据并于最低位
    {
        YKDatas[YKtype] = YKDatas[YKtype] << 1;
    }
}

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

使用道具 举报

沙发
ID:47220 发表于 2013-1-30 13:57 | 只看该作者
 函数啊,,,
回复

使用道具 举报

板凳
ID:44179 发表于 2013-2-4 17:06 | 只看该作者

什么函数呀?是否可以共享?

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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