| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1105 人关注过本帖
标题:红外遥控解码求助!!!
只看楼主 加入收藏
f20061201
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-23
结帖率:100%
收藏
 问题点数:0 回复次数:9 
红外遥控解码求助!!!
各位大吓,本人刚学C语言,编写了一个红外接收解码程序,得解码不正常,请那位大吓指点一下!
#include "reg51.h"
#include "intrins.h"
#include <string.h>
sbit  rem=P3^2;
sbit  ACC0=ACC^0;
sbit  ACC7=ACC^7;
sbit  led=P3^6;
sbit  bell=P3^5;
bit   flay_mima=1;
bit   flay_send=1;
bit   temp_k;
unsigned char num,key_num;
unsigned char temp[5];

void Delay101ms(unsigned char t)//50000   
{
    unsigned char i;
    for(i=0;i<t;i++)
    {
    ;
    }
}

Delay8400us(unsigned char t)//86=8.41ms
{
  
    unsigned char i;
    for(i=0;i<t;i++)
    {
        Delay101ms(50000);
    }
}


Delay1000ms(unsigned char t)//10=1ms
{
    unsigned char i;
    for(i=0;i<t;i++)
    {   
        Delay101ms(50000);
    }
}

Delay2400ms(unsigned char t)//25=2.45ms
{
    unsigned char i;
    for(i=0;i<t;i++)
    {   
        Delay101ms(50000);
    }
}

void inint()
{
   IT0=1;
   EX0=1;
   EA=1;

}
void bell_b()
{
    bell=0;
    Delay8400us(86);
//    Delay8400us(86);
//    Delay8400us(86);
    Delay8400us(86);
    Delay8400us(86);
    bell=1;

}
/*
void Delay()
{
    Delay8400us(86);
    Delay8400us(86);
    Delay8400us(86);
    Delay8400us(86);
    Delay8400us(86);
}
*/
unsigned char read_byte()
{
        unsigned char t;
        do{}
        while(rem==0);
        Delay8400us(9);//840us   
    for(t=0;t<8;t++)
    {      
        if(rem==0)
        {
            ACC=ACC>>1;   
            ACC7=rem;
        }
        if(rem==1)
        {         
            ACC=ACC>>1;   
            ACC7=rem;
            Delay1000ms(10);
        }
        do{}
        while(rem==0);
        Delay8400us(9);//840us        
    }
        return (ACC);
}

void exit()
{
    rem=1;
    EA=1;
}

void int0()  interrupt 0 using 2
{
    EA=0;
    Delay8400us(86);
    if(rem==1)
    {
       //    bell_b();
        exit(); //接收错误
    }
    if(rem==0)
    {
            do{}
        while(rem==0);//等待高电平避开9毫秒低电平
    //    {
            Delay2400ms(25);
            if(rem==0)
            {
                bell_b();   // 连续码
                exit();
            }
            if(rem==1)
            {   
                    unsigned char i;
                Delay2400ms(25);            
                                for(i=0;i<4;i++)
                {
                    temp[i]=read_byte();
                }
                temp[2]=!temp[2];
                if(temp[2]==temp[3])
                        {
                    key_num=temp[2];
                    num++;
                //    bell_b();
                    EA=1;                        
                    exit();
                }
                else
                {
                    key_num=0xff;
                //    bell_b();            
                    exit();
                }   
            }
    //    }
    }
}


void main()
{
    SP=0x6f;  
        inint();
    rem=1;
    bell_b();
    num=0;
    flay_mima=1;
   
    while(1)
    {     


        if(flay_send==0)
        {
            
            flay_send=1;
        }
        if(flay_send==1)
        {
        
        }
        if(flay_mima==0)//密码设置
        {
        
        }
        else
        {
            if(num==0x12)//计数
            {
            
            }
            if(key_num==0x01)//确认键
            {
            
            }
            if(key_num==0x02)//清除键
            {

            }
        }
    }
}
搜索更多相关主题的帖子: 红外 解码 遥控 
2010-01-27 22:57
f20061201
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-23
收藏
得分:0 
怎么没有回啊,
那位高手帮看一下啦
2010-01-28 20:53
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:0 
刚学C(几天啊???)能编成这样很不错了啊。。。

www.
2010-01-29 00:54
f20061201
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-23
收藏
得分:0 
多谢楼上的朋友回复,但是不我接收到的数据总是0x00,不知是什么原故?我实在找不到问题所在?
 
2010-01-29 15:20
xinjinlong
Rank: 3Rank: 3
来 自:河南南阳
等 级:论坛游侠
帖 子:61
专家分:117
注 册:2010-1-19
收藏
得分:0 
你是不是高硬件的?我原来搞过,硬件问题大多不在软件上,你在看看
2010-01-29 16:46
f20061201
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-23
收藏
得分:0 
硬件没有问题,我用汇编与的程序可以正常解到数据,这个C语言就是那个程序的思路写的,但就是接收不到正确的数据,不知何故?
2010-01-29 19:15
human84
Rank: 3Rank: 3
来 自:哈尔滨 / 重庆
等 级:论坛游侠
帖 子:154
专家分:141
注 册:2009-11-1
收藏
得分:0 
太高深....
2010-01-30 12:53
梁子
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:83
专家分:191
注 册:2009-9-20
收藏
得分:0 
楼主用kiel把这个段程序反汇编一下,看看和自己的汇编程序有什么差别。
2010-01-30 13:35
heishu100
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2010-1-28
收藏
得分:0 
楼主也会说笑了。这是刚学C就能写出来的吗?老实交代应该也有一年半载的吧!不过很是佩服楼主哦!可以加一下你吗?拜个师学个艺!
2010-01-30 17:08
f20061201
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-23
收藏
得分:0 
楼上的朋友,你太过奖了,我都不怎么会,现在这个问题还没有解决啦,大家交个朋友还是可以的。
上面朋友的介意不错,我试一下反汇编的情况,多谢!
2010-01-30 18:30
快速回复:红外遥控解码求助!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019622 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved