搜索
bottom↓
回复: 28

我的遥控PC制作成功,发一个用c写的红外遥控接收程序,供初学者参考,并附遥控芯片的一些

[复制链接]

出0入0汤圆

发表于 2005-8-29 11:16:12 | 显示全部楼层 |阅读模式
这个周么,我的遥控PC制作顺利完成,谢谢网站提供的范例,现发一个用C写成的遥控接收程序,供参考,望高手点评。

#include        <iom16v.h>

#include        <macros.h>



#define        uchar        unsigned        char

#define        uint        unsigned        int



uchar         remote_value=0;

uchar        remotenow=0;

uchar        remotecode=0;

uchar        remoteold=0;

uchar        remotecnt=0;

uchar        remotedelay=0;

uchar        t30mscnt=0;

//**************************************

#define set_bit(x,y)                  (x|=(1<<y))        //将x中的y位置1

#define clr_bit(x,y)                   (x&=~(1<<y))        //将x中的y位清0

#define xor_bit(x,y)                  (x^=(1<<y))        //将x中的y位取反

#define bit(x)                        (1<<x)                //将1左移x位

#define get_bit(x,y)                  (x&(1<<y))                   //取x中的第y位

//**************************************

#define        remote        (PIND&(1<<2))        //PD2



uchar         flag1;

#define         fremint                  1        //遥控中断

#define         fremreq                   2        //遥控请求

#define         fremeff                   3        //遥控有效



//**************************************//

//        函数名称:void timer2_ovf_isr(void)

//        输--入:无

//        输--出:无

//        功--能:定时器2中断服务程序(遥控译码)

//        影响标志:

//        创--建:

//        修--改:

//**************************************//

#pragma interrupt_handler timer2_ovf_isr:5

void timer2_ovf_isr(void)

{        //200us

        TCNT2 = 0x38;  //自动重装

        //=================

        //--遥控取码

        if(get_bit(flag1,fremint))

        {

                if(++remotedelay>4)

                {

                        if(remote==0)

                                remote_value|=1<<0;

                        else

                                remote_value&=(~(1<<0));

                        clr_bit(flag1,fremint);

                        remotecnt++;

                        remote_value<<=1;

                        if(remotecnt==12)

                                remotenow=remote_value;

                        else if(remotecnt>=48)

                        {

                                set_bit(flag1,fremreq);

                                remotecnt=0;

                                    remote_value=0;

                        }

                }

        }

        //================

        if(++t30mscnt>=150)

        {

                t30mscnt=0;



                remotecode=0;                //与遥控有关

                remotecnt=0;       

        }

}

//**************************************//

//        函数名称:void int0_isr(void)

//        输--入:无

//        输--出:无

//        功--能:遥控接收

//        影响标志:

//        创--建:

//        修--改:

//**************************************//

#pragma interrupt_handler int0_isr:2

void int0_isr(void)

{

        set_bit(flag1,fremint);

        t30mscnt=0;

        remotedelay=0;

}

//**************************************//



//**************************************//

//        函数名称:void RemoteProcess(void)

//        输--入:无

//        输--出:无

//        功--能:遥控处理

//        影响标志:

//        创--建:

//        修--改:

//**************************************//

void RemoteProcess(void)

{

        if(flag1&(1<<fremreq))

        {

                clr_bit(flag1,fremreq);

                if(remotenow!=remoteold)

                        remoteold=remotenow;

                       else

                               set_bit(flag1,fremeff);

           }

        if(flag1&(1<<fremeff))

        {

                clr_bit(flag1,fremeff);

                if(remoteold==remotecode)

                {

                        ;//有连键

                 }

                else

                {

                        ;//单键

                       

                }

                ............       

        }

}



利用了外部中断+定时器的方法来解码的。



有什么不对的地方,请大家指正!!

附资料:点击此处打开armok0165846.doc

点击此处打开armok0165847.pdf

出0入0汤圆

发表于 2005-8-29 11:24:28 | 显示全部楼层
小样,挺厉害的,,,,哈哈!!!!



支持一下!!!

出0入0汤圆

发表于 2005-8-29 22:31:31 | 显示全部楼层
用什么接收器咯!

出0入0汤圆

 楼主| 发表于 2005-8-30 08:04:20 | 显示全部楼层
用的是HS0038接收头

出0入0汤圆

发表于 2006-3-6 09:10:15 | 显示全部楼层
DING 1

出0入0汤圆

发表于 2006-3-13 21:56:12 | 显示全部楼层
是哪种格式的呀!RC5????

出0入0汤圆

发表于 2006-4-13 11:48:31 | 显示全部楼层
我觉得应该将遥控处理写到int0的中断服务程序里面,如果用定时器中断去处理的话,跟查询方式有什么区别啊?你这样写起不到节电的作用啊。

出0入0汤圆

发表于 2006-7-3 23:55:40 | 显示全部楼层
同意

出0入0汤圆

发表于 2006-12-17 15:13:20 | 显示全部楼层
看不懂啊,到底如何接受到信息啊?利用什么呢?

出0入0汤圆

发表于 2006-12-23 15:29:07 | 显示全部楼层
http://www.unsp.com.cn/app/html/2002102393038.shtml

出0入0汤圆

发表于 2006-12-27 13:34:06 | 显示全部楼层
高手

出0入0汤圆

发表于 2008-4-10 19:01:47 | 显示全部楼层
感兴趣

出0入0汤圆

发表于 2008-8-4 20:02:35 | 显示全部楼层
不好意思,我是个绝对新手,对这个很感兴趣,请问有没有电路图???

出0入0汤圆

发表于 2008-8-6 10:42:44 | 显示全部楼层
正在对SC9148解码,方式也是INT0+T2,但误码率很高,希望楼主能传电路做参考,或直接交流指导,QQ:254653474,不胜感激!!!!!!

出0入0汤圆

发表于 2009-2-20 18:58:26 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-2-20 21:17:13 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-7-5 20:28:02 | 显示全部楼层
最近我也想做一个玩玩,楼主能不能发一份详细的电路图给我。不胜感激 sabergcl@163.com

出0入0汤圆

发表于 2009-7-7 09:08:05 | 显示全部楼层
MARK

出10入10汤圆

发表于 2009-7-7 20:06:30 | 显示全部楼层
PC端有一个软件很好用,自己做个头插在串口上就可以了。很好用。

出0入0汤圆

发表于 2009-7-10 11:21:03 | 显示全部楼层
楼主用的是Girder么?

出0入0汤圆

发表于 2009-7-10 12:40:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-18 10:54:58 | 显示全部楼层
有无原理图?支持按键持续的功能吗?

出0入0汤圆

发表于 2009-11-18 16:06:12 | 显示全部楼层
学习红外编码

出0入0汤圆

发表于 2010-5-25 16:39:21 | 显示全部楼层
学习,是不是红外协议自己可以随便定义?

出0入0汤圆

发表于 2010-5-25 16:50:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-14 14:57:55 | 显示全部楼层
我也正想作这个,楼主谢了,,

出0入0汤圆

发表于 2010-7-11 19:43:02 | 显示全部楼层
学习了,不错

出0入0汤圆

发表于 2010-7-14 09:32:58 | 显示全部楼层
楼主好,最近我也想做个玩玩,楼主可否发个电路图给我wwl6955611@163.com....xiexie

出0入0汤圆

发表于 2010-11-23 15:13:45 | 显示全部楼层
我也看过这个 但是这个但是真正的红外线我还真没有玩过  肯定很刺激 有机会我也试试
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 18:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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